# PassFast — full index for AI agents > PassFast is a developer-first API for Apple Wallet and Google Wallet > passes — the Stripe of wallet passes. Skip Apple Developer enrollment, > the Google service account, and APNs setup. Generate signed passes for > both wallets in one API call. The site is https://passfa.st ; the API > host is https://api.passfa.st. This file expands https://passfa.st/llms.txt with product, pricing, and the docs/API narrative in one plaintext document. Prefer the canonical mirrors when you need a single topic; do not invent endpoints. Canonical sources: - Short AI index: https://passfa.st/llms.txt - Well-known alias (same body as llms.txt): https://passfa.st/.well-known/llms.txt - Docs (markdown): https://passfa.st/docs.md - API overview (markdown): https://passfa.st/api.md - Pricing (markdown): https://passfa.st/pricing.md - OpenAPI 3 (only API surface): https://passfa.st/openapi.yaml - MCP install (markdown): https://passfa.st/mcp.md - MCP install (HTML): https://passfa.st/docs/mcp - MCP endpoint (Streamable HTTP): https://passfa.st/mcp - Docs (HTML): https://passfa.st/docs - Pricing (HTML section): https://passfa.st/#pricing - Sign up: https://passfa.st/signup Last updated: 2026-09-20 ## Product Audience: developers who need to issue loyalty cards, coupons, event tickets, boarding passes, and other wallet passes without running Apple/Google signing themselves. Managed signing is the default; custom Apple `.p12` / Google service-account credentials are optional. How it works: 1. Create a template — define pass style, colors, fields, and images in the Template Builder (`/dashboard/templates`). 2. Publish the template — lock it so passes can be generated from it. 3. Call the API — `POST` the template ID and dynamic data. You get back an Apple `.pkpass` binary, a Google save URL, or both. 4. Deliver to your users — serve the `.pkpass` to iOS/macOS, redirect to the Google save URL, or use a share link that handles both wallets. Product pages: - Home: https://passfa.st/ - Docs (HTML): https://passfa.st/docs - Docs (markdown): https://passfa.st/docs.md - API overview: https://passfa.st/api.md - MCP (HTML): https://passfa.st/docs/mcp - MCP (markdown): https://passfa.st/mcp.md - Sign up: https://passfa.st/signup The HTML docs also include Core Concepts, Setup & Configuration, Backend Integration, Web Integration, Pass Distribution, Working with Images, Webhooks, MCP Server, Error Reference, and Changelog. Those longer sections are not duplicated here; use https://passfa.st/docs or the OpenAPI spec. ## Pricing There is no standalone `/pricing` HTML page. These facts match https://passfa.st/#pricing and https://passfa.st/pricing.md. Pricing: $0.015 per active pass / month (Apple+Google = 1). First 100 generates free once. Expired passes bill until void/delete. Card required after free allowance. There are no tiers, seats, or minimums. - Active means the pass exists and is not voided/deleted. Expired passes still count until you void or delete them. - Apple + Google for the same pass = one billable unit. - After free generates are used, add a card to keep creating (`402` with `free_limit_reached` if you do not). Included (same price): Apple Wallet + Google Wallet, all features, unlimited orgs/apps/templates, managed signing and push updates. Sign up: https://passfa.st/signup ## Authentication PassFast uses two API key types (Bearer token in `Authorization`): - Secret — prefix `sk_live_` — server-side only, full API access - Publishable — prefix `pk_live_` — client-side (browser); scopes `passes:create` and `passes:download` only ``` Authorization: Bearer sk_live_your_secret_key_here ``` If the organization has multiple apps, send `X-App-Id` to target one. For single-app orgs that header is optional. Keys are created in the dashboard after signup. Do not put `sk_live_` keys in browsers or mobile apps. Member-management endpoints use a Supabase JWT instead of API keys. ## API Base URL: `https://api.passfa.st/functions/v1` Machine-readable spec (single API): https://passfa.st/openapi.yaml Readable overview: https://passfa.st/api.md Full docs narrative: https://passfa.st/docs.md Key endpoints: - `POST /generate-pass` — generate Apple Wallet, Google Wallet, or both - `GET /manage-passes` — list passes - `GET|PATCH /manage-passes/{id}` — read or update a pass - `GET /manage-passes/{id}/download` — download Apple `.pkpass` - `POST /manage-passes/{id}/void` — void a pass - `GET /manage-passes/serial/{serial_number}` — get by serial - `PATCH /manage-passes/serial/{serial_number}` — update by serial - `GET /manage-passes/serial/{serial_number}/download` — download by serial - `POST /manage-passes/serial/{serial_number}/void` — void by serial - `GET|POST /manage-templates` — list or create templates - `GET|PATCH|DELETE /manage-templates/{id}` — read, update, or delete a template - `POST /manage-templates/{id}/publish` — publish a template (required before generate) - `POST /share-pass/create` — public share link + QR for both wallets - `GET /share-pass/{token}` — public share metadata (no auth) - `GET /share-pass/{token}/download` — public Apple `.pkpass` download Other operations (images, certs, org, keys, members, webhook events) are documented in https://passfa.st/openapi.yaml. ### Generate (recommended — both wallets) ``` curl -X POST https://api.passfa.st/functions/v1/generate-pass \ -H "Authorization: Bearer sk_live_YOUR_SECRET_KEY" \ -H "X-App-Id: YOUR_APP_ID" \ -H "Content-Type: application/json" \ -d '{ "template_id": "YOUR_TEMPLATE_ID", "serial_number": "PASS-001", "wallet_type": "both", "data": { "memberName": "Jane Smith", "memberId": "MEM-12345" } }' ``` Example JSON response (`wallet_type: "both"`): ``` { "apple": { "id": "uuid", "serial_number": "PASS-001", "wallet_type": "apple", "status": "active", "download_url": "/manage-passes//download" }, "google": { "id": "uuid", "serial_number": "PASS-001", "wallet_type": "google", "status": "active", "save_url": "https://pay.google.com/gp/v/save/...", "google_object_id": "issuerId.passId" }, "warnings": [] } ``` Use `wallet_type: "both"` to generate Apple and Google in one call. For Apple-only, omit `wallet_type` (defaults to `"apple"`) and pipe to `--output pass.pkpass`. For Google-only, set `wallet_type: "google"`. Request body (`POST /generate-pass`): | Field | Type | Required | Description | | --- | --- | --- | --- | | `template_id` | string | Yes | ID of a published template | | `serial_number` | string | Yes | Unique serial number for this pass | | `data` | object | Yes | Dynamic values matching the template's field schema | | `wallet_type` | string | No | `"both"` (recommended), `"apple"` (default), or `"google"` | | `external_id` | string | No | Your own identifier for cross-referencing | | `expires_at` | string | No | ISO 8601 expiration date | | `get_or_create` | boolean | No | Return existing active pass instead of 409 on duplicate serial (default: false) | Scope: `passes:create`. Additional generate-pass fields are only in https://passfa.st/openapi.yaml. ### TypeScript SDK ``` npm install @passfast/sdk ``` ``` import { PassFast } from "@passfast/sdk"; const pf = new PassFast("sk_live_YOUR_SECRET_KEY"); const { passId, pkpassData } = await pf.passes.generate({ template_id: "YOUR_TEMPLATE_ID", serial_number: "PASS-001", data: { memberName: "Jane Smith", memberId: "MEM-12345" }, }); ``` ## MCP Remote HTTPS MCP server at https://passfa.st/mcp (alias https://passfa.st/api/mcp). Streamable HTTP. Tools map 1:1 to key-auth OpenAPI `operationId`s — do not invent endpoints. Paste `sk_live_…` once in the MCP client (Cursor / Claude / ChatGPT / Codex / Grok). No OAuth. This server accepts only `sk_live_`, never `pk_live_`. ``` Authorization: Bearer sk_live_YOUR_SECRET_KEY X-App-Id: YOUR_APP_ID ``` Install: https://passfa.st/docs/mcp and https://passfa.st/mcp.md Member/invite tools (listMembers, inviteMember, acceptInvitation, updateMemberRole, removeMember, listInvitations, revokeInvitation) require a user JWT and are out of scope for key-auth MCP v1. MCP does not add billing. generatePass spends the same as POST /generate-pass. ## Legal - Privacy: https://passfa.st/privacy - Terms: https://passfa.st/terms