Cards
Issue scoped Visa cards via our issuing partner. Live mode requires a registered cardholder first.
POST /api/cards
Bearer apk_ · write:cards · Idempotent · Live: KYB approved
{
"holderKind": "agent", // "agent" | "human"
"holderLabel": "claude-runtime-prod",
"cardholderId": "ch_…", // optional; required in live mode
"monthlyLimitUsdCents": 500000,
"perTxnLimitUsdCents": 50000,
"allowedMccs": ["5734", "7372"], // null = all
"allowedMerchants": ["openai", "anthropic"]
}Returns the card row including reapCardToken + last4.
GET /api/cards
Bearer apk_
Lists cards in the workspace, most-recent first.
GET /api/cards/[id]
Bearer apk_
Single card with full state + recent auth logs.
PATCH /api/cards/[id]
Bearer apk_ · write:cards
Update state, limits, scopes:
{
"state": "frozen", // or "active", "terminated"
"monthlyLimitUsdCents": 100000,
"allowedMccs": ["5734"]
}Cardholders
POST /api/cardholders
Bearer apk_ · write:cards · Idempotent
{
"displayName": "Jane Doe",
"kind": "control_person", // "control_person" | "agent" | "employee"
"email": "jane@acme.com",
"dateOfBirth": "1985-04-12",
"ssnLast4": "1234",
"countryCode": "US"
}GET /api/cardholders
Bearer apk_
Physical cards
POST /api/physical-cards
Bearer apk_ · write:cards · Idempotent · Live: KYB approved
{
"holderLabel": "Jane Doe",
"finish": "metal", // "standard" | "metal"
"unlockMethod": "premium_99", // "premium_99" | "balance_commit_5000"
"monthlyLimitUsdCents": 500000,
"perTxnLimitUsdCents": 50000,
"shipping": {
"line1": "1 Hacker Way",
"city": "Menlo Park",
"region": "CA",
"postalCode": "94025",
"country": "US"
}
}Ships in 5-7 business days (Idemia or Thales manufactured).