{ "opencollection": "1.0.0", "info": { "name": "Grid Agent Management Cards API", "version": "2025-10-13" }, "request": { "auth": { "type": "basic", "username": "{{username}}", "password": "{{password}}" } }, "items": [ { "info": { "name": "Cards", "type": "folder" }, "items": [ { "info": { "name": "List cards", "type": "http" }, "http": { "method": "GET", "url": "https://api.lightspark.com/grid/2025-10-13/cards", "params": [ { "name": "cardholderId", "value": "", "type": "query", "description": "Filter by cardholder (customer) id." }, { "name": "accountId", "value": "", "type": "query", "description": "Filter by internal account id. Returns cards whose `fundingSources` array contains the given internal account id." }, { "name": "platformCardId", "value": "", "type": "query", "description": "Filter by platform-specific card identifier." }, { "name": "state", "value": "", "type": "query", "description": "Filter by card state." }, { "name": "limit", "value": "", "type": "query", "description": "Maximum number of results to return (default 20, max 100)" }, { "name": "cursor", "value": "", "type": "query", "description": "Cursor for pagination (returned from previous request)" }, { "name": "sortOrder", "value": "", "type": "query", "description": "Order to sort results in" } ], "auth": { "type": "basic", "username": "{{username}}", "password": "{{password}}" } }, "docs": "Retrieve a paginated list of cards. Cards can be filtered by cardholder, bound funding-source internal account, state, and platform-specific card identifier. If no filters are provided, returns all cards visible to the caller.\n" }, { "info": { "name": "Issue a card", "type": "http" }, "http": { "method": "POST", "url": "https://api.lightspark.com/grid/2025-10-13/cards", "body": { "type": "json", "data": "{}" }, "auth": { "type": "basic", "username": "{{username}}", "password": "{{password}}" } }, "docs": "Issue a new card for a cardholder. Every card must be bound to at least one funding source at create time. The cardholder must have KYC status `APPROVED` before a card can be issued; otherwise the request is rejected with `CARDHOLDER_KYC_NOT_APPROVED`.\n\nIf any funding source is an Embedded Wallet internal account, the cardholder must authorize Grid to sign Spark token transactions for that card funding source by completing the delegated-key creation flow with `POST /auth/delegated-keys`. Until a" }, { "info": { "name": "Get a card", "type": "http" }, "http": { "method": "GET", "url": "https://api.lightspark.com/grid/2025-10-13/cards/:id", "params": [ { "name": "id", "value": "", "type": "path", "description": "System-generated unique card identifier" } ], "auth": { "type": "basic", "username": "{{username}}", "password": "{{password}}" } }, "docs": "Retrieve a card by its system-generated id. To display the card's full PAN, CVV, and expiry to the cardholder, request a reveal with `POST /cards/{id}/reveal` — the card resource itself never carries the reveal URL." }, { "info": { "name": "Update a card", "type": "http" }, "http": { "method": "PATCH", "url": "https://api.lightspark.com/grid/2025-10-13/cards/:id", "headers": [ { "name": "Grid-Wallet-Signature", "value": "MEUCIQDx7k2N0aK4p8f3vR9J6yT5wL1mB0sXnG2hQ4vJ8zYkCgIgZ4rP9dT7eWfU3oM6KjR1qSpNvBwL0tXyA2iG8fH5dE=" }, { "name": "Request-Id", "value": "7c4a8d09-ca37-4e3e-9e0d-8c2b3e9a1f21" } ], "params": [ { "name": "id", "value": "", "type": "path", "description": "System-generated unique card identifier" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "basic", "username": "{{username}}", "password": "{{password}}" } }, "docs": "Update a card's `state` and / or its bound `fundingSources`. At least one of the two fields must be supplied.\n\n- `state` transitions are limited to `ACTIVE ⇄ FROZEN` and `ACTIVE | FROZEN → CLOSED`. `CLOSED` is terminal and irreversible. Any other transition returns `409 INVALID_STATE_TRANSITION`.\n- `fundingSources`, when supplied, fully replaces the card's bound funding sources. Array order determines the priority Authorization Decisioning tries them in. Each id must belong to the cardholder and" }, { "info": { "name": "Reveal card details", "type": "http" }, "http": { "method": "POST", "url": "https://api.lightspark.com/grid/2025-10-13/cards/:id/reveal", "params": [ { "name": "id", "value": "", "type": "path", "description": "System-generated unique card identifier" } ], "auth": { "type": "basic", "username": "{{username}}", "password": "{{password}}" } }, "docs": "Mint a signed, short-lived URL for the card processor's iframe that displays the card's full PAN, CVV, and expiry to the cardholder. This is the only way to obtain a reveal URL — the `Card` resource never carries one.\n\nRequest the reveal right before rendering the iframe and render the returned `panEmbedUrl` immediately; it expires at `expiresAt` (within minutes). Never store, cache, or log the URL — it is a bearer secret for the full card details. The card data renders inside the processor's if" } ] } ], "bundled": true }