{"openapi":"3.0.3","info":{"title":"Spritz Finance API","description":"API for the Spritz Finance platform with RFC 9457 error handling","version":"1.0.0"},"tags":[{"name":"Users","description":"User management endpoints"},{"name":"Bank Accounts","description":"Manage bank accounts for off-ramp destinations"},{"name":"Bills","description":"Manage bill pay accounts"},{"name":"Cards","description":"Spritz-issued debit cards"},{"name":"Auto-Ramp Accounts","description":"Virtual bank accounts that automatically convert fiat deposits to crypto"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Cognito JWT token for regular user authentication"},"integratorJwt":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Integrator JWT token (prefix: spr_) for frontend integrator authentication. Obtained via token exchange endpoint."},"hmacAuth":{"type":"apiKey","in":"header","name":"X-Signature","description":"HMAC signature authentication for backend integrators.\n\n**Required Headers:**\n- X-Integrator-Key: Integrator API key (format: int_...)\n- X-Signature: HMAC signature (format: sha256={hex})\n- X-Timestamp: Unix timestamp in milliseconds\n- Authorization: Bearer {user-api-key}\n\n**Signature Algorithm:** HMAC-SHA256\n\n**Signature Format:** {timestamp}.{METHOD}.{path}.{bodyHash}\n- timestamp: Unix timestamp in milliseconds\n- METHOD: HTTP method in UPPERCASE (GET, POST, etc.)\n- path: Request path (e.g., /v1/transactions)\n- bodyHash: SHA256 hex digest of request body (empty string if no body)\n\n**Timestamp Tolerance:** ±5 minutes (300 seconds)\n\n**Example:**\nFor POST /v1/transactions with body {\"amount\":100} and timestamp 1234567890000:\nPayload: 1234567890000.POST./v1/transactions.{sha256(body)}\nSignature: sha256=abc123..."},"integratorKey":{"type":"apiKey","in":"header","name":"X-Integrator-Key","description":"Integrator API key (format: int_...) used with HMAC authentication"},"legacyIntegratorAuth":{"type":"apiKey","in":"header","name":"X-INTEGRATION-KEY","description":"Legacy integrator authentication for SDK backwards compatibility.\n\n**Required Headers:**\n- X-INTEGRATION-KEY: Integration key\n- Authorization: Bearer {user-api-key}\n\nNo HMAC signing required. Less secure than HMAC auth — use only for legacy SDK migration."},"timestamp":{"type":"apiKey","in":"header","name":"X-Timestamp","description":"Unix timestamp in milliseconds for replay attack prevention. Must be within 5 minutes of server time."}},"schemas":{}},"paths":{"/v1/auto-ramp-accounts/":{"get":{"tags":["Auto-Ramp Accounts"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"List auto-ramp accounts","description":"Returns all auto-ramp accounts for the authenticated user. Each account is a virtual bank account that automatically converts fiat deposits to crypto.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"description":"A virtual bank account that automatically converts fiat deposits to crypto. The account is opened in the user's name - funds deposited are converted to the specified token and sent to the destination wallet address. Important: Always confirm the account status is 'active' before initiating a deposit.","type":"object","properties":{"id":{"description":"Unique identifier for this auto-ramp account","examples":["507f1f77bcf86cd799439011"],"type":"string"},"depositInstructions":{"description":"Deposit instructions for the virtual account. The `type` field indicates the account format: `us` for ACH/wire (routing + account number) or `iban` for SEPA (IBAN + BIC).","anyOf":[{"description":"US bank deposit instructions. Use these details to initiate ACH or wire transfers.","type":"object","properties":{"bankName":{"description":"Name of the bank holding the virtual account","examples":["Lead Bank"],"type":"string"},"bankAddress":{"description":"Physical address of the bank","examples":["1801 Main St, Kansas City, MO 64108"],"type":"string"},"paymentRails":{"description":"Supported payment rails for depositing funds","examples":[["ach","wire"]],"type":"array","items":{"type":"string"}},"type":{"description":"US deposit instructions (ACH/wire)","const":"us","type":"string"},"bankRoutingNumber":{"description":"9-digit ABA routing number","examples":["101019644"],"type":"string"},"bankAccountNumber":{"description":"Bank account number for deposits","examples":["1234567890"],"type":"string"}},"required":["bankName","bankAddress","paymentRails","type","bankRoutingNumber","bankAccountNumber"]},{"description":"IBAN/SEPA deposit instructions. Use these details to initiate SEPA transfers.","type":"object","properties":{"bankName":{"description":"Name of the bank holding the virtual account","examples":["Lead Bank"],"type":"string"},"bankAddress":{"description":"Physical address of the bank","examples":["1801 Main St, Kansas City, MO 64108"],"type":"string"},"paymentRails":{"description":"Supported payment rails for depositing funds","examples":[["ach","wire"]],"type":"array","items":{"type":"string"}},"type":{"description":"IBAN deposit instructions (SEPA)","const":"iban","type":"string"},"iban":{"description":"International Bank Account Number for deposits","examples":["DE89370400440532013000"],"type":"string"},"bic":{"description":"Bank Identifier Code (SWIFT)","examples":["COBADEFFXXX"],"type":"string"}},"required":["bankName","bankAddress","paymentRails","type","iban"]}]},"network":{"description":"Blockchain network where converted crypto will be sent. Lowercase network identifier.","examples":["ethereum","polygon","base"],"type":"string"},"address":{"description":"Destination wallet address. Fiat deposits are converted and sent to this address.","examples":["0x1234567890abcdef1234567890abcdef12345678"],"type":"string"},"token":{"description":"Token that fiat deposits will be converted to","examples":["USDC","USDT"],"type":"string"},"currency":{"description":"Fiat currency accepted for deposits","examples":["USD"],"type":"string"},"status":{"type":"string","enum":["active","inactive"]},"createdAt":{"description":"Timestamp when this auto-ramp account was created (ISO 8601)","format":"date-time","examples":["2025-01-15T10:30:00.000Z"],"type":"string"}},"required":["id","depositInstructions","network","address","token","currency","status","createdAt"]}}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Auto-ramp-accounts"},"post":{"tags":["Auto-Ramp Accounts"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Create an auto-ramp account","description":"Creates a new auto-ramp account for the authenticated user. The account is a virtual bank account that automatically converts fiat deposits to crypto. The address must be valid for the specified network, and the network/token combination must be supported for your region.","requestBody":{"description":"Request body for creating a new auto-ramp account. The address format must be valid for the specified network, and the network/token combination must be supported for your region.","required":true,"content":{"application/json":{"schema":{"description":"Request body for creating a new auto-ramp account. The address format must be valid for the specified network, and the network/token combination must be supported for your region.","type":"object","properties":{"address":{"description":"Destination wallet address for crypto payouts","examples":["0x742d35Cc6634C0532925a3b844Bc9e7595f2a3b8"],"type":"string"},"network":{"type":"string","enum":["ethereum","polygon","base","arbitrum","avalanche","optimism","solana","tron","bitcoin"]},"token":{"description":"Token to receive (must be valid for network)","examples":["USDC"],"type":"string"}},"required":["address","network","token"]}},"application/x-www-form-urlencoded":{"schema":{"description":"Request body for creating a new auto-ramp account. The address format must be valid for the specified network, and the network/token combination must be supported for your region.","type":"object","properties":{"address":{"description":"Destination wallet address for crypto payouts","examples":["0x742d35Cc6634C0532925a3b844Bc9e7595f2a3b8"],"type":"string"},"network":{"type":"string","enum":["ethereum","polygon","base","arbitrum","avalanche","optimism","solana","tron","bitcoin"]},"token":{"description":"Token to receive (must be valid for network)","examples":["USDC"],"type":"string"}},"required":["address","network","token"]}},"multipart/form-data":{"schema":{"description":"Request body for creating a new auto-ramp account. The address format must be valid for the specified network, and the network/token combination must be supported for your region.","type":"object","properties":{"address":{"description":"Destination wallet address for crypto payouts","examples":["0x742d35Cc6634C0532925a3b844Bc9e7595f2a3b8"],"type":"string"},"network":{"type":"string","enum":["ethereum","polygon","base","arbitrum","avalanche","optimism","solana","tron","bitcoin"]},"token":{"description":"Token to receive (must be valid for network)","examples":["USDC"],"type":"string"}},"required":["address","network","token"]}}}},"responses":{"201":{"description":"A virtual bank account that automatically converts fiat deposits to crypto. The account is opened in the user's name - funds deposited are converted to the specified token and sent to the destination wallet address. Important: Always confirm the account status is 'active' before initiating a deposit.","content":{"application/json":{"schema":{"description":"A virtual bank account that automatically converts fiat deposits to crypto. The account is opened in the user's name - funds deposited are converted to the specified token and sent to the destination wallet address. Important: Always confirm the account status is 'active' before initiating a deposit.","type":"object","properties":{"id":{"description":"Unique identifier for this auto-ramp account","examples":["507f1f77bcf86cd799439011"],"type":"string"},"depositInstructions":{"description":"Deposit instructions for the virtual account. The `type` field indicates the account format: `us` for ACH/wire (routing + account number) or `iban` for SEPA (IBAN + BIC).","anyOf":[{"description":"US bank deposit instructions. Use these details to initiate ACH or wire transfers.","type":"object","properties":{"bankName":{"description":"Name of the bank holding the virtual account","examples":["Lead Bank"],"type":"string"},"bankAddress":{"description":"Physical address of the bank","examples":["1801 Main St, Kansas City, MO 64108"],"type":"string"},"paymentRails":{"description":"Supported payment rails for depositing funds","examples":[["ach","wire"]],"type":"array","items":{"type":"string"}},"type":{"description":"US deposit instructions (ACH/wire)","const":"us","type":"string"},"bankRoutingNumber":{"description":"9-digit ABA routing number","examples":["101019644"],"type":"string"},"bankAccountNumber":{"description":"Bank account number for deposits","examples":["1234567890"],"type":"string"}},"required":["bankName","bankAddress","paymentRails","type","bankRoutingNumber","bankAccountNumber"]},{"description":"IBAN/SEPA deposit instructions. Use these details to initiate SEPA transfers.","type":"object","properties":{"bankName":{"description":"Name of the bank holding the virtual account","examples":["Lead Bank"],"type":"string"},"bankAddress":{"description":"Physical address of the bank","examples":["1801 Main St, Kansas City, MO 64108"],"type":"string"},"paymentRails":{"description":"Supported payment rails for depositing funds","examples":[["ach","wire"]],"type":"array","items":{"type":"string"}},"type":{"description":"IBAN deposit instructions (SEPA)","const":"iban","type":"string"},"iban":{"description":"International Bank Account Number for deposits","examples":["DE89370400440532013000"],"type":"string"},"bic":{"description":"Bank Identifier Code (SWIFT)","examples":["COBADEFFXXX"],"type":"string"}},"required":["bankName","bankAddress","paymentRails","type","iban"]}]},"network":{"description":"Blockchain network where converted crypto will be sent. Lowercase network identifier.","examples":["ethereum","polygon","base"],"type":"string"},"address":{"description":"Destination wallet address. Fiat deposits are converted and sent to this address.","examples":["0x1234567890abcdef1234567890abcdef12345678"],"type":"string"},"token":{"description":"Token that fiat deposits will be converted to","examples":["USDC","USDT"],"type":"string"},"currency":{"description":"Fiat currency accepted for deposits","examples":["USD"],"type":"string"},"status":{"type":"string","enum":["active","inactive"]},"createdAt":{"description":"Timestamp when this auto-ramp account was created (ISO 8601)","format":"date-time","examples":["2025-01-15T10:30:00.000Z"],"type":"string"}},"required":["id","depositInstructions","network","address","token","currency","status","createdAt"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1Auto-ramp-accounts"}},"/v1/auto-ramp-accounts/{id}":{"get":{"tags":["Auto-Ramp Accounts"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Get an auto-ramp account","description":"Returns a single auto-ramp account by ID for the authenticated user.","parameters":[{"name":"id","in":"path","required":true,"schema":{"minLength":1,"description":"The auto-ramp account ID","type":"string"}}],"responses":{"200":{"description":"A virtual bank account that automatically converts fiat deposits to crypto. The account is opened in the user's name - funds deposited are converted to the specified token and sent to the destination wallet address. Important: Always confirm the account status is 'active' before initiating a deposit.","content":{"application/json":{"schema":{"description":"A virtual bank account that automatically converts fiat deposits to crypto. The account is opened in the user's name - funds deposited are converted to the specified token and sent to the destination wallet address. Important: Always confirm the account status is 'active' before initiating a deposit.","type":"object","properties":{"id":{"description":"Unique identifier for this auto-ramp account","examples":["507f1f77bcf86cd799439011"],"type":"string"},"depositInstructions":{"description":"Deposit instructions for the virtual account. The `type` field indicates the account format: `us` for ACH/wire (routing + account number) or `iban` for SEPA (IBAN + BIC).","anyOf":[{"description":"US bank deposit instructions. Use these details to initiate ACH or wire transfers.","type":"object","properties":{"bankName":{"description":"Name of the bank holding the virtual account","examples":["Lead Bank"],"type":"string"},"bankAddress":{"description":"Physical address of the bank","examples":["1801 Main St, Kansas City, MO 64108"],"type":"string"},"paymentRails":{"description":"Supported payment rails for depositing funds","examples":[["ach","wire"]],"type":"array","items":{"type":"string"}},"type":{"description":"US deposit instructions (ACH/wire)","const":"us","type":"string"},"bankRoutingNumber":{"description":"9-digit ABA routing number","examples":["101019644"],"type":"string"},"bankAccountNumber":{"description":"Bank account number for deposits","examples":["1234567890"],"type":"string"}},"required":["bankName","bankAddress","paymentRails","type","bankRoutingNumber","bankAccountNumber"]},{"description":"IBAN/SEPA deposit instructions. Use these details to initiate SEPA transfers.","type":"object","properties":{"bankName":{"description":"Name of the bank holding the virtual account","examples":["Lead Bank"],"type":"string"},"bankAddress":{"description":"Physical address of the bank","examples":["1801 Main St, Kansas City, MO 64108"],"type":"string"},"paymentRails":{"description":"Supported payment rails for depositing funds","examples":[["ach","wire"]],"type":"array","items":{"type":"string"}},"type":{"description":"IBAN deposit instructions (SEPA)","const":"iban","type":"string"},"iban":{"description":"International Bank Account Number for deposits","examples":["DE89370400440532013000"],"type":"string"},"bic":{"description":"Bank Identifier Code (SWIFT)","examples":["COBADEFFXXX"],"type":"string"}},"required":["bankName","bankAddress","paymentRails","type","iban"]}]},"network":{"description":"Blockchain network where converted crypto will be sent. Lowercase network identifier.","examples":["ethereum","polygon","base"],"type":"string"},"address":{"description":"Destination wallet address. Fiat deposits are converted and sent to this address.","examples":["0x1234567890abcdef1234567890abcdef12345678"],"type":"string"},"token":{"description":"Token that fiat deposits will be converted to","examples":["USDC","USDT"],"type":"string"},"currency":{"description":"Fiat currency accepted for deposits","examples":["USD"],"type":"string"},"status":{"type":"string","enum":["active","inactive"]},"createdAt":{"description":"Timestamp when this auto-ramp account was created (ISO 8601)","format":"date-time","examples":["2025-01-15T10:30:00.000Z"],"type":"string"}},"required":["id","depositInstructions","network","address","token","currency","status","createdAt"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Auto-ramp-accountsById"}},"/v1/off-ramp-quotes/":{"post":{"tags":["Off-Ramp Quotes"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Create an off-ramp quote","description":"Creates a quote to convert crypto to fiat. Check `fulfillment` to determine the next step:\n\n- `sign_transaction`: Call `POST /off-ramp-quotes/{id}/transaction` for calldata, sign, and submit on-chain.\n- `send_to_address`: Send crypto to `sendTo.address` before `sendTo.expiresAt`.\n\n**Amount modes:** `output` (default) = fiat the account receives. `input` = total crypto the user sends.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"description":"Destination account ID","pattern":"^[0-9a-fA-F]{24}$","examples":["6a0748171891e998a04454d1"],"type":"string"},"amount":{"description":"Amount as a decimal string (interpretation depends on amountMode)","examples":["100.00"],"type":"string"},"amountMode":{"type":"string","enum":["output","input"]},"rail":{"type":"string","enum":["ach_standard","ach_same_day","rtp","wire","eft","sepa","faster_payments","push_to_card","bill_pay","card_deposit"]},"chain":{"type":"string","enum":["ethereum","polygon","arbitrum","base","optimism","avalanche","binance-smart-chain","solana","bitcoin","dash","tron","sui","hyperevm","monad","sonic","unichain"]},"tokenAddress":{"description":"Token contract address. Highly recommended for EVM chains — different tokens have different fee tiers (e.g. USDC is cheapest). If omitted, the chain's native token is assumed. Not needed for Bitcoin.","examples":["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],"type":"string"},"memo":{"description":"Payment note (bank account payments only)","examples":["Invoice #1234"],"type":"string"}},"required":["accountId","amount","chain"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"accountId":{"description":"Destination account ID","pattern":"^[0-9a-fA-F]{24}$","examples":["6a0748171891e998a04454d1"],"type":"string"},"amount":{"description":"Amount as a decimal string (interpretation depends on amountMode)","examples":["100.00"],"type":"string"},"amountMode":{"type":"string","enum":["output","input"]},"rail":{"type":"string","enum":["ach_standard","ach_same_day","rtp","wire","eft","sepa","faster_payments","push_to_card","bill_pay","card_deposit"]},"chain":{"type":"string","enum":["ethereum","polygon","arbitrum","base","optimism","avalanche","binance-smart-chain","solana","bitcoin","dash","tron","sui","hyperevm","monad","sonic","unichain"]},"tokenAddress":{"description":"Token contract address. Highly recommended for EVM chains — different tokens have different fee tiers (e.g. USDC is cheapest). If omitted, the chain's native token is assumed. Not needed for Bitcoin.","examples":["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],"type":"string"},"memo":{"description":"Payment note (bank account payments only)","examples":["Invoice #1234"],"type":"string"}},"required":["accountId","amount","chain"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"accountId":{"description":"Destination account ID","pattern":"^[0-9a-fA-F]{24}$","examples":["6a0748171891e998a04454d1"],"type":"string"},"amount":{"description":"Amount as a decimal string (interpretation depends on amountMode)","examples":["100.00"],"type":"string"},"amountMode":{"type":"string","enum":["output","input"]},"rail":{"type":"string","enum":["ach_standard","ach_same_day","rtp","wire","eft","sepa","faster_payments","push_to_card","bill_pay","card_deposit"]},"chain":{"type":"string","enum":["ethereum","polygon","arbitrum","base","optimism","avalanche","binance-smart-chain","solana","bitcoin","dash","tron","sui","hyperevm","monad","sonic","unichain"]},"tokenAddress":{"description":"Token contract address. Highly recommended for EVM chains — different tokens have different fee tiers (e.g. USDC is cheapest). If omitted, the chain's native token is assumed. Not needed for Bitcoin.","examples":["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],"type":"string"},"memo":{"description":"Payment note (bank account payments only)","examples":["Invoice #1234"],"type":"string"}},"required":["accountId","amount","chain"]}}}},"responses":{"201":{"description":"Response for status 201","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Quote ID","examples":["quote_abc123"],"type":"string"},"fulfillment":{"type":"string","enum":["sign_transaction","send_to_address"]},"status":{"type":"string","enum":["created","transaction_pending","transaction_failed","insufficient_funds","confirmed","completed","expired","failed","refunded"]},"createdAt":{"description":"When the quote was created","format":"date-time","examples":["2026-05-15T16:21:43.817Z"],"type":"string"},"input":{"description":"What the user pays — total USD cost and token used.","type":"object","properties":{"amount":{"description":"Total USD cost including fees (= output.amount + fees.amount)","examples":["101.50"],"type":"string"},"currency":{"description":"Always USD","const":"USD","type":"string"},"tokenAddress":{"description":"Contract address (EVM/Solana/Sui/Tron) or asset symbol (BTC, DASH) for UTXO chains","examples":["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],"type":"string"},"chain":{"type":"string","enum":["ethereum","polygon","arbitrum","base","optimism","avalanche","binance-smart-chain","solana","bitcoin","dash","tron","sui","hyperevm","monad","sonic","unichain"]}},"required":["amount","currency","tokenAddress","chain"]},"output":{"description":"What the destination receives.","type":"object","properties":{"amount":{"description":"Fiat delivered to destination account","examples":["100.00"],"type":"string"},"currency":{"description":"Fiat currency","examples":["USD"],"type":"string"},"rail":{"type":"string","enum":["ach_standard","ach_same_day","rtp","wire","eft","sepa","faster_payments","push_to_card","bill_pay","card_deposit"]},"accountId":{"description":"Destination account ID","examples":["6a0748171891e998a04454d2"],"type":"string"}},"required":["amount","currency","rail","accountId"]},"fees":{"description":"Fees charged for this quote.","type":"object","properties":{"amount":{"description":"Fee in fiat ('0.00' if none)","examples":["1.25"],"type":"string"},"currency":{"description":"Fee currency","examples":["USD"],"type":"string"}},"required":["amount","currency"]},"sendTo":{"nullable":true,"anyOf":[{"description":"Present when `fulfillment` is `send_to_address`. Send exactly `amount` of `token` to `address` before `expiresAt`.","type":"object","properties":{"address":{"description":"Blockchain address to send crypto to","examples":["bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"],"type":"string"},"amount":{"description":"Exact crypto amount to send","examples":["0.00094877"],"type":"string"},"token":{"description":"Token symbol to send","examples":["BTC"],"type":"string"},"expiresAt":{"description":"Deadline to send crypto. Quote expires after this time.","format":"date-time","type":"string"}},"required":["address","amount","token","expiresAt"]},{"type":"null"}]},"confirmation":{"nullable":true,"anyOf":[{"description":"Present after on-chain transaction is detected.","type":"object","properties":{"transactionHash":{"description":"On-chain transaction hash","examples":["0xabc123..."],"type":"string"},"explorerUrl":{"description":"Block explorer URL","examples":["https://etherscan.io/tx/0xabc123..."],"type":"string"}},"required":["transactionHash","explorerUrl"]},{"type":"null"}]}},"required":["id","fulfillment","status","createdAt","input","output","fees","sendTo","confirmation"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1Off-ramp-quotes"}},"/v1/off-ramp-quotes/{quoteId}":{"get":{"tags":["Off-Ramp Quotes"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Get an off-ramp quote","description":"Returns details for a specific off-ramp quote.","parameters":[{"name":"quoteId","in":"path","required":true,"schema":{"description":"The quote ID","examples":["quote_abc123"],"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Quote ID","examples":["quote_abc123"],"type":"string"},"fulfillment":{"type":"string","enum":["sign_transaction","send_to_address"]},"status":{"type":"string","enum":["created","transaction_pending","transaction_failed","insufficient_funds","confirmed","completed","expired","failed","refunded"]},"createdAt":{"description":"When the quote was created","format":"date-time","examples":["2026-05-15T16:21:43.817Z"],"type":"string"},"input":{"description":"What the user pays — total USD cost and token used.","type":"object","properties":{"amount":{"description":"Total USD cost including fees (= output.amount + fees.amount)","examples":["101.50"],"type":"string"},"currency":{"description":"Always USD","const":"USD","type":"string"},"tokenAddress":{"description":"Contract address (EVM/Solana/Sui/Tron) or asset symbol (BTC, DASH) for UTXO chains","examples":["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],"type":"string"},"chain":{"type":"string","enum":["ethereum","polygon","arbitrum","base","optimism","avalanche","binance-smart-chain","solana","bitcoin","dash","tron","sui","hyperevm","monad","sonic","unichain"]}},"required":["amount","currency","tokenAddress","chain"]},"output":{"description":"What the destination receives.","type":"object","properties":{"amount":{"description":"Fiat delivered to destination account","examples":["100.00"],"type":"string"},"currency":{"description":"Fiat currency","examples":["USD"],"type":"string"},"rail":{"type":"string","enum":["ach_standard","ach_same_day","rtp","wire","eft","sepa","faster_payments","push_to_card","bill_pay","card_deposit"]},"accountId":{"description":"Destination account ID","examples":["6a0748171891e998a04454d2"],"type":"string"}},"required":["amount","currency","rail","accountId"]},"fees":{"description":"Fees charged for this quote.","type":"object","properties":{"amount":{"description":"Fee in fiat ('0.00' if none)","examples":["1.25"],"type":"string"},"currency":{"description":"Fee currency","examples":["USD"],"type":"string"}},"required":["amount","currency"]},"sendTo":{"nullable":true,"anyOf":[{"description":"Present when `fulfillment` is `send_to_address`. Send exactly `amount` of `token` to `address` before `expiresAt`.","type":"object","properties":{"address":{"description":"Blockchain address to send crypto to","examples":["bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"],"type":"string"},"amount":{"description":"Exact crypto amount to send","examples":["0.00094877"],"type":"string"},"token":{"description":"Token symbol to send","examples":["BTC"],"type":"string"},"expiresAt":{"description":"Deadline to send crypto. Quote expires after this time.","format":"date-time","type":"string"}},"required":["address","amount","token","expiresAt"]},{"type":"null"}]},"confirmation":{"nullable":true,"anyOf":[{"description":"Present after on-chain transaction is detected.","type":"object","properties":{"transactionHash":{"description":"On-chain transaction hash","examples":["0xabc123..."],"type":"string"},"explorerUrl":{"description":"Block explorer URL","examples":["https://etherscan.io/tx/0xabc123..."],"type":"string"}},"required":["transactionHash","explorerUrl"]},{"type":"null"}]}},"required":["id","fulfillment","status","createdAt","input","output","fees","sendTo","confirmation"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Off-ramp-quotesByQuoteId"}},"/v1/off-ramp-quotes/{quoteId}/transaction":{"post":{"tags":["Off-Ramp Quotes"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Get transaction params for a quote","description":"Returns transaction parameters for a `sign_transaction` quote. Use these to construct, sign, and submit the on-chain transaction.\n\nReturns either EVM calldata or a serialized Solana transaction depending on the quote's chain.","parameters":[{"name":"quoteId","in":"path","required":true,"schema":{"description":"The quote ID","examples":["quote_abc123"],"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"senderAddress":{"description":"Wallet address that will sign the transaction. Required for Solana.","examples":["0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18"],"type":"string"},"feePayer":{"description":"Address that pays transaction fees. Solana only — defaults to senderAddress if omitted.","examples":["5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d"],"type":"string"}}}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"senderAddress":{"description":"Wallet address that will sign the transaction. Required for Solana.","examples":["0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18"],"type":"string"},"feePayer":{"description":"Address that pays transaction fees. Solana only — defaults to senderAddress if omitted.","examples":["5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d"],"type":"string"}}}},"multipart/form-data":{"schema":{"type":"object","properties":{"senderAddress":{"description":"Wallet address that will sign the transaction. Required for Solana.","examples":["0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18"],"type":"string"},"feePayer":{"description":"Address that pays transaction fees. Solana only — defaults to senderAddress if omitted.","examples":["5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d"],"type":"string"}}}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"anyOf":[{"description":"EVM transaction parameters","type":"object","properties":{"type":{"const":"evm","type":"string"},"chain":{"description":"Blockchain network","examples":["ethereum"],"type":"string"},"inputToken":{"description":"Token address the user sends (contract address on EVM, mint address on Solana)","examples":["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],"type":"string"},"outputToken":{"description":"Token address received by the payment contract. Same as inputToken for direct payments, different for swap paths.","examples":["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],"type":"string"},"requiredTokenInput":{"description":"Exact amount of inputToken to send, in smallest unit (e.g. 6 decimals for USDC)","examples":["100000000"],"type":"string"},"contractAddress":{"description":"Smart contract address — use as the `to` field when constructing the transaction","examples":["0xbF7Abc15f00a8C2d6b13A952c58d12b7c194A8D0"],"type":"string"},"calldata":{"description":"ABI-encoded calldata for the contract call","examples":["0xd71d9632..."],"type":"string"},"method":{"description":"Contract method being called","examples":["payWithToken"],"type":"string"},"value":{"nullable":true,"anyOf":[{"description":"Native token value in wei to send with the transaction (null for ERC-20 payments)","examples":["0"],"type":"string"},{"type":"null"}]}},"required":["type","chain","inputToken","outputToken","requiredTokenInput","contractAddress","calldata","method","value"]},{"description":"Solana transaction parameters","type":"object","properties":{"type":{"const":"solana","type":"string"},"chain":{"description":"Blockchain network","examples":["ethereum"],"type":"string"},"inputToken":{"description":"Token address the user sends (contract address on EVM, mint address on Solana)","examples":["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],"type":"string"},"outputToken":{"description":"Token address received by the payment contract. Same as inputToken for direct payments, different for swap paths.","examples":["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],"type":"string"},"requiredTokenInput":{"description":"Exact amount of inputToken to send, in smallest unit (e.g. 6 decimals for USDC)","examples":["100000000"],"type":"string"},"recipientAddress":{"description":"Account address that receives the funds","examples":["5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d"],"type":"string"},"transactionSerialized":{"description":"Base64-encoded VersionedTransaction ready to sign and submit","examples":["base64EncodedTransaction..."],"type":"string"}},"required":["type","chain","inputToken","outputToken","requiredTokenInput","recipientAddress","transactionSerialized"]}]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1Off-ramp-quotesByQuoteIdTransaction"}},"/v1/off-ramps/":{"get":{"tags":["Off-Ramps"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"List off-ramps","description":"Returns a paginated list of off-ramp payments for the authenticated user.\n\n**Filtering:**\n- `status`: Filter by payment status\n- `network`: Filter by payment network\n- `accountId`: Filter by destination account ID\n\n**Sorting:**\n- `sort=desc` (default): Newest first\n- `sort=asc`: Oldest first\n\n**Pagination:**\nUse cursor-based pagination with the `cursor` parameter.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"description":"Maximum number of results to return","default":50,"minimum":1,"maximum":100,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Maximum number of results to return","default":50,"minimum":1,"maximum":100,"type":"number"}]}},{"name":"cursor","in":"query","required":false,"schema":{"description":"Opaque cursor for pagination. Use the `nextCursor` value from the previous response.","type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["awaiting_funding","queued","in_flight","completed","canceled","failed","reversed","refunded"]}},{"name":"chain","in":"query","required":false,"schema":{"type":"string","enum":["ethereum","polygon","arbitrum","base","optimism","avalanche","binance-smart-chain","solana","bitcoin","dash","tron","sui","hyperevm","monad","sonic","unichain"]}},{"name":"accountId","in":"query","required":false,"schema":{"description":"Filter by destination account ID","examples":["6a0748171891e998a04454d4"],"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["desc","asc"]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique off-ramp identifier","examples":["offramp_xyz789"],"type":"string"},"status":{"type":"string","enum":["awaiting_funding","queued","in_flight","completed","canceled","failed","reversed","refunded"]},"createdAt":{"format":"date-time","type":"string"},"completedAt":{"nullable":true,"anyOf":[{"description":"When the off-ramp was completed. Null until status is completed.","format":"date-time","type":"string"},{"type":"null"}]},"input":{"nullable":true,"anyOf":[{"description":"What the user paid — crypto asset and chain.","type":"object","properties":{"amount":{"description":"Crypto amount sent","examples":["0.25"],"type":"string"},"token":{"description":"Token symbol","examples":["USDC"],"type":"string"},"chain":{"description":"Blockchain network the crypto transaction occurs on","examples":["ethereum"],"anyOf":[{"const":"ethereum","type":"string"},{"const":"polygon","type":"string"},{"const":"arbitrum","type":"string"},{"const":"base","type":"string"},{"const":"optimism","type":"string"},{"const":"avalanche","type":"string"},{"const":"binance-smart-chain","type":"string"},{"const":"solana","type":"string"},{"const":"bitcoin","type":"string"},{"const":"dash","type":"string"},{"const":"tron","type":"string"},{"const":"sui","type":"string"},{"const":"hyperevm","type":"string"},{"const":"monad","type":"string"},{"const":"sonic","type":"string"},{"const":"unichain","type":"string"}]}},"required":["amount","token","chain"]},{"type":"null"}]},"output":{"description":"What the destination receives — fiat delivery details.","type":"object","properties":{"amount":{"description":"Fiat amount delivered","examples":["100.00"],"type":"string"},"currency":{"description":"Fiat currency code","examples":["USD","EUR"],"type":"string"},"accountId":{"description":"Destination account ID","examples":["6a0748171891e998a04454d3"],"type":"string"},"accountName":{"nullable":true,"anyOf":[{"description":"Display name of the destination account","examples":["Chase Checking ••4567"],"type":"string"},{"type":"null"}]},"rail":{"nullable":true,"anyOf":[{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]},{"type":"null"}]}},"required":["amount","currency","accountId","accountName","rail"]},"fiatDestination":{"nullable":true,"anyOf":[{"description":"Type of fiat destination.\n\n- `bank_account`: Bank account (includes debit card destinations).\n- `bill`: Bill payment.\n- `crypto_card`: Crypto card deposit.","examples":["bank_account"],"anyOf":[{"const":"bank_account","type":"string"},{"const":"bill","type":"string"},{"const":"crypto_card","type":"string"}]},{"type":"null"}]},"fees":{"nullable":true,"anyOf":[{"type":"object","properties":{"amount":{"description":"Fee amount","examples":["1.25"],"type":"string"},"currency":{"description":"Fee currency code","examples":["USD"],"type":"string"}},"required":["amount","currency"]},{"type":"null"}]},"transaction":{"nullable":true,"anyOf":[{"type":"object","properties":{"hash":{"nullable":true,"anyOf":[{"description":"Blockchain transaction hash","examples":["0xabc123..."],"type":"string"},{"type":"null"}]},"explorerUrl":{"nullable":true,"anyOf":[{"description":"Block explorer transaction URL","examples":["https://etherscan.io/tx/0xabc123..."],"type":"string"},{"type":"null"}]}},"required":["hash","explorerUrl"]},{"type":"null"}]}},"required":["id","status","createdAt","completedAt","input","output","fiatDestination","fees","transaction"]}},"hasMore":{"description":"Whether there are more results","examples":[true],"type":"boolean"},"nextCursor":{"nullable":true,"anyOf":[{"description":"Cursor for fetching the next page","examples":["eyJpZCI6Im9mZnJhbXBfeHl6Nzg5In0="],"type":"string"},{"type":"null"}]}},"required":["data","hasMore","nextCursor"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Off-ramps"}},"/v1/off-ramps/{offRampId}":{"get":{"tags":["Off-Ramps"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Get an off-ramp","description":"Returns details for a specific off-ramp payment.","parameters":[{"name":"offRampId","in":"path","required":true,"schema":{"description":"The off-ramp ID","examples":["6a0748181891e998a04454dd"],"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Unique off-ramp identifier","examples":["offramp_xyz789"],"type":"string"},"status":{"type":"string","enum":["awaiting_funding","queued","in_flight","completed","canceled","failed","reversed","refunded"]},"createdAt":{"format":"date-time","type":"string"},"completedAt":{"nullable":true,"anyOf":[{"description":"When the off-ramp was completed. Null until status is completed.","format":"date-time","type":"string"},{"type":"null"}]},"input":{"nullable":true,"anyOf":[{"description":"What the user paid — crypto asset and chain.","type":"object","properties":{"amount":{"description":"Crypto amount sent","examples":["0.25"],"type":"string"},"token":{"description":"Token symbol","examples":["USDC"],"type":"string"},"chain":{"description":"Blockchain network the crypto transaction occurs on","examples":["ethereum"],"anyOf":[{"const":"ethereum","type":"string"},{"const":"polygon","type":"string"},{"const":"arbitrum","type":"string"},{"const":"base","type":"string"},{"const":"optimism","type":"string"},{"const":"avalanche","type":"string"},{"const":"binance-smart-chain","type":"string"},{"const":"solana","type":"string"},{"const":"bitcoin","type":"string"},{"const":"dash","type":"string"},{"const":"tron","type":"string"},{"const":"sui","type":"string"},{"const":"hyperevm","type":"string"},{"const":"monad","type":"string"},{"const":"sonic","type":"string"},{"const":"unichain","type":"string"}]}},"required":["amount","token","chain"]},{"type":"null"}]},"output":{"description":"What the destination receives — fiat delivery details.","type":"object","properties":{"amount":{"description":"Fiat amount delivered","examples":["100.00"],"type":"string"},"currency":{"description":"Fiat currency code","examples":["USD","EUR"],"type":"string"},"accountId":{"description":"Destination account ID","examples":["6a0748171891e998a04454d3"],"type":"string"},"accountName":{"nullable":true,"anyOf":[{"description":"Display name of the destination account","examples":["Chase Checking ••4567"],"type":"string"},{"type":"null"}]},"rail":{"nullable":true,"anyOf":[{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]},{"type":"null"}]}},"required":["amount","currency","accountId","accountName","rail"]},"fiatDestination":{"nullable":true,"anyOf":[{"description":"Type of fiat destination.\n\n- `bank_account`: Bank account (includes debit card destinations).\n- `bill`: Bill payment.\n- `crypto_card`: Crypto card deposit.","examples":["bank_account"],"anyOf":[{"const":"bank_account","type":"string"},{"const":"bill","type":"string"},{"const":"crypto_card","type":"string"}]},{"type":"null"}]},"fees":{"nullable":true,"anyOf":[{"type":"object","properties":{"amount":{"description":"Fee amount","examples":["1.25"],"type":"string"},"currency":{"description":"Fee currency code","examples":["USD"],"type":"string"}},"required":["amount","currency"]},{"type":"null"}]},"transaction":{"nullable":true,"anyOf":[{"type":"object","properties":{"hash":{"nullable":true,"anyOf":[{"description":"Blockchain transaction hash","examples":["0xabc123..."],"type":"string"},{"type":"null"}]},"explorerUrl":{"nullable":true,"anyOf":[{"description":"Block explorer transaction URL","examples":["https://etherscan.io/tx/0xabc123..."],"type":"string"},{"type":"null"}]}},"required":["hash","explorerUrl"]},{"type":"null"}]}},"required":["id","status","createdAt","completedAt","input","output","fiatDestination","fees","transaction"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Off-rampsByOffRampId"}},"/v1/on-ramps/":{"get":{"tags":["On-Ramps"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"List on-ramps","description":"Returns a paginated list of on-ramps for the authenticated user.\n\nOn-ramps represent fiat-to-crypto conversion transactions where fiat\nwas sent and crypto was or will be received at a destination address.\n\n**Filtering:**\n- `network`: Filter by blockchain network (ethereum, polygon, etc.)\n- `token`: Filter by output token (case-insensitive, e.g., \"usdc\")\n- `address`: Filter by payout address\n\n**Sorting:**\n- `sort=desc` (default): Newest first\n- `sort=asc`: Oldest first\n\n**Pagination:**\nUse cursor-based pagination with the `cursor` parameter.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"description":"Maximum number of results to return","default":50,"minimum":1,"maximum":100,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Maximum number of results to return","default":50,"minimum":1,"maximum":100,"type":"number"}]}},{"name":"cursor","in":"query","required":false,"schema":{"description":"Opaque cursor for pagination. Use the `nextCursor` value from the previous response.","type":"string"}},{"name":"network","in":"query","required":false,"schema":{"type":"string","enum":["ethereum","polygon","base","arbitrum","avalanche","optimism","solana","tron","bitcoin"]}},{"name":"token","in":"query","required":false,"schema":{"maxLength":10,"description":"Filter by output token. Case-insensitive (transformed to uppercase).","examples":["USDC"],"type":"string"}},{"name":"address","in":"query","required":false,"schema":{"maxLength":256,"description":"Filter by payout address","examples":["0x742d35Cc6634C0532925a3b844Bc9e7595f..."],"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["desc","asc"]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique on-ramp identifier","examples":["onramp_xyz789"],"type":"string"},"status":{"type":"string","enum":["awaiting_payment","processing","partially_delivered","completed","cancelled","failed","reversed","refunded","in_review"]},"createdAt":{"format":"date-time","type":"string"},"input":{"type":"object","properties":{"amount":{"description":"Fiat amount sent (after fees)","examples":["5130.43"],"type":"string"},"currency":{"type":"string","enum":["USD","CAD","EUR","GBP"]},"rail":{"type":"string","enum":["ach_credit","wire","sepa_credit_transfer"]}},"required":["amount","currency","rail"]},"fees":{"type":"object","properties":{"amount":{"description":"Fee in source currency","examples":["57.07"],"type":"string"},"currency":{"description":"Currency of the fee paid","examples":["USD, EUR"],"type":"string"}},"required":["amount","currency"]},"output":{"type":"object","properties":{"amount":{"description":"Total crypto amount expected for this on-ramp","examples":["5130.43"],"type":"string"},"token":{"description":"Token to be received","examples":["USDC"],"type":"string"},"network":{"type":"string","enum":["ethereum","polygon","base","arbitrum","avalanche","optimism","solana","tron","bitcoin"]},"address":{"description":"Destination wallet address","examples":["0x742d35Cc..."],"type":"string"},"txHash":{"description":"Legacy convenience transaction hash for single-delivery payouts","examples":["0xabc..."],"type":"string"}},"required":["amount","token","network","address"]},"deliverySummary":{"type":"object","properties":{"deliveredAmount":{"description":"Crypto amount delivered or submitted so far","examples":["40.00"],"type":"string"},"confirmedAmount":{"description":"Crypto amount confirmed on-chain so far","examples":["25.00"],"type":"string"},"remainingAmount":{"description":"Crypto amount still remaining to be delivered","examples":["60.00"],"type":"string"}},"required":["deliveredAmount","confirmedAmount","remainingAmount"]},"deliveries":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique delivery identifier","examples":["release_abc123"],"type":"string"},"status":{"type":"string","enum":["queued","submitted","confirmed","failed"]},"amount":{"description":"Crypto amount for this delivery tranche","examples":["25.00"],"type":"string"},"amountUsd":{"description":"USD equivalent of this delivery tranche","examples":["25.00"],"type":"string"},"txHash":{"description":"Blockchain transaction hash for this delivery tranche","examples":["0xabc..."],"type":"string"},"createdAt":{"format":"date-time","type":"string"},"submittedAt":{"format":"date-time","type":"string"},"confirmedAt":{"format":"date-time","type":"string"},"failedAt":{"format":"date-time","type":"string"}},"required":["id","status","amount","amountUsd","createdAt"]}},"completedAt":{"format":"date-time","type":"string"}},"required":["id","status","createdAt","input","fees"]}},"hasMore":{"description":"Whether there are more results","examples":[true],"type":"boolean"},"nextCursor":{"description":"Cursor for fetching the next page","examples":["eyJpZCI6Im9ucmFtcF94eXo3ODkifQ=="],"type":"string"}},"required":["data","hasMore"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1On-ramps"}},"/v1/on-ramps/supported-pairs":{"get":{"tags":["On-Ramps"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"List supported on-ramp pairs","description":"Returns supported rail/network/token pairs along with the minimum transaction\namount in the source currency.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"rail":{"type":"string","enum":["ach_credit","wire","sepa_credit_transfer"]},"currency":{"type":"string","enum":["USD","CAD","EUR","GBP"]},"network":{"type":"string","enum":["ethereum","polygon","base","arbitrum","avalanche","optimism","solana","tron","bitcoin"]},"token":{"description":"Token symbol","examples":["USDC"],"type":"string"},"minAmount":{"description":"Minimum transaction amount in source currency","examples":["1.00"],"type":"string"}},"required":["rail","currency","network","token","minAmount"]}}},"required":["data"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1On-rampsSupported-pairs"}},"/v1/on-ramps/exchange-rates":{"get":{"tags":["On-Ramps"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Get exchange rates","description":"Returns the current on-ramp exchange rate from fiat to crypto.\n\nRates are updated approximately every 30 seconds. This endpoint provides\nan estimate only — rates are not locked in and may differ at transaction time.\n\n**Fiat (from):** EUR, GBP, USD\n**Crypto (to):** BTC, ETH, USDC, USDT","parameters":[{"name":"from","in":"query","required":true,"schema":{"description":"Fiat currency to convert from (case-insensitive). Supported: EUR, GBP, USD","examples":["USD"],"type":"string"}},{"name":"to","in":"query","required":true,"schema":{"description":"Crypto currency to convert to (case-insensitive). Supported: BTC, ETH, USDC, USDT","examples":["USDT"],"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"rate":{"description":"Current exchange rate from fiat to crypto","examples":["1.0012"],"type":"string"}},"required":["rate"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1On-rampsExchange-rates"}},"/v1/on-ramps/{onRampId}":{"get":{"tags":["On-Ramps"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Get an on-ramp","description":"Returns details for a specific on-ramp transaction.","parameters":[{"name":"onRampId","in":"path","required":true,"schema":{"description":"The on-ramp ID","examples":["onramp_xyz789"],"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Unique on-ramp identifier","examples":["onramp_xyz789"],"type":"string"},"status":{"type":"string","enum":["awaiting_payment","processing","partially_delivered","completed","cancelled","failed","reversed","refunded","in_review"]},"createdAt":{"format":"date-time","type":"string"},"input":{"type":"object","properties":{"amount":{"description":"Fiat amount sent (after fees)","examples":["5130.43"],"type":"string"},"currency":{"type":"string","enum":["USD","CAD","EUR","GBP"]},"rail":{"type":"string","enum":["ach_credit","wire","sepa_credit_transfer"]}},"required":["amount","currency","rail"]},"fees":{"type":"object","properties":{"amount":{"description":"Fee in source currency","examples":["57.07"],"type":"string"},"currency":{"description":"Currency of the fee paid","examples":["USD, EUR"],"type":"string"}},"required":["amount","currency"]},"output":{"type":"object","properties":{"amount":{"description":"Total crypto amount expected for this on-ramp","examples":["5130.43"],"type":"string"},"token":{"description":"Token to be received","examples":["USDC"],"type":"string"},"network":{"type":"string","enum":["ethereum","polygon","base","arbitrum","avalanche","optimism","solana","tron","bitcoin"]},"address":{"description":"Destination wallet address","examples":["0x742d35Cc..."],"type":"string"},"txHash":{"description":"Legacy convenience transaction hash for single-delivery payouts","examples":["0xabc..."],"type":"string"}},"required":["amount","token","network","address"]},"deliverySummary":{"type":"object","properties":{"deliveredAmount":{"description":"Crypto amount delivered or submitted so far","examples":["40.00"],"type":"string"},"confirmedAmount":{"description":"Crypto amount confirmed on-chain so far","examples":["25.00"],"type":"string"},"remainingAmount":{"description":"Crypto amount still remaining to be delivered","examples":["60.00"],"type":"string"}},"required":["deliveredAmount","confirmedAmount","remainingAmount"]},"deliveries":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique delivery identifier","examples":["release_abc123"],"type":"string"},"status":{"type":"string","enum":["queued","submitted","confirmed","failed"]},"amount":{"description":"Crypto amount for this delivery tranche","examples":["25.00"],"type":"string"},"amountUsd":{"description":"USD equivalent of this delivery tranche","examples":["25.00"],"type":"string"},"txHash":{"description":"Blockchain transaction hash for this delivery tranche","examples":["0xabc..."],"type":"string"},"createdAt":{"format":"date-time","type":"string"},"submittedAt":{"format":"date-time","type":"string"},"confirmedAt":{"format":"date-time","type":"string"},"failedAt":{"format":"date-time","type":"string"}},"required":["id","status","amount","amountUsd","createdAt"]}},"completedAt":{"format":"date-time","type":"string"}},"required":["id","status","createdAt","input","fees"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1On-rampsByOnRampId"}},"/v1/bank-accounts/":{"post":{"tags":["Bank Accounts"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Add a bank account","description":"Adds a new bank account as an off-ramp destination. The `type` field determines the required fields.\n\n## Account Types\n\n| Type | Region | Required Fields | Supported Rails |\n|------|--------|-----------------|-----------------|\n| `us` | United States | `routingNumber`, `accountNumber` | ACH, RTP, Wire |\n| `ca` | Canada | `institutionNumber`, `transitNumber`, `accountNumber` | EFT |\n| `uk` | United Kingdom | `sortCode`, `accountNumber` | FPS |\n| `iban` | Europe / SEPA | `iban`, optionally `bic` | SEPA |\n\n## Examples\n\n**US Bank Account:**\n```json\n{\n  \"type\": \"us\",\n  \"ownership\": \"personal\",\n  \"routingNumber\": \"021000021\",\n  \"accountNumber\": \"123456789\",\n  \"accountSubtype\": \"checking\"\n}\n```\n\n**Canadian Bank Account:**\n```json\n{\n  \"type\": \"ca\",\n  \"ownership\": \"thirdParty\",\n  \"accountHolder\": { \"firstName\": \"Jane\", \"lastName\": \"Smith\" },\n  \"institutionNumber\": \"001\",\n  \"transitNumber\": \"12345\",\n  \"accountNumber\": \"1234567\"\n}\n```\n\n**IBAN (SEPA) Bank Account:**\n```json\n{\n  \"type\": \"iban\",\n  \"ownership\": \"personal\",\n  \"iban\": \"DE89370400440532013000\"\n}\n```\n\nThe account will be verified before becoming active.","requestBody":{"description":"Create a bank account. The `type` field determines the required fields.","required":true,"content":{"application/json":{"schema":{"description":"Create a bank account. The `type` field determines the required fields.","anyOf":[{"description":"US bank account (ACH/Wire)","examples":[{"type":"us","ownership":"personal","routingNumber":"021000021","accountNumber":"123456789","accountSubtype":"checking"}],"type":"object","properties":{"type":{"description":"US bank account type","const":"us","type":"string"},"ownership":{"description":"Who owns this bank account. \"personal\" = the authenticated user (holder info inferred from profile). \"thirdParty\" = someone else (requires accountHolder).","examples":["personal"],"anyOf":[{"const":"personal","type":"string"},{"const":"thirdParty","type":"string"}]},"accountHolder":{"description":"Account holder details. Required when ownership is \"thirdParty\".","type":"object","properties":{"firstName":{"description":"Account holder first name","examples":["John"],"type":"string"},"lastName":{"description":"Account holder last name","examples":["Doe"],"type":"string"},"address":{"description":"Account holder mailing address","type":"object","properties":{"street":{"examples":["123 Main St"],"type":"string"},"street2":{"examples":["Apt 4B"],"type":"string"},"city":{"examples":["New York"],"type":"string"},"state":{"examples":["NY"],"type":"string"},"postalCode":{"examples":["10001"],"type":"string"},"country":{"examples":["US"],"type":"string"}},"required":["street","city","state","postalCode"]}},"required":["firstName","lastName"]},"routingNumber":{"description":"9-digit ABA routing number","examples":["021000021"],"pattern":"^[0-9]{9}$","type":"string"},"accountNumber":{"description":"Bank account number","examples":["123456789"],"type":"string"},"accountSubtype":{"description":"Type of bank account (checking or savings)","examples":["checking"],"anyOf":[{"const":"checking","type":"string"},{"const":"savings","type":"string"}]},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"}},"required":["type","ownership","routingNumber","accountNumber"]},{"description":"Canadian bank account (EFT)","examples":[{"type":"ca","ownership":"thirdParty","accountHolder":{"firstName":"Jane","lastName":"Smith"},"institutionNumber":"001","transitNumber":"12345","accountNumber":"1234567","accountSubtype":"checking"}],"type":"object","properties":{"type":{"description":"Canadian bank account type","const":"ca","type":"string"},"ownership":{"description":"Who owns this bank account. \"personal\" = the authenticated user (holder info inferred from profile). \"thirdParty\" = someone else (requires accountHolder).","examples":["personal"],"anyOf":[{"const":"personal","type":"string"},{"const":"thirdParty","type":"string"}]},"accountHolder":{"description":"Account holder details. Required when ownership is \"thirdParty\".","type":"object","properties":{"firstName":{"description":"Account holder first name","examples":["John"],"type":"string"},"lastName":{"description":"Account holder last name","examples":["Doe"],"type":"string"},"address":{"description":"Account holder mailing address","type":"object","properties":{"street":{"examples":["123 Main St"],"type":"string"},"street2":{"examples":["Apt 4B"],"type":"string"},"city":{"examples":["New York"],"type":"string"},"state":{"examples":["NY"],"type":"string"},"postalCode":{"examples":["10001"],"type":"string"},"country":{"examples":["US"],"type":"string"}},"required":["street","city","state","postalCode"]}},"required":["firstName","lastName"]},"institutionNumber":{"description":"3-digit financial institution number","examples":["001"],"pattern":"^[0-9]{3}$","type":"string"},"transitNumber":{"description":"5-digit branch transit number","examples":["12345"],"pattern":"^[0-9]{5}$","type":"string"},"accountNumber":{"description":"Bank account number (7-12 digits)","examples":["1234567"],"type":"string"},"accountSubtype":{"description":"Type of bank account (checking or savings)","examples":["checking"],"anyOf":[{"const":"checking","type":"string"},{"const":"savings","type":"string"}]},"label":{"description":"Friendly name for the account","examples":["TD Chequing"],"type":"string"}},"required":["type","ownership","institutionNumber","transitNumber","accountNumber"]},{"description":"UK bank account (BACS/FPS)","examples":[{"type":"uk","ownership":"personal","sortCode":"108800","accountNumber":"00012345"}],"type":"object","properties":{"type":{"description":"UK bank account type","const":"uk","type":"string"},"ownership":{"description":"Who owns this bank account. \"personal\" = the authenticated user (holder info inferred from profile). \"thirdParty\" = someone else (requires accountHolder).","examples":["personal"],"anyOf":[{"const":"personal","type":"string"},{"const":"thirdParty","type":"string"}]},"accountHolder":{"description":"Account holder details. Required when ownership is \"thirdParty\".","type":"object","properties":{"firstName":{"description":"Account holder first name","examples":["John"],"type":"string"},"lastName":{"description":"Account holder last name","examples":["Doe"],"type":"string"},"address":{"description":"Account holder mailing address","type":"object","properties":{"street":{"examples":["123 Main St"],"type":"string"},"street2":{"examples":["Apt 4B"],"type":"string"},"city":{"examples":["New York"],"type":"string"},"state":{"examples":["NY"],"type":"string"},"postalCode":{"examples":["10001"],"type":"string"},"country":{"examples":["US"],"type":"string"}},"required":["street","city","state","postalCode"]}},"required":["firstName","lastName"]},"sortCode":{"description":"6-digit sort code","examples":["108800"],"pattern":"^[0-9]{6}$","type":"string"},"accountNumber":{"description":"8-digit account number","examples":["00012345"],"pattern":"^[0-9]{8}$","type":"string"},"label":{"description":"Friendly name for the account","examples":["Barclays Current"],"type":"string"}},"required":["type","ownership","sortCode","accountNumber"]},{"description":"IBAN bank account (SEPA)","examples":[{"type":"iban","ownership":"thirdParty","accountHolder":{"firstName":"Hans","lastName":"Müller","address":{"street":"Hauptstraße 1","city":"Berlin","state":"BE","postalCode":"10115","country":"DE"}},"iban":"DE89370400440532013000","bic":"COBADEFFXXX"}],"type":"object","properties":{"type":{"description":"IBAN bank account type (SEPA)","const":"iban","type":"string"},"ownership":{"description":"Who owns this bank account. \"personal\" = the authenticated user (holder info inferred from profile). \"thirdParty\" = someone else (requires accountHolder).","examples":["personal"],"anyOf":[{"const":"personal","type":"string"},{"const":"thirdParty","type":"string"}]},"accountHolder":{"description":"Account holder details. Required when ownership is \"thirdParty\".","type":"object","properties":{"firstName":{"description":"Account holder first name","examples":["John"],"type":"string"},"lastName":{"description":"Account holder last name","examples":["Doe"],"type":"string"},"address":{"description":"Account holder mailing address","type":"object","properties":{"street":{"examples":["123 Main St"],"type":"string"},"street2":{"examples":["Apt 4B"],"type":"string"},"city":{"examples":["New York"],"type":"string"},"state":{"examples":["NY"],"type":"string"},"postalCode":{"examples":["10001"],"type":"string"},"country":{"examples":["US"],"type":"string"}},"required":["street","city","state","postalCode"]}},"required":["firstName","lastName"]},"iban":{"description":"International Bank Account Number","examples":["DE89370400440532013000"],"pattern":"^[A-Z]{2}[0-9]{2}[A-Z0-9]{4,30}$","type":"string"},"bic":{"description":"Bank Identifier Code (SWIFT). Can often be derived from IBAN.","examples":["COBADEFFXXX"],"pattern":"^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$","type":"string"},"label":{"description":"Friendly name for the account","examples":["Commerzbank EUR"],"type":"string"}},"required":["type","ownership","iban"]}]}},"application/x-www-form-urlencoded":{"schema":{"description":"Create a bank account. The `type` field determines the required fields.","anyOf":[{"description":"US bank account (ACH/Wire)","examples":[{"type":"us","ownership":"personal","routingNumber":"021000021","accountNumber":"123456789","accountSubtype":"checking"}],"type":"object","properties":{"type":{"description":"US bank account type","const":"us","type":"string"},"ownership":{"description":"Who owns this bank account. \"personal\" = the authenticated user (holder info inferred from profile). \"thirdParty\" = someone else (requires accountHolder).","examples":["personal"],"anyOf":[{"const":"personal","type":"string"},{"const":"thirdParty","type":"string"}]},"accountHolder":{"description":"Account holder details. Required when ownership is \"thirdParty\".","type":"object","properties":{"firstName":{"description":"Account holder first name","examples":["John"],"type":"string"},"lastName":{"description":"Account holder last name","examples":["Doe"],"type":"string"},"address":{"description":"Account holder mailing address","type":"object","properties":{"street":{"examples":["123 Main St"],"type":"string"},"street2":{"examples":["Apt 4B"],"type":"string"},"city":{"examples":["New York"],"type":"string"},"state":{"examples":["NY"],"type":"string"},"postalCode":{"examples":["10001"],"type":"string"},"country":{"examples":["US"],"type":"string"}},"required":["street","city","state","postalCode"]}},"required":["firstName","lastName"]},"routingNumber":{"description":"9-digit ABA routing number","examples":["021000021"],"pattern":"^[0-9]{9}$","type":"string"},"accountNumber":{"description":"Bank account number","examples":["123456789"],"type":"string"},"accountSubtype":{"description":"Type of bank account (checking or savings)","examples":["checking"],"anyOf":[{"const":"checking","type":"string"},{"const":"savings","type":"string"}]},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"}},"required":["type","ownership","routingNumber","accountNumber"]},{"description":"Canadian bank account (EFT)","examples":[{"type":"ca","ownership":"thirdParty","accountHolder":{"firstName":"Jane","lastName":"Smith"},"institutionNumber":"001","transitNumber":"12345","accountNumber":"1234567","accountSubtype":"checking"}],"type":"object","properties":{"type":{"description":"Canadian bank account type","const":"ca","type":"string"},"ownership":{"description":"Who owns this bank account. \"personal\" = the authenticated user (holder info inferred from profile). \"thirdParty\" = someone else (requires accountHolder).","examples":["personal"],"anyOf":[{"const":"personal","type":"string"},{"const":"thirdParty","type":"string"}]},"accountHolder":{"description":"Account holder details. Required when ownership is \"thirdParty\".","type":"object","properties":{"firstName":{"description":"Account holder first name","examples":["John"],"type":"string"},"lastName":{"description":"Account holder last name","examples":["Doe"],"type":"string"},"address":{"description":"Account holder mailing address","type":"object","properties":{"street":{"examples":["123 Main St"],"type":"string"},"street2":{"examples":["Apt 4B"],"type":"string"},"city":{"examples":["New York"],"type":"string"},"state":{"examples":["NY"],"type":"string"},"postalCode":{"examples":["10001"],"type":"string"},"country":{"examples":["US"],"type":"string"}},"required":["street","city","state","postalCode"]}},"required":["firstName","lastName"]},"institutionNumber":{"description":"3-digit financial institution number","examples":["001"],"pattern":"^[0-9]{3}$","type":"string"},"transitNumber":{"description":"5-digit branch transit number","examples":["12345"],"pattern":"^[0-9]{5}$","type":"string"},"accountNumber":{"description":"Bank account number (7-12 digits)","examples":["1234567"],"type":"string"},"accountSubtype":{"description":"Type of bank account (checking or savings)","examples":["checking"],"anyOf":[{"const":"checking","type":"string"},{"const":"savings","type":"string"}]},"label":{"description":"Friendly name for the account","examples":["TD Chequing"],"type":"string"}},"required":["type","ownership","institutionNumber","transitNumber","accountNumber"]},{"description":"UK bank account (BACS/FPS)","examples":[{"type":"uk","ownership":"personal","sortCode":"108800","accountNumber":"00012345"}],"type":"object","properties":{"type":{"description":"UK bank account type","const":"uk","type":"string"},"ownership":{"description":"Who owns this bank account. \"personal\" = the authenticated user (holder info inferred from profile). \"thirdParty\" = someone else (requires accountHolder).","examples":["personal"],"anyOf":[{"const":"personal","type":"string"},{"const":"thirdParty","type":"string"}]},"accountHolder":{"description":"Account holder details. Required when ownership is \"thirdParty\".","type":"object","properties":{"firstName":{"description":"Account holder first name","examples":["John"],"type":"string"},"lastName":{"description":"Account holder last name","examples":["Doe"],"type":"string"},"address":{"description":"Account holder mailing address","type":"object","properties":{"street":{"examples":["123 Main St"],"type":"string"},"street2":{"examples":["Apt 4B"],"type":"string"},"city":{"examples":["New York"],"type":"string"},"state":{"examples":["NY"],"type":"string"},"postalCode":{"examples":["10001"],"type":"string"},"country":{"examples":["US"],"type":"string"}},"required":["street","city","state","postalCode"]}},"required":["firstName","lastName"]},"sortCode":{"description":"6-digit sort code","examples":["108800"],"pattern":"^[0-9]{6}$","type":"string"},"accountNumber":{"description":"8-digit account number","examples":["00012345"],"pattern":"^[0-9]{8}$","type":"string"},"label":{"description":"Friendly name for the account","examples":["Barclays Current"],"type":"string"}},"required":["type","ownership","sortCode","accountNumber"]},{"description":"IBAN bank account (SEPA)","examples":[{"type":"iban","ownership":"thirdParty","accountHolder":{"firstName":"Hans","lastName":"Müller","address":{"street":"Hauptstraße 1","city":"Berlin","state":"BE","postalCode":"10115","country":"DE"}},"iban":"DE89370400440532013000","bic":"COBADEFFXXX"}],"type":"object","properties":{"type":{"description":"IBAN bank account type (SEPA)","const":"iban","type":"string"},"ownership":{"description":"Who owns this bank account. \"personal\" = the authenticated user (holder info inferred from profile). \"thirdParty\" = someone else (requires accountHolder).","examples":["personal"],"anyOf":[{"const":"personal","type":"string"},{"const":"thirdParty","type":"string"}]},"accountHolder":{"description":"Account holder details. Required when ownership is \"thirdParty\".","type":"object","properties":{"firstName":{"description":"Account holder first name","examples":["John"],"type":"string"},"lastName":{"description":"Account holder last name","examples":["Doe"],"type":"string"},"address":{"description":"Account holder mailing address","type":"object","properties":{"street":{"examples":["123 Main St"],"type":"string"},"street2":{"examples":["Apt 4B"],"type":"string"},"city":{"examples":["New York"],"type":"string"},"state":{"examples":["NY"],"type":"string"},"postalCode":{"examples":["10001"],"type":"string"},"country":{"examples":["US"],"type":"string"}},"required":["street","city","state","postalCode"]}},"required":["firstName","lastName"]},"iban":{"description":"International Bank Account Number","examples":["DE89370400440532013000"],"pattern":"^[A-Z]{2}[0-9]{2}[A-Z0-9]{4,30}$","type":"string"},"bic":{"description":"Bank Identifier Code (SWIFT). Can often be derived from IBAN.","examples":["COBADEFFXXX"],"pattern":"^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$","type":"string"},"label":{"description":"Friendly name for the account","examples":["Commerzbank EUR"],"type":"string"}},"required":["type","ownership","iban"]}]}},"multipart/form-data":{"schema":{"description":"Create a bank account. The `type` field determines the required fields.","anyOf":[{"description":"US bank account (ACH/Wire)","examples":[{"type":"us","ownership":"personal","routingNumber":"021000021","accountNumber":"123456789","accountSubtype":"checking"}],"type":"object","properties":{"type":{"description":"US bank account type","const":"us","type":"string"},"ownership":{"description":"Who owns this bank account. \"personal\" = the authenticated user (holder info inferred from profile). \"thirdParty\" = someone else (requires accountHolder).","examples":["personal"],"anyOf":[{"const":"personal","type":"string"},{"const":"thirdParty","type":"string"}]},"accountHolder":{"description":"Account holder details. Required when ownership is \"thirdParty\".","type":"object","properties":{"firstName":{"description":"Account holder first name","examples":["John"],"type":"string"},"lastName":{"description":"Account holder last name","examples":["Doe"],"type":"string"},"address":{"description":"Account holder mailing address","type":"object","properties":{"street":{"examples":["123 Main St"],"type":"string"},"street2":{"examples":["Apt 4B"],"type":"string"},"city":{"examples":["New York"],"type":"string"},"state":{"examples":["NY"],"type":"string"},"postalCode":{"examples":["10001"],"type":"string"},"country":{"examples":["US"],"type":"string"}},"required":["street","city","state","postalCode"]}},"required":["firstName","lastName"]},"routingNumber":{"description":"9-digit ABA routing number","examples":["021000021"],"pattern":"^[0-9]{9}$","type":"string"},"accountNumber":{"description":"Bank account number","examples":["123456789"],"type":"string"},"accountSubtype":{"description":"Type of bank account (checking or savings)","examples":["checking"],"anyOf":[{"const":"checking","type":"string"},{"const":"savings","type":"string"}]},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"}},"required":["type","ownership","routingNumber","accountNumber"]},{"description":"Canadian bank account (EFT)","examples":[{"type":"ca","ownership":"thirdParty","accountHolder":{"firstName":"Jane","lastName":"Smith"},"institutionNumber":"001","transitNumber":"12345","accountNumber":"1234567","accountSubtype":"checking"}],"type":"object","properties":{"type":{"description":"Canadian bank account type","const":"ca","type":"string"},"ownership":{"description":"Who owns this bank account. \"personal\" = the authenticated user (holder info inferred from profile). \"thirdParty\" = someone else (requires accountHolder).","examples":["personal"],"anyOf":[{"const":"personal","type":"string"},{"const":"thirdParty","type":"string"}]},"accountHolder":{"description":"Account holder details. Required when ownership is \"thirdParty\".","type":"object","properties":{"firstName":{"description":"Account holder first name","examples":["John"],"type":"string"},"lastName":{"description":"Account holder last name","examples":["Doe"],"type":"string"},"address":{"description":"Account holder mailing address","type":"object","properties":{"street":{"examples":["123 Main St"],"type":"string"},"street2":{"examples":["Apt 4B"],"type":"string"},"city":{"examples":["New York"],"type":"string"},"state":{"examples":["NY"],"type":"string"},"postalCode":{"examples":["10001"],"type":"string"},"country":{"examples":["US"],"type":"string"}},"required":["street","city","state","postalCode"]}},"required":["firstName","lastName"]},"institutionNumber":{"description":"3-digit financial institution number","examples":["001"],"pattern":"^[0-9]{3}$","type":"string"},"transitNumber":{"description":"5-digit branch transit number","examples":["12345"],"pattern":"^[0-9]{5}$","type":"string"},"accountNumber":{"description":"Bank account number (7-12 digits)","examples":["1234567"],"type":"string"},"accountSubtype":{"description":"Type of bank account (checking or savings)","examples":["checking"],"anyOf":[{"const":"checking","type":"string"},{"const":"savings","type":"string"}]},"label":{"description":"Friendly name for the account","examples":["TD Chequing"],"type":"string"}},"required":["type","ownership","institutionNumber","transitNumber","accountNumber"]},{"description":"UK bank account (BACS/FPS)","examples":[{"type":"uk","ownership":"personal","sortCode":"108800","accountNumber":"00012345"}],"type":"object","properties":{"type":{"description":"UK bank account type","const":"uk","type":"string"},"ownership":{"description":"Who owns this bank account. \"personal\" = the authenticated user (holder info inferred from profile). \"thirdParty\" = someone else (requires accountHolder).","examples":["personal"],"anyOf":[{"const":"personal","type":"string"},{"const":"thirdParty","type":"string"}]},"accountHolder":{"description":"Account holder details. Required when ownership is \"thirdParty\".","type":"object","properties":{"firstName":{"description":"Account holder first name","examples":["John"],"type":"string"},"lastName":{"description":"Account holder last name","examples":["Doe"],"type":"string"},"address":{"description":"Account holder mailing address","type":"object","properties":{"street":{"examples":["123 Main St"],"type":"string"},"street2":{"examples":["Apt 4B"],"type":"string"},"city":{"examples":["New York"],"type":"string"},"state":{"examples":["NY"],"type":"string"},"postalCode":{"examples":["10001"],"type":"string"},"country":{"examples":["US"],"type":"string"}},"required":["street","city","state","postalCode"]}},"required":["firstName","lastName"]},"sortCode":{"description":"6-digit sort code","examples":["108800"],"pattern":"^[0-9]{6}$","type":"string"},"accountNumber":{"description":"8-digit account number","examples":["00012345"],"pattern":"^[0-9]{8}$","type":"string"},"label":{"description":"Friendly name for the account","examples":["Barclays Current"],"type":"string"}},"required":["type","ownership","sortCode","accountNumber"]},{"description":"IBAN bank account (SEPA)","examples":[{"type":"iban","ownership":"thirdParty","accountHolder":{"firstName":"Hans","lastName":"Müller","address":{"street":"Hauptstraße 1","city":"Berlin","state":"BE","postalCode":"10115","country":"DE"}},"iban":"DE89370400440532013000","bic":"COBADEFFXXX"}],"type":"object","properties":{"type":{"description":"IBAN bank account type (SEPA)","const":"iban","type":"string"},"ownership":{"description":"Who owns this bank account. \"personal\" = the authenticated user (holder info inferred from profile). \"thirdParty\" = someone else (requires accountHolder).","examples":["personal"],"anyOf":[{"const":"personal","type":"string"},{"const":"thirdParty","type":"string"}]},"accountHolder":{"description":"Account holder details. Required when ownership is \"thirdParty\".","type":"object","properties":{"firstName":{"description":"Account holder first name","examples":["John"],"type":"string"},"lastName":{"description":"Account holder last name","examples":["Doe"],"type":"string"},"address":{"description":"Account holder mailing address","type":"object","properties":{"street":{"examples":["123 Main St"],"type":"string"},"street2":{"examples":["Apt 4B"],"type":"string"},"city":{"examples":["New York"],"type":"string"},"state":{"examples":["NY"],"type":"string"},"postalCode":{"examples":["10001"],"type":"string"},"country":{"examples":["US"],"type":"string"}},"required":["street","city","state","postalCode"]}},"required":["firstName","lastName"]},"iban":{"description":"International Bank Account Number","examples":["DE89370400440532013000"],"pattern":"^[A-Z]{2}[0-9]{2}[A-Z0-9]{4,30}$","type":"string"},"bic":{"description":"Bank Identifier Code (SWIFT). Can often be derived from IBAN.","examples":["COBADEFFXXX"],"pattern":"^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$","type":"string"},"label":{"description":"Friendly name for the account","examples":["Commerzbank EUR"],"type":"string"}},"required":["type","ownership","iban"]}]}}}},"responses":{"201":{"description":"Bank account details. The `type` field indicates the account variant.","content":{"application/json":{"schema":{"description":"Bank account details. The `type` field indicates the account variant.","anyOf":[{"description":"US bank account response","type":"object","properties":{"id":{"description":"Unique identifier for the bank account","examples":["ba_abc123"],"type":"string"},"status":{"description":"Current status of the account","examples":["active"],"anyOf":[{"const":"active","type":"string"},{"const":"pending","type":"string"},{"const":"inactive","type":"string"},{"const":"rejected","type":"string"}]},"accountHolderName":{"description":"Name of the account holder","examples":["John Doe"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"supportedRails":{"description":"Payment rails available for this account","examples":[["ach_standard","rtp"]],"type":"array","items":{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]}},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"},"createdAt":{"description":"When the account was created","format":"date-time","type":"string"},"fundingSourceId":{"description":"Associated opaque public funding source identifier, or null when no funding source exists for this bank account.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"const":"us","type":"string"},"currency":{"const":"USD","type":"string"},"accountNumberLast4":{"description":"Last 4 digits of account number","examples":["6789"],"type":"string"},"routingNumberLast4":{"description":"Last 4 digits of routing number","examples":["0021"],"type":"string"},"accountSubtype":{"description":"Type of bank account (checking or savings)","examples":["checking"],"anyOf":[{"const":"checking","type":"string"},{"const":"savings","type":"string"}]}},"required":["id","status","accountHolderName","supportedRails","createdAt","fundingSourceId","type","currency","accountNumberLast4","routingNumberLast4"]},{"description":"Canadian bank account response","type":"object","properties":{"id":{"description":"Unique identifier for the bank account","examples":["ba_abc123"],"type":"string"},"status":{"description":"Current status of the account","examples":["active"],"anyOf":[{"const":"active","type":"string"},{"const":"pending","type":"string"},{"const":"inactive","type":"string"},{"const":"rejected","type":"string"}]},"accountHolderName":{"description":"Name of the account holder","examples":["John Doe"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"supportedRails":{"description":"Payment rails available for this account","examples":[["ach_standard","rtp"]],"type":"array","items":{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]}},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"},"createdAt":{"description":"When the account was created","format":"date-time","type":"string"},"fundingSourceId":{"description":"Associated opaque public funding source identifier, or null when no funding source exists for this bank account.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"const":"ca","type":"string"},"currency":{"const":"CAD","type":"string"},"accountNumberLast4":{"description":"Last 4 digits of account number","examples":["4567"],"type":"string"},"institutionNumber":{"description":"3-digit institution number","examples":["001"],"type":"string"},"transitNumberLast3":{"description":"Last 3 digits of transit number","examples":["345"],"type":"string"},"accountSubtype":{"description":"Type of bank account (checking or savings)","examples":["checking"],"anyOf":[{"const":"checking","type":"string"},{"const":"savings","type":"string"}]}},"required":["id","status","accountHolderName","supportedRails","createdAt","fundingSourceId","type","currency","accountNumberLast4","institutionNumber","transitNumberLast3"]},{"description":"UK bank account response","type":"object","properties":{"id":{"description":"Unique identifier for the bank account","examples":["ba_abc123"],"type":"string"},"status":{"description":"Current status of the account","examples":["active"],"anyOf":[{"const":"active","type":"string"},{"const":"pending","type":"string"},{"const":"inactive","type":"string"},{"const":"rejected","type":"string"}]},"accountHolderName":{"description":"Name of the account holder","examples":["John Doe"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"supportedRails":{"description":"Payment rails available for this account","examples":[["ach_standard","rtp"]],"type":"array","items":{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]}},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"},"createdAt":{"description":"When the account was created","format":"date-time","type":"string"},"fundingSourceId":{"description":"Associated opaque public funding source identifier, or null when no funding source exists for this bank account.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"const":"uk","type":"string"},"currency":{"const":"GBP","type":"string"},"accountNumberLast4":{"description":"Last 4 digits of account number","examples":["2345"],"type":"string"},"sortCode":{"description":"6-digit sort code (not sensitive)","examples":["108800"],"type":"string"}},"required":["id","status","accountHolderName","supportedRails","createdAt","fundingSourceId","type","currency","accountNumberLast4","sortCode"]},{"description":"IBAN bank account response","type":"object","properties":{"id":{"description":"Unique identifier for the bank account","examples":["ba_abc123"],"type":"string"},"status":{"description":"Current status of the account","examples":["active"],"anyOf":[{"const":"active","type":"string"},{"const":"pending","type":"string"},{"const":"inactive","type":"string"},{"const":"rejected","type":"string"}]},"accountHolderName":{"description":"Name of the account holder","examples":["John Doe"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"supportedRails":{"description":"Payment rails available for this account","examples":[["ach_standard","rtp"]],"type":"array","items":{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]}},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"},"createdAt":{"description":"When the account was created","format":"date-time","type":"string"},"fundingSourceId":{"description":"Associated opaque public funding source identifier, or null when no funding source exists for this bank account.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"const":"iban","type":"string"},"currency":{"description":"Fiat currency code","examples":["USD"],"anyOf":[{"const":"USD","type":"string"},{"const":"CAD","type":"string"},{"const":"EUR","type":"string"},{"const":"GBP","type":"string"}]},"ibanLast4":{"description":"Last 4 characters of IBAN","examples":["3000"],"type":"string"},"bic":{"description":"Bank Identifier Code","examples":["COBADEFFXXX"],"type":"string"}},"required":["id","status","accountHolderName","supportedRails","createdAt","fundingSourceId","type","currency","ibanLast4"]}]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1Bank-accounts"},"get":{"tags":["Bank Accounts"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"List bank accounts","description":"Returns all bank accounts for the authenticated user.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"description":"Bank account details. The `type` field indicates the account variant.","anyOf":[{"description":"US bank account response","type":"object","properties":{"id":{"description":"Unique identifier for the bank account","examples":["ba_abc123"],"type":"string"},"status":{"description":"Current status of the account","examples":["active"],"anyOf":[{"const":"active","type":"string"},{"const":"pending","type":"string"},{"const":"inactive","type":"string"},{"const":"rejected","type":"string"}]},"accountHolderName":{"description":"Name of the account holder","examples":["John Doe"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"supportedRails":{"description":"Payment rails available for this account","examples":[["ach_standard","rtp"]],"type":"array","items":{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]}},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"},"createdAt":{"description":"When the account was created","format":"date-time","type":"string"},"fundingSourceId":{"description":"Associated opaque public funding source identifier, or null when no funding source exists for this bank account.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"const":"us","type":"string"},"currency":{"const":"USD","type":"string"},"accountNumberLast4":{"description":"Last 4 digits of account number","examples":["6789"],"type":"string"},"routingNumberLast4":{"description":"Last 4 digits of routing number","examples":["0021"],"type":"string"},"accountSubtype":{"description":"Type of bank account (checking or savings)","examples":["checking"],"anyOf":[{"const":"checking","type":"string"},{"const":"savings","type":"string"}]}},"required":["id","status","accountHolderName","supportedRails","createdAt","fundingSourceId","type","currency","accountNumberLast4","routingNumberLast4"]},{"description":"Canadian bank account response","type":"object","properties":{"id":{"description":"Unique identifier for the bank account","examples":["ba_abc123"],"type":"string"},"status":{"description":"Current status of the account","examples":["active"],"anyOf":[{"const":"active","type":"string"},{"const":"pending","type":"string"},{"const":"inactive","type":"string"},{"const":"rejected","type":"string"}]},"accountHolderName":{"description":"Name of the account holder","examples":["John Doe"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"supportedRails":{"description":"Payment rails available for this account","examples":[["ach_standard","rtp"]],"type":"array","items":{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]}},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"},"createdAt":{"description":"When the account was created","format":"date-time","type":"string"},"fundingSourceId":{"description":"Associated opaque public funding source identifier, or null when no funding source exists for this bank account.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"const":"ca","type":"string"},"currency":{"const":"CAD","type":"string"},"accountNumberLast4":{"description":"Last 4 digits of account number","examples":["4567"],"type":"string"},"institutionNumber":{"description":"3-digit institution number","examples":["001"],"type":"string"},"transitNumberLast3":{"description":"Last 3 digits of transit number","examples":["345"],"type":"string"},"accountSubtype":{"description":"Type of bank account (checking or savings)","examples":["checking"],"anyOf":[{"const":"checking","type":"string"},{"const":"savings","type":"string"}]}},"required":["id","status","accountHolderName","supportedRails","createdAt","fundingSourceId","type","currency","accountNumberLast4","institutionNumber","transitNumberLast3"]},{"description":"UK bank account response","type":"object","properties":{"id":{"description":"Unique identifier for the bank account","examples":["ba_abc123"],"type":"string"},"status":{"description":"Current status of the account","examples":["active"],"anyOf":[{"const":"active","type":"string"},{"const":"pending","type":"string"},{"const":"inactive","type":"string"},{"const":"rejected","type":"string"}]},"accountHolderName":{"description":"Name of the account holder","examples":["John Doe"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"supportedRails":{"description":"Payment rails available for this account","examples":[["ach_standard","rtp"]],"type":"array","items":{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]}},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"},"createdAt":{"description":"When the account was created","format":"date-time","type":"string"},"fundingSourceId":{"description":"Associated opaque public funding source identifier, or null when no funding source exists for this bank account.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"const":"uk","type":"string"},"currency":{"const":"GBP","type":"string"},"accountNumberLast4":{"description":"Last 4 digits of account number","examples":["2345"],"type":"string"},"sortCode":{"description":"6-digit sort code (not sensitive)","examples":["108800"],"type":"string"}},"required":["id","status","accountHolderName","supportedRails","createdAt","fundingSourceId","type","currency","accountNumberLast4","sortCode"]},{"description":"IBAN bank account response","type":"object","properties":{"id":{"description":"Unique identifier for the bank account","examples":["ba_abc123"],"type":"string"},"status":{"description":"Current status of the account","examples":["active"],"anyOf":[{"const":"active","type":"string"},{"const":"pending","type":"string"},{"const":"inactive","type":"string"},{"const":"rejected","type":"string"}]},"accountHolderName":{"description":"Name of the account holder","examples":["John Doe"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"supportedRails":{"description":"Payment rails available for this account","examples":[["ach_standard","rtp"]],"type":"array","items":{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]}},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"},"createdAt":{"description":"When the account was created","format":"date-time","type":"string"},"fundingSourceId":{"description":"Associated opaque public funding source identifier, or null when no funding source exists for this bank account.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"const":"iban","type":"string"},"currency":{"description":"Fiat currency code","examples":["USD"],"anyOf":[{"const":"USD","type":"string"},{"const":"CAD","type":"string"},{"const":"EUR","type":"string"},{"const":"GBP","type":"string"}]},"ibanLast4":{"description":"Last 4 characters of IBAN","examples":["3000"],"type":"string"},"bic":{"description":"Bank Identifier Code","examples":["COBADEFFXXX"],"type":"string"}},"required":["id","status","accountHolderName","supportedRails","createdAt","fundingSourceId","type","currency","ibanLast4"]}]}}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Bank-accounts"}},"/v1/bank-accounts/{accountId}":{"get":{"tags":["Bank Accounts"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Get a bank account","description":"Returns details for a specific bank account.","parameters":[{"name":"accountId","in":"path","required":true,"schema":{"description":"The bank account ID","type":"string"}}],"responses":{"200":{"description":"Bank account details. The `type` field indicates the account variant.","content":{"application/json":{"schema":{"description":"Bank account details. The `type` field indicates the account variant.","anyOf":[{"description":"US bank account response","type":"object","properties":{"id":{"description":"Unique identifier for the bank account","examples":["ba_abc123"],"type":"string"},"status":{"description":"Current status of the account","examples":["active"],"anyOf":[{"const":"active","type":"string"},{"const":"pending","type":"string"},{"const":"inactive","type":"string"},{"const":"rejected","type":"string"}]},"accountHolderName":{"description":"Name of the account holder","examples":["John Doe"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"supportedRails":{"description":"Payment rails available for this account","examples":[["ach_standard","rtp"]],"type":"array","items":{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]}},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"},"createdAt":{"description":"When the account was created","format":"date-time","type":"string"},"fundingSourceId":{"description":"Associated opaque public funding source identifier, or null when no funding source exists for this bank account.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"const":"us","type":"string"},"currency":{"const":"USD","type":"string"},"accountNumberLast4":{"description":"Last 4 digits of account number","examples":["6789"],"type":"string"},"routingNumberLast4":{"description":"Last 4 digits of routing number","examples":["0021"],"type":"string"},"accountSubtype":{"description":"Type of bank account (checking or savings)","examples":["checking"],"anyOf":[{"const":"checking","type":"string"},{"const":"savings","type":"string"}]}},"required":["id","status","accountHolderName","supportedRails","createdAt","fundingSourceId","type","currency","accountNumberLast4","routingNumberLast4"]},{"description":"Canadian bank account response","type":"object","properties":{"id":{"description":"Unique identifier for the bank account","examples":["ba_abc123"],"type":"string"},"status":{"description":"Current status of the account","examples":["active"],"anyOf":[{"const":"active","type":"string"},{"const":"pending","type":"string"},{"const":"inactive","type":"string"},{"const":"rejected","type":"string"}]},"accountHolderName":{"description":"Name of the account holder","examples":["John Doe"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"supportedRails":{"description":"Payment rails available for this account","examples":[["ach_standard","rtp"]],"type":"array","items":{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]}},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"},"createdAt":{"description":"When the account was created","format":"date-time","type":"string"},"fundingSourceId":{"description":"Associated opaque public funding source identifier, or null when no funding source exists for this bank account.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"const":"ca","type":"string"},"currency":{"const":"CAD","type":"string"},"accountNumberLast4":{"description":"Last 4 digits of account number","examples":["4567"],"type":"string"},"institutionNumber":{"description":"3-digit institution number","examples":["001"],"type":"string"},"transitNumberLast3":{"description":"Last 3 digits of transit number","examples":["345"],"type":"string"},"accountSubtype":{"description":"Type of bank account (checking or savings)","examples":["checking"],"anyOf":[{"const":"checking","type":"string"},{"const":"savings","type":"string"}]}},"required":["id","status","accountHolderName","supportedRails","createdAt","fundingSourceId","type","currency","accountNumberLast4","institutionNumber","transitNumberLast3"]},{"description":"UK bank account response","type":"object","properties":{"id":{"description":"Unique identifier for the bank account","examples":["ba_abc123"],"type":"string"},"status":{"description":"Current status of the account","examples":["active"],"anyOf":[{"const":"active","type":"string"},{"const":"pending","type":"string"},{"const":"inactive","type":"string"},{"const":"rejected","type":"string"}]},"accountHolderName":{"description":"Name of the account holder","examples":["John Doe"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"supportedRails":{"description":"Payment rails available for this account","examples":[["ach_standard","rtp"]],"type":"array","items":{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]}},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"},"createdAt":{"description":"When the account was created","format":"date-time","type":"string"},"fundingSourceId":{"description":"Associated opaque public funding source identifier, or null when no funding source exists for this bank account.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"const":"uk","type":"string"},"currency":{"const":"GBP","type":"string"},"accountNumberLast4":{"description":"Last 4 digits of account number","examples":["2345"],"type":"string"},"sortCode":{"description":"6-digit sort code (not sensitive)","examples":["108800"],"type":"string"}},"required":["id","status","accountHolderName","supportedRails","createdAt","fundingSourceId","type","currency","accountNumberLast4","sortCode"]},{"description":"IBAN bank account response","type":"object","properties":{"id":{"description":"Unique identifier for the bank account","examples":["ba_abc123"],"type":"string"},"status":{"description":"Current status of the account","examples":["active"],"anyOf":[{"const":"active","type":"string"},{"const":"pending","type":"string"},{"const":"inactive","type":"string"},{"const":"rejected","type":"string"}]},"accountHolderName":{"description":"Name of the account holder","examples":["John Doe"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"supportedRails":{"description":"Payment rails available for this account","examples":[["ach_standard","rtp"]],"type":"array","items":{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]}},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"},"createdAt":{"description":"When the account was created","format":"date-time","type":"string"},"fundingSourceId":{"description":"Associated opaque public funding source identifier, or null when no funding source exists for this bank account.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"const":"iban","type":"string"},"currency":{"description":"Fiat currency code","examples":["USD"],"anyOf":[{"const":"USD","type":"string"},{"const":"CAD","type":"string"},{"const":"EUR","type":"string"},{"const":"GBP","type":"string"}]},"ibanLast4":{"description":"Last 4 characters of IBAN","examples":["3000"],"type":"string"},"bic":{"description":"Bank Identifier Code","examples":["COBADEFFXXX"],"type":"string"}},"required":["id","status","accountHolderName","supportedRails","createdAt","fundingSourceId","type","currency","ibanLast4"]}]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Bank-accountsByAccountId"},"delete":{"tags":["Bank Accounts"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Remove a bank account","description":"Removes a bank account. Any pending off-ramps will still be processed.","parameters":[{"name":"accountId","in":"path","required":true,"schema":{"description":"The bank account ID","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Unique identifier for the deleted bank account","examples":["ba_abc123"],"type":"string"},"deleted":{"description":"Always true for a deleted bank account response","const":true,"type":"boolean"}},"required":["id","deleted"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"deleteV1Bank-accountsByAccountId"}},"/v1/bank-accounts/{accountId}/payment-limits":{"get":{"tags":["Bank Accounts"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Get payment limits","description":"Returns payment limits for a specific bank account, including per-transaction and daily volume limits.","parameters":[{"name":"accountId","in":"path","required":true,"schema":{"description":"The bank account ID","type":"string"}}],"responses":{"200":{"description":"Payment limits for a bank account","content":{"application/json":{"schema":{"description":"Payment limits for a bank account","type":"object","properties":{"transactionLimit":{"description":"Maximum amount per transaction","type":"string"},"dailyLimit":{"description":"Maximum total daily payment volume","type":"string"},"dailyRemaining":{"description":"Remaining daily payment volume","type":"string"}},"required":["transactionLimit","dailyLimit","dailyRemaining"],"additionalProperties":false}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Bank-accountsByAccountIdPayment-limits"}},"/v1/funding-sources/":{"get":{"tags":["Funding Sources"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"List funding sources","description":"Returns all funding sources for the authenticated user.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"description":"A linked bank account that can be evaluated for inbound funding","type":"object","properties":{"id":{"description":"Opaque public identifier for the funding source","examples":["fs_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"bankAccountId":{"description":"Underlying bank account identifier","examples":["ba_abc123"],"type":"string"},"institutionName":{"description":"Institution name used for funding source display. Prefer `institution.name` when present; this field will be removed in a future release.","examples":["Plaid Test Bank",null],"anyOf":[{"type":"string"},{"type":"null"}]},"institution":{"description":"Branding metadata for the institution backing the funding source, or null when no institution data is available.","anyOf":[{"description":"Branding metadata for the linked institution","type":"object","properties":{"name":{"description":"Display name for the institution","examples":["Chase"],"type":"string"},"logoUrl":{"description":"Absolute URL to the institution's logo (PNG). Null when the institution has no logo on file.","examples":["https://assets.platform.spritz.finance/institutions/ins_109508.png",null],"anyOf":[{"type":"string"},{"type":"null"}]},"primaryColor":{"description":"Hex color (e.g. `#1e88e5`) representing the institution's brand. Null when unavailable.","examples":["#1e88e5",null],"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","logoUrl","primaryColor"]},{"type":"null"}]},"accountNumberLast4":{"description":"Last 4 digits of the linked bank account number","examples":["6789",null],"anyOf":[{"type":"string"},{"type":"null"}]},"accountType":{"type":"string","enum":["checking","savings","business","unknown"]},"status":{"type":"string","enum":["pending","active","review_required","ineligible","disabled"]},"statusReason":{"description":"Why the funding source is not active, or null when no reason applies.","anyOf":[{"description":"Why the funding source is not active","examples":["ownership_mismatch"],"anyOf":[{"const":"ownership_mismatch","type":"string"},{"const":"ownership_review_required","type":"string"},{"const":"user_not_verified","type":"string"},{"const":"duplicate_bank_account","type":"string"},{"const":"returned","type":"string"},{"const":"manually_disabled","type":"string"}]},{"type":"null"}]},"ownershipMatchStatus":{"description":"Ownership match result for the linked bank account, or null when unavailable.","anyOf":[{"description":"Ownership match result for the linked bank account","examples":["matched"],"anyOf":[{"const":"matched","type":"string"},{"const":"mismatch","type":"string"},{"const":"review_required","type":"string"}]},{"type":"null"}]},"createdAt":{"description":"When the funding source was created","format":"date-time","type":"string"}},"required":["id","bankAccountId","institutionName","institution","accountNumberLast4","accountType","status","statusReason","ownershipMatchStatus","createdAt"]}}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Funding-sources"}},"/v1/funding-sources/{fundingSourceId}/deposit-limits":{"get":{"tags":["Funding Sources"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Get deposit limits for a funding source","description":"Returns the authenticated user's current ACH debit limits and remaining capacity for this funding source.","parameters":[{"name":"fundingSourceId","in":"path","required":true,"schema":{"description":"Opaque public funding source ID","examples":["fs_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"}}],"responses":{"200":{"description":"Current ACH debit limits and remaining capacity for the authenticated user on this funding source.","content":{"application/json":{"schema":{"description":"Current ACH debit limits and remaining capacity for the authenticated user on this funding source.","type":"object","properties":{"minimumDepositAmountUsd":{"description":"Minimum deposit principal amount before fees","examples":["10.00"],"type":"string"},"transactionLimitUsd":{"description":"Maximum ACH debit amount per transaction","examples":["500.00"],"type":"string"},"dailyLimitUsd":{"description":"Maximum daily ACH debit volume","examples":["1500.00"],"type":"string"},"dailyRemainingUsd":{"description":"Remaining daily ACH debit volume","examples":["1400.00"],"type":"string"},"monthlyLimitUsd":{"description":"Maximum monthly ACH debit volume","examples":["5000.00"],"type":"string"},"monthlyRemainingUsd":{"description":"Remaining monthly ACH debit volume","examples":["4900.00"],"type":"string"},"unsettledDepositLimit":{"description":"Maximum number of unsettled ACH debit deposits allowed","examples":[1],"type":"number"},"unsettledDepositRemaining":{"description":"Remaining unsettled ACH debit deposit capacity","examples":[1],"type":"number"}},"required":["minimumDepositAmountUsd","transactionLimitUsd","dailyLimitUsd","dailyRemainingUsd","monthlyLimitUsd","monthlyRemainingUsd","unsettledDepositLimit","unsettledDepositRemaining"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Funding-sourcesByFundingSourceIdDeposit-limits"}},"/v1/funding-sources/{fundingSourceId}":{"get":{"tags":["Funding Sources"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Get a funding source","description":"Returns details for a specific funding source for the authenticated user.","parameters":[{"name":"fundingSourceId","in":"path","required":true,"schema":{"description":"Opaque public funding source ID","examples":["fs_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"}}],"responses":{"200":{"description":"A linked bank account that can be evaluated for inbound funding","content":{"application/json":{"schema":{"description":"A linked bank account that can be evaluated for inbound funding","type":"object","properties":{"id":{"description":"Opaque public identifier for the funding source","examples":["fs_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"bankAccountId":{"description":"Underlying bank account identifier","examples":["ba_abc123"],"type":"string"},"institutionName":{"description":"Institution name used for funding source display. Prefer `institution.name` when present; this field will be removed in a future release.","examples":["Plaid Test Bank",null],"anyOf":[{"type":"string"},{"type":"null"}]},"institution":{"description":"Branding metadata for the institution backing the funding source, or null when no institution data is available.","anyOf":[{"description":"Branding metadata for the linked institution","type":"object","properties":{"name":{"description":"Display name for the institution","examples":["Chase"],"type":"string"},"logoUrl":{"description":"Absolute URL to the institution's logo (PNG). Null when the institution has no logo on file.","examples":["https://assets.platform.spritz.finance/institutions/ins_109508.png",null],"anyOf":[{"type":"string"},{"type":"null"}]},"primaryColor":{"description":"Hex color (e.g. `#1e88e5`) representing the institution's brand. Null when unavailable.","examples":["#1e88e5",null],"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","logoUrl","primaryColor"]},{"type":"null"}]},"accountNumberLast4":{"description":"Last 4 digits of the linked bank account number","examples":["6789",null],"anyOf":[{"type":"string"},{"type":"null"}]},"accountType":{"type":"string","enum":["checking","savings","business","unknown"]},"status":{"type":"string","enum":["pending","active","review_required","ineligible","disabled"]},"statusReason":{"description":"Why the funding source is not active, or null when no reason applies.","anyOf":[{"description":"Why the funding source is not active","examples":["ownership_mismatch"],"anyOf":[{"const":"ownership_mismatch","type":"string"},{"const":"ownership_review_required","type":"string"},{"const":"user_not_verified","type":"string"},{"const":"duplicate_bank_account","type":"string"},{"const":"returned","type":"string"},{"const":"manually_disabled","type":"string"}]},{"type":"null"}]},"ownershipMatchStatus":{"description":"Ownership match result for the linked bank account, or null when unavailable.","anyOf":[{"description":"Ownership match result for the linked bank account","examples":["matched"],"anyOf":[{"const":"matched","type":"string"},{"const":"mismatch","type":"string"},{"const":"review_required","type":"string"}]},{"type":"null"}]},"createdAt":{"description":"When the funding source was created","format":"date-time","type":"string"}},"required":["id","bankAccountId","institutionName","institution","accountNumberLast4","accountType","status","statusReason","ownershipMatchStatus","createdAt"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Funding-sourcesByFundingSourceId"}},"/v1/deposits/direct/prepare":{"post":{"tags":["Deposits"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Prepare a direct deposit authorization","description":"Creates the canonical ACH authorization message for a deposit targeting a raw wallet address. Authorization is derived from the verified ACH funding source; no wallet signature is required.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sourceId":{"description":"Opaque public funding source identifier","examples":["fs_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"address":{"description":"Destination wallet address to deposit into. Validated but not proven via wallet signature; authorization is derived from the verified ACH funding source.","examples":["9n4nbM75f5Ui33ZbPYXn59EwSb9Y1zdyu3x2b1f8jQRY"],"type":"string"},"network":{"type":"string","enum":["solana","ethereum","polygon","base","avalanche","arbitrum"]},"asset":{"description":"Asset sent to the deposit destination","examples":["USDC"],"const":"USDC","type":"string"},"quoteType":{"type":"string","enum":["exact_input","exact_output"]},"amountUsd":{"description":"Requested USD amount as a decimal string","examples":["100.00"],"type":"string"},"priority":{"type":"string","enum":["normal","high"]},"feeSubsidy":{"type":"object","properties":{"percentage":{"minimum":0,"maximum":100,"type":"number"},"maxAmountUsd":{"minLength":1,"type":"string"}},"required":["percentage"]},"clientContext":{"type":"object","properties":{"clientIp":{"type":"string"},"userAgent":{"type":"string"},"sessionId":{"type":"string"},"deviceId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string"}}}},"required":["sourceId","address","network","asset","quoteType","amountUsd","priority"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"sourceId":{"description":"Opaque public funding source identifier","examples":["fs_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"address":{"description":"Destination wallet address to deposit into. Validated but not proven via wallet signature; authorization is derived from the verified ACH funding source.","examples":["9n4nbM75f5Ui33ZbPYXn59EwSb9Y1zdyu3x2b1f8jQRY"],"type":"string"},"network":{"type":"string","enum":["solana","ethereum","polygon","base","avalanche","arbitrum"]},"asset":{"description":"Asset sent to the deposit destination","examples":["USDC"],"const":"USDC","type":"string"},"quoteType":{"type":"string","enum":["exact_input","exact_output"]},"amountUsd":{"description":"Requested USD amount as a decimal string","examples":["100.00"],"type":"string"},"priority":{"type":"string","enum":["normal","high"]},"feeSubsidy":{"type":"object","properties":{"percentage":{"minimum":0,"maximum":100,"type":"number"},"maxAmountUsd":{"minLength":1,"type":"string"}},"required":["percentage"]},"clientContext":{"type":"object","properties":{"clientIp":{"type":"string"},"userAgent":{"type":"string"},"sessionId":{"type":"string"},"deviceId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string"}}}},"required":["sourceId","address","network","asset","quoteType","amountUsd","priority"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"sourceId":{"description":"Opaque public funding source identifier","examples":["fs_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"address":{"description":"Destination wallet address to deposit into. Validated but not proven via wallet signature; authorization is derived from the verified ACH funding source.","examples":["9n4nbM75f5Ui33ZbPYXn59EwSb9Y1zdyu3x2b1f8jQRY"],"type":"string"},"network":{"type":"string","enum":["solana","ethereum","polygon","base","avalanche","arbitrum"]},"asset":{"description":"Asset sent to the deposit destination","examples":["USDC"],"const":"USDC","type":"string"},"quoteType":{"type":"string","enum":["exact_input","exact_output"]},"amountUsd":{"description":"Requested USD amount as a decimal string","examples":["100.00"],"type":"string"},"priority":{"type":"string","enum":["normal","high"]},"feeSubsidy":{"type":"object","properties":{"percentage":{"minimum":0,"maximum":100,"type":"number"},"maxAmountUsd":{"minLength":1,"type":"string"}},"required":["percentage"]},"clientContext":{"type":"object","properties":{"clientIp":{"type":"string"},"userAgent":{"type":"string"},"sessionId":{"type":"string"},"deviceId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string"}}}},"required":["sourceId","address","network","asset","quoteType","amountUsd","priority"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"preparationId":{"description":"Opaque public preparation identifier","examples":["prep_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"kind":{"const":"deposit_authorization","type":"string"},"expiresAt":{"format":"date-time","type":"string"},"messageVersion":{"const":"v1","type":"string"},"message":{"description":"Display-ready ACH authorization message","type":"string"},"summary":{"type":"object","properties":{"quoteType":{"type":"string","enum":["exact_input","exact_output"]},"requestedAmountUsd":{"type":"string"},"priority":{"type":"string","enum":["normal","high"]},"feeRateBps":{"type":"number"},"principalAmountUsd":{"type":"string"},"expectedAssetAmount":{"type":"string"},"grossFeeUsd":{"type":"string"},"feeSubsidyUsd":{"type":"string"},"userFeeUsd":{"type":"string"},"totalDebitAmountUsd":{"type":"string"},"feeSubsidy":{"anyOf":[{"type":"object","properties":{"percentage":{"type":"number"},"percentageBps":{"type":"number"},"maxAmountUsd":{"anyOf":[{"type":"string"},{"type":"null"}]},"appliedAmountUsd":{"type":"string"}},"required":["percentage","percentageBps","maxAmountUsd","appliedAmountUsd"]},{"type":"null"}]},"network":{"type":"string","enum":["solana","ethereum","polygon","base","avalanche","arbitrum"]},"asset":{"description":"Asset sent to the deposit destination","examples":["USDC"],"const":"USDC","type":"string"},"assetAddress":{"type":"string"},"destinationAddress":{"type":"string"}},"required":["quoteType","requestedAmountUsd","priority","feeRateBps","principalAmountUsd","expectedAssetAmount","grossFeeUsd","feeSubsidyUsd","userFeeUsd","totalDebitAmountUsd","feeSubsidy","network","asset","assetAddress","destinationAddress"]}},"required":["preparationId","kind","expiresAt","messageVersion","message","summary"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1DepositsDirectPrepare"}},"/v1/deposits/direct":{"post":{"tags":["Deposits"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Create a direct deposit","description":"Authorizes and creates a deposit against a raw wallet address prepared via /direct/prepare. Authorization is derived from the verified ACH funding source; no wallet signature is required.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"preparationId":{"description":"Opaque public preparation identifier returned by direct prepare","examples":["prep_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"clientContext":{"type":"object","properties":{"clientIp":{"type":"string"},"userAgent":{"type":"string"},"sessionId":{"type":"string"},"deviceId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string"}}}},"required":["preparationId"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"preparationId":{"description":"Opaque public preparation identifier returned by direct prepare","examples":["prep_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"clientContext":{"type":"object","properties":{"clientIp":{"type":"string"},"userAgent":{"type":"string"},"sessionId":{"type":"string"},"deviceId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string"}}}},"required":["preparationId"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"preparationId":{"description":"Opaque public preparation identifier returned by direct prepare","examples":["prep_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"clientContext":{"type":"object","properties":{"clientIp":{"type":"string"},"userAgent":{"type":"string"},"sessionId":{"type":"string"},"deviceId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string"}}}},"required":["preparationId"]}}}},"responses":{"200":{"description":"An ACH debit deposit authorized by the user and processed asynchronously through debit and crypto release lifecycles.","content":{"application/json":{"schema":{"description":"An ACH debit deposit authorized by the user and processed asynchronously through debit and crypto release lifecycles.","type":"object","properties":{"id":{"description":"Opaque public deposit identifier","examples":["dep_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"sourceId":{"description":"Opaque public funding source identifier","examples":["fs_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"status":{"type":"string","enum":["authorized","processing","partially_released","completed","returned","failed"]},"quoteType":{"type":"string","enum":["exact_input","exact_output"]},"priority":{"type":"string","enum":["normal","high"]},"feeRateBps":{"type":"number"},"principalAmountUsd":{"type":"string"},"expectedAssetAmount":{"type":"string"},"grossFeeUsd":{"type":"string"},"feeSubsidyUsd":{"type":"string"},"userFeeUsd":{"type":"string"},"totalDebitAmountUsd":{"type":"string"},"feeSubsidy":{"anyOf":[{"type":"object","properties":{"percentage":{"type":"number"},"percentageBps":{"type":"number"},"maxAmountUsd":{"anyOf":[{"type":"string"},{"type":"null"}]},"appliedAmountUsd":{"type":"string"}},"required":["percentage","percentageBps","maxAmountUsd","appliedAmountUsd"]},{"type":"null"}]},"network":{"type":"string","enum":["solana","ethereum","polygon","base","avalanche","arbitrum"]},"asset":{"description":"Asset sent to the deposit destination","examples":["USDC"],"const":"USDC","type":"string"},"assetAddress":{"type":"string"},"address":{"description":"Destination wallet address for the crypto release","type":"string"},"debitStatus":{"type":"string","enum":["authorized","submitting","submitted","settled","returned","failed"]},"releaseStatus":{"type":"string","enum":["not_started","queued","partial","completed","failed"]},"releaseDecisionMode":{"type":"string","enum":["after_settlement","early_full","early_partial"]},"releasedAmountUsd":{"type":"string"},"confirmedReleasedAmountUsd":{"type":"string"},"exposureAmountUsd":{"type":"string"},"authorizedAt":{"format":"date-time","type":"string"},"createdAt":{"format":"date-time","type":"string"},"settledAt":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}]},"returnedAt":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}]},"completedAt":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}]},"returnCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"returnReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"debitFailureCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"debitFailureReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"releaseFailureCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"releaseFailureReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"payoutTxHash":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","sourceId","status","quoteType","priority","feeRateBps","principalAmountUsd","expectedAssetAmount","grossFeeUsd","feeSubsidyUsd","userFeeUsd","totalDebitAmountUsd","feeSubsidy","network","asset","assetAddress","address","debitStatus","releaseStatus","releaseDecisionMode","releasedAmountUsd","confirmedReleasedAmountUsd","exposureAmountUsd","authorizedAt","createdAt","settledAt","returnedAt","completedAt","returnCode","returnReason","debitFailureCode","debitFailureReason","releaseFailureCode","releaseFailureReason","payoutTxHash"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1DepositsDirect"}},"/v1/bank-accounts/link-token":{"post":{"tags":["Bank Accounts"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Create a bank account link token","description":"Creates a Plaid Link token and hosted URL for linking a bank account. Use the linkToken with Plaid Link SDK, or open hostedLinkUrl in a browser/webview.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"redirectUri":{"minLength":1,"description":"Plaid OAuth target. For web or iOS, pass an https:// URL (web return URL or iOS universal link). For Android, pass the package name (e.g. com.example.app) — values without an https:// prefix are forwarded to Plaid as android_package_name with redirect_uri left blank, per Plaid's per-platform requirements.","examples":["https://app.example.com/plaid/oauth-return","com.example.app"],"type":"string"}}},{"type":"undefined"}]}},"application/x-www-form-urlencoded":{"schema":{"anyOf":[{"type":"object","properties":{"redirectUri":{"minLength":1,"description":"Plaid OAuth target. For web or iOS, pass an https:// URL (web return URL or iOS universal link). For Android, pass the package name (e.g. com.example.app) — values without an https:// prefix are forwarded to Plaid as android_package_name with redirect_uri left blank, per Plaid's per-platform requirements.","examples":["https://app.example.com/plaid/oauth-return","com.example.app"],"type":"string"}}},{"type":"undefined"}]}},"multipart/form-data":{"schema":{"anyOf":[{"type":"object","properties":{"redirectUri":{"minLength":1,"description":"Plaid OAuth target. For web or iOS, pass an https:// URL (web return URL or iOS universal link). For Android, pass the package name (e.g. com.example.app) — values without an https:// prefix are forwarded to Plaid as android_package_name with redirect_uri left blank, per Plaid's per-platform requirements.","examples":["https://app.example.com/plaid/oauth-return","com.example.app"],"type":"string"}}},{"type":"undefined"}]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"linkToken":{"description":"Token to initialize Plaid Link SDK","type":"string"},"hostedLinkUrl":{"description":"Plaid-hosted URL for bank linking. Open in browser or webview. Null if hosted link was not requested.","anyOf":[{"type":"string"},{"type":"null"}]},"expiration":{"type":"string"},"requestId":{"type":"string"}},"required":["linkToken","hostedLinkUrl","expiration","requestId"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1Bank-accountsLink-token"}},"/v1/bank-accounts/link-complete":{"post":{"tags":["Bank Accounts"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Complete bank account linking","description":"Completes the Plaid Link flow by exchanging the public token, retrieving account details, and storing the linked bank accounts.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"publicToken":{"description":"Public token returned by Plaid Link on success","type":"string"},"accountIds":{"minItems":1,"description":"IDs of the accounts the user selected in Plaid Link","type":"array","items":{"type":"string"}},"institutionId":{"type":"string"},"institutionName":{"type":"string"}},"required":["publicToken","accountIds"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"publicToken":{"description":"Public token returned by Plaid Link on success","type":"string"},"accountIds":{"minItems":1,"description":"IDs of the accounts the user selected in Plaid Link","type":"array","items":{"type":"string"}},"institutionId":{"type":"string"},"institutionName":{"type":"string"}},"required":["publicToken","accountIds"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"publicToken":{"description":"Public token returned by Plaid Link on success","type":"string"},"accountIds":{"minItems":1,"description":"IDs of the accounts the user selected in Plaid Link","type":"array","items":{"type":"string"}},"institutionId":{"type":"string"},"institutionName":{"type":"string"}},"required":["publicToken","accountIds"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"bankAccounts":{"description":"Bank accounts linked by this Plaid Link completion.","type":"array","items":{"description":"Bank account details. The `type` field indicates the account variant.","anyOf":[{"description":"US bank account response","type":"object","properties":{"id":{"description":"Unique identifier for the bank account","examples":["ba_abc123"],"type":"string"},"status":{"description":"Current status of the account","examples":["active"],"anyOf":[{"const":"active","type":"string"},{"const":"pending","type":"string"},{"const":"inactive","type":"string"},{"const":"rejected","type":"string"}]},"accountHolderName":{"description":"Name of the account holder","examples":["John Doe"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"supportedRails":{"description":"Payment rails available for this account","examples":[["ach_standard","rtp"]],"type":"array","items":{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]}},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"},"createdAt":{"description":"When the account was created","format":"date-time","type":"string"},"fundingSourceId":{"description":"Associated opaque public funding source identifier, or null when no funding source exists for this bank account.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"const":"us","type":"string"},"currency":{"const":"USD","type":"string"},"accountNumberLast4":{"description":"Last 4 digits of account number","examples":["6789"],"type":"string"},"routingNumberLast4":{"description":"Last 4 digits of routing number","examples":["0021"],"type":"string"},"accountSubtype":{"description":"Type of bank account (checking or savings)","examples":["checking"],"anyOf":[{"const":"checking","type":"string"},{"const":"savings","type":"string"}]}},"required":["id","status","accountHolderName","supportedRails","createdAt","fundingSourceId","type","currency","accountNumberLast4","routingNumberLast4"]},{"description":"Canadian bank account response","type":"object","properties":{"id":{"description":"Unique identifier for the bank account","examples":["ba_abc123"],"type":"string"},"status":{"description":"Current status of the account","examples":["active"],"anyOf":[{"const":"active","type":"string"},{"const":"pending","type":"string"},{"const":"inactive","type":"string"},{"const":"rejected","type":"string"}]},"accountHolderName":{"description":"Name of the account holder","examples":["John Doe"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"supportedRails":{"description":"Payment rails available for this account","examples":[["ach_standard","rtp"]],"type":"array","items":{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]}},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"},"createdAt":{"description":"When the account was created","format":"date-time","type":"string"},"fundingSourceId":{"description":"Associated opaque public funding source identifier, or null when no funding source exists for this bank account.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"const":"ca","type":"string"},"currency":{"const":"CAD","type":"string"},"accountNumberLast4":{"description":"Last 4 digits of account number","examples":["4567"],"type":"string"},"institutionNumber":{"description":"3-digit institution number","examples":["001"],"type":"string"},"transitNumberLast3":{"description":"Last 3 digits of transit number","examples":["345"],"type":"string"},"accountSubtype":{"description":"Type of bank account (checking or savings)","examples":["checking"],"anyOf":[{"const":"checking","type":"string"},{"const":"savings","type":"string"}]}},"required":["id","status","accountHolderName","supportedRails","createdAt","fundingSourceId","type","currency","accountNumberLast4","institutionNumber","transitNumberLast3"]},{"description":"UK bank account response","type":"object","properties":{"id":{"description":"Unique identifier for the bank account","examples":["ba_abc123"],"type":"string"},"status":{"description":"Current status of the account","examples":["active"],"anyOf":[{"const":"active","type":"string"},{"const":"pending","type":"string"},{"const":"inactive","type":"string"},{"const":"rejected","type":"string"}]},"accountHolderName":{"description":"Name of the account holder","examples":["John Doe"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"supportedRails":{"description":"Payment rails available for this account","examples":[["ach_standard","rtp"]],"type":"array","items":{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]}},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"},"createdAt":{"description":"When the account was created","format":"date-time","type":"string"},"fundingSourceId":{"description":"Associated opaque public funding source identifier, or null when no funding source exists for this bank account.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"const":"uk","type":"string"},"currency":{"const":"GBP","type":"string"},"accountNumberLast4":{"description":"Last 4 digits of account number","examples":["2345"],"type":"string"},"sortCode":{"description":"6-digit sort code (not sensitive)","examples":["108800"],"type":"string"}},"required":["id","status","accountHolderName","supportedRails","createdAt","fundingSourceId","type","currency","accountNumberLast4","sortCode"]},{"description":"IBAN bank account response","type":"object","properties":{"id":{"description":"Unique identifier for the bank account","examples":["ba_abc123"],"type":"string"},"status":{"description":"Current status of the account","examples":["active"],"anyOf":[{"const":"active","type":"string"},{"const":"pending","type":"string"},{"const":"inactive","type":"string"},{"const":"rejected","type":"string"}]},"accountHolderName":{"description":"Name of the account holder","examples":["John Doe"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"supportedRails":{"description":"Payment rails available for this account","examples":[["ach_standard","rtp"]],"type":"array","items":{"description":"Fiat delivery rail.\n\n- `ach_standard`: ACH bank transfer, next business day.\n- `ach_same_day`: ACH same-day transfer, delivered same business day.\n- `rtp`: Real-time payment, seconds, 24/7.\n- `wire`: Wire transfer, same/next day.\n- `eft`: Electronic funds transfer, 1-2 business days.\n- `sepa`: SEPA transfer (EU), 1-2 business days.\n- `faster_payments`: UK Faster Payments, near-instant.\n- `push_to_card`: Push to debit card, minutes.\n- `bill_pay`: Bill payment rail.\n- `card_deposit`: Deposit to crypto card.","examples":["ach_standard"],"anyOf":[{"const":"ach_standard","type":"string"},{"const":"ach_same_day","type":"string"},{"const":"rtp","type":"string"},{"const":"wire","type":"string"},{"const":"eft","type":"string"},{"const":"sepa","type":"string"},{"const":"faster_payments","type":"string"},{"const":"push_to_card","type":"string"},{"const":"bill_pay","type":"string"},{"const":"card_deposit","type":"string"}]}},"label":{"description":"Friendly name for the account","examples":["Primary Checking"],"type":"string"},"createdAt":{"description":"When the account was created","format":"date-time","type":"string"},"fundingSourceId":{"description":"Associated opaque public funding source identifier, or null when no funding source exists for this bank account.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"const":"iban","type":"string"},"currency":{"description":"Fiat currency code","examples":["USD"],"anyOf":[{"const":"USD","type":"string"},{"const":"CAD","type":"string"},{"const":"EUR","type":"string"},{"const":"GBP","type":"string"}]},"ibanLast4":{"description":"Last 4 characters of IBAN","examples":["3000"],"type":"string"},"bic":{"description":"Bank Identifier Code","examples":["COBADEFFXXX"],"type":"string"}},"required":["id","status","accountHolderName","supportedRails","createdAt","fundingSourceId","type","currency","ibanLast4"]}]}}},"required":["bankAccounts"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1Bank-accountsLink-complete"}},"/v1/bills/":{"get":{"tags":["Bills"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"List bills","description":"Returns all linked bills for the authenticated user.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique identifier for the bill","type":"string"},"status":{"type":"string","enum":["active","pending","inactive","rejected"]},"name":{"description":"Provider bill name or generated fallback label","examples":["Chase Sapphire Card","Credit Card ··· 1234"],"type":"string"},"institution":{"description":"Financial institution details","type":"object","properties":{"name":{"description":"Name of the financial institution","examples":["Chase"],"type":"string"},"logo":{"description":"URL to institution logo","examples":["https://example.com/chase-logo.png"],"type":"string"}},"required":["name"]},"type":{"type":"string","enum":["auto_loan","credit_card","loan","mobile_phone","mortgage","student_loan","utility","unknown"]},"accountNumberLast4":{"description":"Last 4 digits of the bill account number","examples":["1234"],"type":"string"},"currency":{"type":"string","enum":["USD","CAD","EUR","GBP"]},"liability":{"description":"Liability data from the bill provider. All fields are optional and amounts are decimal strings.","type":"object","properties":{"balance":{"description":"Current outstanding balance","examples":["1234.56"],"type":"string"},"statementBalance":{"description":"Most recent statement balance","examples":["1100.00"],"type":"string"},"minimumPayment":{"description":"Minimum payment due","examples":["25.00"],"type":"string"},"lastPaymentAmount":{"description":"Amount of the last payment made","examples":["150.00"],"type":"string"},"lastPaymentDate":{"description":"Date of the last payment","format":"date","examples":["2025-03-01"],"type":"string"},"nextPaymentDueDate":{"description":"Date the next payment is due","format":"date","examples":["2025-04-01"],"type":"string"},"amountPastDue":{"description":"Amount currently past due","examples":["0.00"],"type":"string"}}},"createdAt":{"description":"When the bill was linked","format":"date-time","type":"string"}},"required":["id","status","name","type","currency","createdAt"]}}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Bills"}},"/v1/bills/activate":{"post":{"tags":["Bills"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Activate bills","description":"Starts bills activation for the authenticated user and, when possible, completes the initial bill sync in the same request.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"consent":{"type":"object","properties":{"termsText":{"minLength":1,"type":"string"},"termsTextVersion":{"minLength":1,"type":"string"},"acceptedAt":{"format":"date-time","type":"string"}},"required":["termsText","termsTextVersion","acceptedAt"]},"clientContext":{"type":"object","properties":{"clientIp":{"type":"string"},"userAgent":{"type":"string"},"sessionId":{"type":"string"},"deviceId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string"}}}},"required":["consent"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"consent":{"type":"object","properties":{"termsText":{"minLength":1,"type":"string"},"termsTextVersion":{"minLength":1,"type":"string"},"acceptedAt":{"format":"date-time","type":"string"}},"required":["termsText","termsTextVersion","acceptedAt"]},"clientContext":{"type":"object","properties":{"clientIp":{"type":"string"},"userAgent":{"type":"string"},"sessionId":{"type":"string"},"deviceId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string"}}}},"required":["consent"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"consent":{"type":"object","properties":{"termsText":{"minLength":1,"type":"string"},"termsTextVersion":{"minLength":1,"type":"string"},"acceptedAt":{"format":"date-time","type":"string"}},"required":["termsText","termsTextVersion","acceptedAt"]},"clientContext":{"type":"object","properties":{"clientIp":{"type":"string"},"userAgent":{"type":"string"},"sessionId":{"type":"string"},"deviceId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string"}}}},"required":["consent"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["activated","already_active","verification_required","failed"]},"activationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"verification":{"type":"object","properties":{"status":{"type":"string","enum":["information_required","challenge_required"]},"challenge":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"options":{"type":"array","items":{"type":"string"}}},"required":["id","prompt","options"]}}},"required":["questions"]}},"required":["status"]},"liabilitiesSynced":{"type":"number"},"syncedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["status","activationId"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1BillsActivate"}},"/v1/bills/start_verification":{"post":{"tags":["Bills"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Start bills verification","description":"Starts the bills activation fallback verification step using the authenticated user's verified identity data.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"activationId":{"minLength":1,"type":"string"}},"required":["activationId"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"activationId":{"minLength":1,"type":"string"}},"required":["activationId"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"activationId":{"minLength":1,"type":"string"}},"required":["activationId"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["activated","already_active","verification_required","failed"]},"activationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"verification":{"type":"object","properties":{"status":{"type":"string","enum":["information_required","challenge_required"]},"challenge":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"options":{"type":"array","items":{"type":"string"}}},"required":["id","prompt","options"]}}},"required":["questions"]}},"required":["status"]},"liabilitiesSynced":{"type":"number"},"syncedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["status","activationId"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1BillsStart_verification"}},"/v1/bills/submit_verification/{activationId}":{"post":{"tags":["Bills"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Submit bills verification challenge","description":"Submits challenge responses for an in-progress bills activation verification flow.","parameters":[{"name":"activationId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"responses":{"minItems":1,"type":"array","items":{"type":"object","properties":{"questionId":{"type":"string"},"value":{"minLength":1,"type":"string"}},"required":["value"]}}},"required":["responses"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"responses":{"minItems":1,"type":"array","items":{"type":"object","properties":{"questionId":{"type":"string"},"value":{"minLength":1,"type":"string"}},"required":["value"]}}},"required":["responses"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"responses":{"minItems":1,"type":"array","items":{"type":"object","properties":{"questionId":{"type":"string"},"value":{"minLength":1,"type":"string"}},"required":["value"]}}},"required":["responses"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["activated","already_active","verification_required","failed"]},"activationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"verification":{"type":"object","properties":{"status":{"type":"string","enum":["information_required","challenge_required"]},"challenge":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"options":{"type":"array","items":{"type":"string"}}},"required":["id","prompt","options"]}}},"required":["questions"]}},"required":["status"]},"liabilitiesSynced":{"type":"number"},"syncedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["status","activationId"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1BillsSubmit_verificationByActivationId"}},"/v1/bills/token":{"post":{"tags":["Bills"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Link card via token","description":"Link a card to your account using an encrypted token from the TabaPay Browser SDK. Optionally overwrites an existing bill.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"description":"Encrypted card token from TabaPay SDK","type":"string"},"billId":{"description":"Existing bill ID to overwrite with TabaPay","type":"string"}},"required":["token"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"token":{"description":"Encrypted card token from TabaPay SDK","type":"string"},"billId":{"description":"Existing bill ID to overwrite with TabaPay","type":"string"}},"required":["token"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"token":{"description":"Encrypted card token from TabaPay SDK","type":"string"},"billId":{"description":"Existing bill ID to overwrite with TabaPay","type":"string"}},"required":["token"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"billId":{"type":"string"},"tabapayAccountId":{"type":"string"},"last4":{"type":"string"}},"required":["billId","tabapayAccountId","last4"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1BillsToken"}},"/v1/cards/":{"get":{"tags":["Cards"],"security":[{"bearerAuth":[]}],"summary":"List cards","description":"Retrieves all cards for the authenticated user.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"description":"The unique identifier for the card","type":"string"},"status":{"type":"string","enum":["active","frozen","not_activated","cancelled"]},"type":{"type":"string","enum":["physical","virtual"]},"country":{"description":"The country code (e.g., US)","type":"string"},"currency":{"description":"The currency code (e.g., USD)","type":"string"},"last4":{"description":"The last 4 digits of the card number","type":"string"},"limit":{"description":"The spend limit for the card, or null if not set","anyOf":[{"type":"object","properties":{"amount":{"pattern":"^\\d+(\\.\\d{1,2})?$","description":"The spend limit amount in USD","examples":["200.56","100.00"],"type":"string"},"interval":{"description":"The interval for the spend limit","examples":["weekly","monthly"],"anyOf":[{"const":"daily","type":"string"},{"const":"weekly","type":"string"},{"const":"monthly","type":"string"},{"const":"yearly","type":"string"},{"const":"all_time","type":"string"},{"const":"per_transaction","type":"string"}]}},"required":["amount","interval"]},{"type":"null"}]},"payable":{"description":"Whether the card can be used for payments","type":"boolean"},"renderSecret":{"description":"The secret used for rendering sensitive card details","type":"string"},"createdAt":{"description":"ISO 8601 timestamp of card creation","type":"string"}},"required":["id","status","type","country","currency","last4","limit","payable","renderSecret","createdAt"]}}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Cards"}},"/v1/cards/balance":{"get":{"tags":["Cards"],"security":[{"bearerAuth":[]}],"summary":"Get card program balance","description":"Retrieves the card program balance for the authenticated user.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"balance":{"description":"Card program balance in USD","examples":["100.00","0.00","1234.56"],"type":"string"}},"required":["balance"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1CardsBalance"}},"/v1/cards/{cardId}":{"get":{"tags":["Cards"],"security":[{"bearerAuth":[]}],"summary":"Get card","description":"Retrieves a single card by ID for the authenticated user.","parameters":[{"name":"cardId","in":"path","required":true,"schema":{"minLength":1,"description":"The id of the card to retrieve","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"The unique identifier for the card","type":"string"},"status":{"type":"string","enum":["active","frozen","not_activated","cancelled"]},"type":{"type":"string","enum":["physical","virtual"]},"country":{"description":"The country code (e.g., US)","type":"string"},"currency":{"description":"The currency code (e.g., USD)","type":"string"},"last4":{"description":"The last 4 digits of the card number","type":"string"},"limit":{"description":"The spend limit for the card, or null if not set","anyOf":[{"type":"object","properties":{"amount":{"pattern":"^\\d+(\\.\\d{1,2})?$","description":"The spend limit amount in USD","examples":["200.56","100.00"],"type":"string"},"interval":{"description":"The interval for the spend limit","examples":["weekly","monthly"],"anyOf":[{"const":"daily","type":"string"},{"const":"weekly","type":"string"},{"const":"monthly","type":"string"},{"const":"yearly","type":"string"},{"const":"all_time","type":"string"},{"const":"per_transaction","type":"string"}]}},"required":["amount","interval"]},{"type":"null"}]},"payable":{"description":"Whether the card can be used for payments","type":"boolean"},"renderSecret":{"description":"The secret used for rendering sensitive card details","type":"string"},"createdAt":{"description":"ISO 8601 timestamp of card creation","type":"string"}},"required":["id","status","type","country","currency","last4","limit","payable","renderSecret","createdAt"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1CardsByCardId"}},"/v1/cards/{cardId}/transactions":{"get":{"tags":["Cards"],"security":[{"bearerAuth":[]}],"summary":"List card transactions","description":"Retrieves a paginated list of transactions for a specific card.","parameters":[{"name":"cardId","in":"path","required":true,"schema":{"minLength":1,"description":"The id of the card to list transactions for","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Maximum number of results to return","default":50,"minimum":1,"maximum":100,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Maximum number of results to return","default":50,"minimum":1,"maximum":100,"type":"number"}]}},{"name":"cursor","in":"query","required":false,"schema":{"description":"Opaque cursor for pagination. Use the `nextCursor` value from the previous response.","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["desc","asc"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending","posted","declined","reversed","expired"]}},{"name":"fromDate","in":"query","required":false,"schema":{"description":"Filter start date (ISO 8601)","type":"string"}},{"name":"toDate","in":"query","required":false,"schema":{"description":"Filter end date (ISO 8601)","type":"string"}},{"name":"search","in":"query","required":false,"schema":{"description":"Search by merchant name or description","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Transaction ID","type":"string"},"cardId":{"description":"Card ID","type":"string"},"merchantName":{"description":"Merchant name","type":"string"},"amount":{"description":"Transaction amount in USD","examples":["12.34"],"type":"string"},"currency":{"description":"Currency code (e.g., USD)","type":"string"},"localAmount":{"description":"Transaction amount in local currency","examples":["12.34"],"type":"string"},"localCurrency":{"description":"Local currency code (e.g., EUR)","type":"string"},"mccCode":{"description":"Merchant category code (e.g., 5411)","type":"string"},"status":{"type":"string","enum":["pending","posted","declined","reversed","expired"]},"disputeId":{"description":"Associated dispute ID, if any","anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"description":"ISO 8601 timestamp","type":"string"}},"required":["id","cardId","merchantName","amount","currency","status","disputeId","createdAt"]}},"hasMore":{"description":"Whether there are more results","type":"boolean"},"nextCursor":{"description":"Cursor for fetching the next page","type":"string"}},"required":["data","hasMore"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1CardsByCardIdTransactions"}},"/v1/cards/{cardId}/pin":{"post":{"tags":["Cards"],"security":[{"bearerAuth":[]}],"summary":"Get card PIN","description":"Retrieves the encrypted card PIN.\n\n**Encryption:**\nThe PIN is returned as an AES-128-GCM encrypted payload. Use the session's AES key to decrypt it.\n\n**PIN Block Format (ISO 9564-1 Format 2):**\nAfter decryption, the plaintext is a 16-character PIN block with the following structure:\n- Byte 0: Control field (`2` indicates Format 2)\n- Byte 1: PIN length in hexadecimal (4-12)\n- Bytes 2-(1+N): The actual PIN digits\n- Remaining bytes: Padding (`F`)\n\n**Example:**\nA 4-digit PIN \"1234\" would be encoded as: `241234FFFFFFFFFF`\n\n**Parsing the PIN block:**\n```\nconst pinLength = parseInt(pinBlock[1], 16);\nconst pin = pinBlock.slice(2, 2 + pinLength);\n```","parameters":[{"name":"cardId","in":"path","required":true,"schema":{"minLength":1,"description":"The id of the card whose pin is being requested","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"encryptedKey":{"minLength":1,"description":"Base64-encoded RSA-encrypted AES-128 key used for PIN decryption","type":"string"}},"required":["encryptedKey"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"encryptedKey":{"minLength":1,"description":"Base64-encoded RSA-encrypted AES-128 key used for PIN decryption","type":"string"}},"required":["encryptedKey"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"encryptedKey":{"minLength":1,"description":"Base64-encoded RSA-encrypted AES-128 key used for PIN decryption","type":"string"}},"required":["encryptedKey"]}}}},"responses":{"200":{"description":"The encrypted PIN block for the card. When decrypted, the plaintext is an ISO 9564-1 Format 2 PIN block.","content":{"application/json":{"schema":{"description":"The encrypted PIN block for the card. When decrypted, the plaintext is an ISO 9564-1 Format 2 PIN block.","type":"object","properties":{"encryptedPin":{"type":"object","properties":{"iv":{"minLength":1,"description":"Base64-encoded initialization vector for AES-GCM decryption","type":"string"},"data":{"minLength":1,"description":"Base64-encoded AES-GCM encrypted PIN block","type":"string"}},"required":["iv","data"]}},"required":["encryptedPin"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1CardsByCardIdPin"}},"/v1/cards/{cardId}/update_pin":{"post":{"tags":["Cards"],"security":[{"bearerAuth":[]}],"summary":"Update card PIN","description":"Updates the card PIN.\n\n**PIN Block Format (ISO 9564-1 Format 2):**\nThe PIN must be formatted as a 16-character PIN block before encryption:\n- Byte 0: Control field (`2` indicates Format 2)\n- Byte 1: PIN length in hexadecimal (4-12)\n- Bytes 2-(1+N): The actual PIN digits\n- Remaining bytes: Padding (`F`)\n\n**Example:**\nA 4-digit PIN \"5678\" would be encoded as: `245678FFFFFFFFFF`\n\n**Formatting the PIN block:**\n```\nconst pinBlock = `2${pinLength.toString(16)}${pin}${'F'.repeat(14 - pinLength)}`;\n```\n\n**Encryption:**\n1. Generate a random AES-128 key\n2. Encrypt the PIN block using AES-128-GCM with the random key\n3. RSA-encrypt the AES key using the server's public key\n4. Send the RSA-encrypted key as `encryptedKey` and the AES-encrypted PIN block as `encryptedPin`\n\n**Validation:**\n- PIN must be 4-12 digits\n- Weak PINs (repeating like 1111, sequential like 1234) are rejected","parameters":[{"name":"cardId","in":"path","required":true,"schema":{"minLength":1,"description":"The id of the card whose pin is being updated","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"encryptedKey":{"minLength":1,"description":"Base64-encoded RSA-encrypted AES-128 key used for PIN encryption","type":"string"},"encryptedPin":{"description":"AES-128-GCM encrypted PIN block. The plaintext must be an ISO 9564-1 Format 2 PIN block.","type":"object","properties":{"iv":{"minLength":1,"description":"Base64-encoded initialization vector for AES-GCM decryption","type":"string"},"data":{"minLength":1,"description":"Base64-encoded AES-GCM encrypted PIN block","type":"string"}},"required":["iv","data"]}},"required":["encryptedKey","encryptedPin"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"encryptedKey":{"minLength":1,"description":"Base64-encoded RSA-encrypted AES-128 key used for PIN encryption","type":"string"},"encryptedPin":{"description":"AES-128-GCM encrypted PIN block. The plaintext must be an ISO 9564-1 Format 2 PIN block.","type":"object","properties":{"iv":{"minLength":1,"description":"Base64-encoded initialization vector for AES-GCM decryption","type":"string"},"data":{"minLength":1,"description":"Base64-encoded AES-GCM encrypted PIN block","type":"string"}},"required":["iv","data"]}},"required":["encryptedKey","encryptedPin"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"encryptedKey":{"minLength":1,"description":"Base64-encoded RSA-encrypted AES-128 key used for PIN encryption","type":"string"},"encryptedPin":{"description":"AES-128-GCM encrypted PIN block. The plaintext must be an ISO 9564-1 Format 2 PIN block.","type":"object","properties":{"iv":{"minLength":1,"description":"Base64-encoded initialization vector for AES-GCM decryption","type":"string"},"data":{"minLength":1,"description":"Base64-encoded AES-GCM encrypted PIN block","type":"string"}},"required":["iv","data"]}},"required":["encryptedKey","encryptedPin"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1CardsByCardIdUpdate_pin"}},"/v1/cards/{cardId}/update_status":{"post":{"tags":["Cards"],"security":[{"bearerAuth":[]}],"summary":"Update card status","description":"Updates the card status. Valid statuses are: active, locked, canceled.","parameters":[{"name":"cardId","in":"path","required":true,"schema":{"minLength":1,"description":"The id of the card whose status is being updated","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["active","locked","canceled"]}},"required":["status"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["active","locked","canceled"]}},"required":["status"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["active","locked","canceled"]}},"required":["status"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"The unique identifier for the card","type":"string"},"status":{"type":"string","enum":["active","frozen","not_activated","cancelled"]},"type":{"type":"string","enum":["physical","virtual"]},"country":{"description":"The country code (e.g., US)","type":"string"},"currency":{"description":"The currency code (e.g., USD)","type":"string"},"last4":{"description":"The last 4 digits of the card number","type":"string"},"limit":{"description":"The spend limit for the card, or null if not set","anyOf":[{"type":"object","properties":{"amount":{"pattern":"^\\d+(\\.\\d{1,2})?$","description":"The spend limit amount in USD","examples":["200.56","100.00"],"type":"string"},"interval":{"description":"The interval for the spend limit","examples":["weekly","monthly"],"anyOf":[{"const":"daily","type":"string"},{"const":"weekly","type":"string"},{"const":"monthly","type":"string"},{"const":"yearly","type":"string"},{"const":"all_time","type":"string"},{"const":"per_transaction","type":"string"}]}},"required":["amount","interval"]},{"type":"null"}]},"payable":{"description":"Whether the card can be used for payments","type":"boolean"},"renderSecret":{"description":"The secret used for rendering sensitive card details","type":"string"},"createdAt":{"description":"ISO 8601 timestamp of card creation","type":"string"}},"required":["id","status","type","country","currency","last4","limit","payable","renderSecret","createdAt"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1CardsByCardIdUpdate_status"}},"/v1/cards/{cardId}/update_limit":{"post":{"tags":["Cards"],"security":[{"bearerAuth":[]}],"summary":"Update card spend limit","description":"Updates the card spend limit with a specified amount and interval (daily, weekly, monthly, yearly, all_time, per_transaction).","parameters":[{"name":"cardId","in":"path","required":true,"schema":{"minLength":1,"description":"The id of the card whose limit is being updated","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"spendLimit":{"type":"object","properties":{"amount":{"pattern":"^\\d+(\\.\\d{1,2})?$","description":"The spend limit amount in USD as a decimal string","examples":["200.56","100.00","1.00"],"type":"string"},"interval":{"type":"string","enum":["daily","weekly","monthly","yearly","all_time","per_transaction"]}},"required":["amount","interval"]}},"required":["spendLimit"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"spendLimit":{"type":"object","properties":{"amount":{"pattern":"^\\d+(\\.\\d{1,2})?$","description":"The spend limit amount in USD as a decimal string","examples":["200.56","100.00","1.00"],"type":"string"},"interval":{"type":"string","enum":["daily","weekly","monthly","yearly","all_time","per_transaction"]}},"required":["amount","interval"]}},"required":["spendLimit"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"spendLimit":{"type":"object","properties":{"amount":{"pattern":"^\\d+(\\.\\d{1,2})?$","description":"The spend limit amount in USD as a decimal string","examples":["200.56","100.00","1.00"],"type":"string"},"interval":{"type":"string","enum":["daily","weekly","monthly","yearly","all_time","per_transaction"]}},"required":["amount","interval"]}},"required":["spendLimit"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"The unique identifier for the card","type":"string"},"status":{"type":"string","enum":["active","frozen","not_activated","cancelled"]},"type":{"type":"string","enum":["physical","virtual"]},"country":{"description":"The country code (e.g., US)","type":"string"},"currency":{"description":"The currency code (e.g., USD)","type":"string"},"last4":{"description":"The last 4 digits of the card number","type":"string"},"limit":{"description":"The spend limit for the card, or null if not set","anyOf":[{"type":"object","properties":{"amount":{"pattern":"^\\d+(\\.\\d{1,2})?$","description":"The spend limit amount in USD","examples":["200.56","100.00"],"type":"string"},"interval":{"description":"The interval for the spend limit","examples":["weekly","monthly"],"anyOf":[{"const":"daily","type":"string"},{"const":"weekly","type":"string"},{"const":"monthly","type":"string"},{"const":"yearly","type":"string"},{"const":"all_time","type":"string"},{"const":"per_transaction","type":"string"}]}},"required":["amount","interval"]},{"type":"null"}]},"payable":{"description":"Whether the card can be used for payments","type":"boolean"},"renderSecret":{"description":"The secret used for rendering sensitive card details","type":"string"},"createdAt":{"description":"ISO 8601 timestamp of card creation","type":"string"}},"required":["id","status","type","country","currency","last4","limit","payable","renderSecret","createdAt"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1CardsByCardIdUpdate_limit"}},"/v1/integrator/connect/sessions":{"post":{"tags":["Integrator Connect"],"security":[{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Create a connect session","description":"Creates a Spritz Connect session for an existing Spritz user to authorize the integrator.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"redirectUri":{"minLength":1,"description":"Callback URI that receives the authorization code.","type":"string"},"state":{"minLength":1,"description":"Opaque integrator state returned unchanged after approval.","type":"string"}},"required":["redirectUri"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"redirectUri":{"minLength":1,"description":"Callback URI that receives the authorization code.","type":"string"},"state":{"minLength":1,"description":"Opaque integrator state returned unchanged after approval.","type":"string"}},"required":["redirectUri"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"redirectUri":{"minLength":1,"description":"Callback URI that receives the authorization code.","type":"string"},"state":{"minLength":1,"description":"Opaque integrator state returned unchanged after approval.","type":"string"}},"required":["redirectUri"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string"},"authorizationUrl":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"}},"required":["sessionId","authorizationUrl","expiresAt"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1IntegratorConnectSessions"}},"/v1/integrator/connect/token":{"post":{"tags":["Integrator Connect"],"security":[{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Exchange connect code for API key","description":"Exchanges an authorization code for the long-lived users-service API key minted for this integrator/user grant.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"minLength":1,"description":"Authorization code returned after the user approves the session.","type":"string"}},"required":["code"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"code":{"minLength":1,"description":"Authorization code returned after the user approves the session.","type":"string"}},"required":["code"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"code":{"minLength":1,"description":"Authorization code returned after the user approves the session.","type":"string"}},"required":["code"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"apiKey":{"type":"string"},"userId":{"type":"string"},"email":{"type":"string"},"grantId":{"type":"string"},"tokenId":{"anyOf":[{"type":"string"},{"type":"null"}]},"keyPrefix":{"type":"string"}},"required":["apiKey","userId","email","grantId","tokenId","keyPrefix"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1IntegratorConnectToken"}},"/v1/connect/sessions/{sessionId}":{"get":{"tags":["Integrator Connect"],"security":[{"bearerAuth":[]}],"summary":"Get connect session","description":"Returns the pending Spritz Connect session for the signed-in user to review.","parameters":[{"name":"sessionId","in":"path","required":true,"schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string"},"integratorId":{"type":"string"},"integratorName":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"}},"required":["sessionId","integratorId","integratorName","status","expiresAt"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1ConnectSessionsBySessionId"}},"/v1/connect/sessions/{sessionId}/approve":{"post":{"tags":["Integrator Connect"],"security":[{"bearerAuth":[]}],"summary":"Approve connect session","description":"Approves the Spritz Connect session and returns a callback URI containing the authorization code.","parameters":[{"name":"sessionId","in":"path","required":true,"schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"redirectUri":{"type":"string"},"callbackUri":{"type":"string"},"code":{"type":"string"},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"expiresAt":{"format":"date-time","type":"string"}},"required":["redirectUri","callbackUri","code","state","expiresAt"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1ConnectSessionsBySessionIdApprove"}},"/v1/integrator/tokens":{"post":{"tags":["Integrator"],"security":[{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Exchange credentials for JWT token","description":"Exchange HMAC-signed request for a short-lived JWT token.\n\n**Authentication**: Requires HMAC signature authentication with integrator credentials.\n\n**Use Case**: Backend integrators can exchange their HMAC credentials for a JWT token that can be used from frontend applications.\n\n**Token Lifetime**: Maximum 3600 seconds (60 minutes), default 3600 seconds.\n\n**Rate Limiting**: 100 token exchanges per minute per integrator.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userApiKey":{"description":"User API key for token exchange","minLength":1,"examples":["ak_N2FjZTk3ZjMtsTWiZF00MGU0LWIxYTMtMTY0ZmM3MzJiNTdm"],"type":"string"},"expiresIn":{"description":"Token lifetime in seconds (default: 3600, max: 3600)","minimum":1,"maximum":3600,"default":3600,"examples":[3600,1800,600],"type":"number"}},"required":["userApiKey"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"userApiKey":{"description":"User API key for token exchange","minLength":1,"examples":["ak_N2FjZTk3ZjMtsTWiZF00MGU0LWIxYTMtMTY0ZmM3MzJiNTdm"],"type":"string"},"expiresIn":{"description":"Token lifetime in seconds (default: 3600, max: 3600)","minimum":1,"maximum":3600,"default":3600,"examples":[3600,1800,600],"type":"number"}},"required":["userApiKey"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"userApiKey":{"description":"User API key for token exchange","minLength":1,"examples":["ak_N2FjZTk3ZjMtsTWiZF00MGU0LWIxYTMtMTY0ZmM3MzJiNTdm"],"type":"string"},"expiresIn":{"description":"Token lifetime in seconds (default: 3600, max: 3600)","minimum":1,"maximum":3600,"default":3600,"examples":[3600,1800,600],"type":"number"}},"required":["userApiKey"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"accessToken":{"description":"JWT access token with spr_ prefix","examples":["spr_eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."],"type":"string"},"userId":{"description":"The internal ID of the authorized user","examples":["6a0748181891e998a04454db"],"type":"string"},"tokenType":{"description":"Token type (always 'Bearer')","const":"Bearer","type":"string"},"expiresIn":{"description":"Token lifetime in seconds","examples":[3600],"type":"number"},"expiresAt":{"description":"ISO 8601 timestamp when token expires","format":"date-time","examples":["2026-05-15T17:21:44.006Z"],"type":"string"}},"required":["accessToken","userId","tokenType","expiresIn","expiresAt"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1IntegratorTokens"}},"/v1/integrator/":{"get":{"tags":["Integrator"],"security":[{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Get integrator profile","description":"Returns the authenticated integrator's profile information.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Unique identifier for the integrator","examples":["int_abc123"],"type":"string"},"integratorKey":{"description":"Public integrator API key used in X-Integrator-Key","examples":["int_abc123"],"type":"string"},"name":{"description":"Name of the integrator","examples":["My Integration Service"],"type":"string"},"email":{"description":"Contact email for the integrator","format":"email","examples":["contact@integration.com"],"type":"string"},"canSubsidizeUserFees":{"description":"Whether the integrator can subsidize user fees","type":"boolean"},"achDebitEnabled":{"description":"Whether ACH debit products are enabled for the integrator","type":"boolean"},"billPayEnabled":{"description":"Whether bill pay products are enabled for the integrator","type":"boolean"},"createdAt":{"description":"ISO 8601 timestamp of when the integrator was created","format":"date-time","examples":["2026-05-15T16:21:44.006Z"],"type":"string"}},"required":["id","integratorKey","name","email","canSubsidizeUserFees","achDebitEnabled","billPayEnabled","createdAt"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Integrator"}},"/v1/integrator/ach-debit/returns":{"get":{"tags":["Integrator"],"security":[{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"List ACH debit returns","description":"Returns ACH debit returns scoped to the authenticated integrator.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"description":"Maximum number of results to return","default":50,"minimum":1,"maximum":100,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Maximum number of results to return","default":50,"minimum":1,"maximum":100,"type":"number"}]}},{"name":"cursor","in":"query","required":false,"schema":{"description":"Opaque cursor from the previous response's `nextCursor` value","type":"string"}},{"name":"userId","in":"query","required":false,"schema":{"description":"Filter to one Spritz user ID","examples":["6a0748181891e998a04454d9"],"type":"string"}},{"name":"userIds","in":"query","required":false,"schema":{"description":"Comma-separated Spritz user IDs to include","type":"string"}},{"name":"search","in":"query","required":false,"schema":{"description":"Search by user ID, deposit ID, on-ramp ID, return ID, or return code","type":"string"}},{"name":"returnCode","in":"query","required":false,"schema":{"description":"ACH return code","examples":["R10"],"type":"string"}},{"name":"returnBucket","in":"query","required":false,"schema":{"type":"string","enum":["unauthorized","administrative","other"]}},{"name":"cryptoStateAtReturn","in":"query","required":false,"schema":{"type":"string","enum":["not_released","in_flight","partially_confirmed","fully_confirmed"]}},{"name":"lossOnly","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}},{"name":"userAction","in":"query","required":false,"schema":{"type":"string","enum":["none","review_required","disabled"]}},{"name":"occurredAfter","in":"query","required":false,"schema":{"format":"date-time","type":"string"}},{"name":"occurredBefore","in":"query","required":false,"schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Opaque public ACH debit return identifier","examples":["dr_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"depositId":{"description":"Opaque public ACH debit deposit identifier","examples":["dep_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"userId":{"description":"Spritz user ID associated with the returned deposit","examples":["6a0748181891e998a04454da"],"type":"string"},"sourceId":{"description":"Opaque public funding source identifier","examples":["fs_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"onRampId":{"anyOf":[{"type":"string"},{"type":"null"}]},"amountUsd":{"type":"string"},"currency":{"type":"string"},"returnCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"returnReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"occurredAt":{"format":"date-time","type":"string"},"cryptoStateAtReturn":{"type":"string","enum":["not_released","in_flight","partially_confirmed","fully_confirmed"]},"lossAmountUsd":{"type":"string"},"atRiskAmountUsd":{"type":"string"},"sourceAction":{"const":"disabled","type":"string"},"userAction":{"type":"string","enum":["none","review_required","disabled"]},"reportingBucket":{"type":"string","enum":["unauthorized","administrative","other"]}},"required":["id","depositId","userId","sourceId","onRampId","amountUsd","currency","returnCode","returnReason","occurredAt","cryptoStateAtReturn","lossAmountUsd","atRiskAmountUsd","sourceAction","userAction","reportingBucket"]}},"hasMore":{"description":"Whether there are more results","examples":[true],"type":"boolean"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","hasMore","nextCursor"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1IntegratorAch-debitReturns"}},"/v1/integrator/ach-debit/returns/{returnId}":{"get":{"tags":["Integrator"],"security":[{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Get an ACH debit return","description":"Returns a single ACH debit return scoped to the authenticated integrator.","parameters":[{"name":"returnId","in":"path","required":true,"schema":{"description":"Opaque public ACH debit return ID","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Opaque public ACH debit return identifier","examples":["dr_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"depositId":{"description":"Opaque public ACH debit deposit identifier","examples":["dep_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"userId":{"description":"Spritz user ID associated with the returned deposit","examples":["6a0748181891e998a04454da"],"type":"string"},"sourceId":{"description":"Opaque public funding source identifier","examples":["fs_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"onRampId":{"anyOf":[{"type":"string"},{"type":"null"}]},"amountUsd":{"type":"string"},"currency":{"type":"string"},"returnCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"returnReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"occurredAt":{"format":"date-time","type":"string"},"cryptoStateAtReturn":{"type":"string","enum":["not_released","in_flight","partially_confirmed","fully_confirmed"]},"lossAmountUsd":{"type":"string"},"atRiskAmountUsd":{"type":"string"},"sourceAction":{"const":"disabled","type":"string"},"userAction":{"type":"string","enum":["none","review_required","disabled"]},"reportingBucket":{"type":"string","enum":["unauthorized","administrative","other"]}},"required":["id","depositId","userId","sourceId","onRampId","amountUsd","currency","returnCode","returnReason","occurredAt","cryptoStateAtReturn","lossAmountUsd","atRiskAmountUsd","sourceAction","userAction","reportingBucket"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1IntegratorAch-debitReturnsByReturnId"}},"/v1/integrator/webhooks":{"get":{"tags":["Integrator"],"security":[{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Get webhooks","description":"Returns all webhooks configured for the integrator.","responses":{"200":{"description":"List of webhooks configured for the integrator","content":{"application/json":{"schema":{"description":"List of webhooks configured for the integrator","type":"array","items":{"type":"object","properties":{"id":{"description":"Unique identifier for the webhook","examples":["6a0748181891e998a04454dc"],"type":"string"},"events":{"description":"List of event types this webhook is subscribed to","type":"array","items":{"type":"string","enum":["account.created","account.updated","account.deleted","payment.created","payment.updated","payment.completed","payment.refunded","verification.status.updated","capabilities.updated","onramp.created","onramp.updated","onramp.completed","achDebitReturn.created","achDebitReturn.updated","*"]}},"url":{"description":"URL to which webhook payloads are delivered","format":"uri","examples":["https://api.example.com/webhooks"],"type":"string"},"failureCount":{"description":"Number of consecutive delivery failures","minimum":0,"examples":[0],"type":"number"},"disabled":{"description":"Whether the webhook is currently disabled","examples":[false],"type":"boolean"}},"required":["id","events","url","failureCount","disabled"]}}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1IntegratorWebhooks"},"post":{"tags":["Integrator"],"security":[{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Create webhook","description":"Creates a new webhook for the integrator.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"description":"URL to which webhook payloads will be delivered","format":"uri","examples":["https://api.example.com/webhooks"],"type":"string"},"events":{"description":"List of event types to subscribe to. Defaults to empty array.","default":[],"type":"array","items":{"type":"string","enum":["account.created","account.updated","account.deleted","payment.created","payment.updated","payment.completed","payment.refunded","verification.status.updated","capabilities.updated","onramp.created","onramp.updated","onramp.completed","achDebitReturn.created","achDebitReturn.updated","*"]}}},"required":["url"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"url":{"description":"URL to which webhook payloads will be delivered","format":"uri","examples":["https://api.example.com/webhooks"],"type":"string"},"events":{"description":"List of event types to subscribe to. Defaults to empty array.","default":[],"type":"array","items":{"type":"string","enum":["account.created","account.updated","account.deleted","payment.created","payment.updated","payment.completed","payment.refunded","verification.status.updated","capabilities.updated","onramp.created","onramp.updated","onramp.completed","achDebitReturn.created","achDebitReturn.updated","*"]}}},"required":["url"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"url":{"description":"URL to which webhook payloads will be delivered","format":"uri","examples":["https://api.example.com/webhooks"],"type":"string"},"events":{"description":"List of event types to subscribe to. Defaults to empty array.","default":[],"type":"array","items":{"type":"string","enum":["account.created","account.updated","account.deleted","payment.created","payment.updated","payment.completed","payment.refunded","verification.status.updated","capabilities.updated","onramp.created","onramp.updated","onramp.completed","achDebitReturn.created","achDebitReturn.updated","*"]}}},"required":["url"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Unique identifier for the webhook","examples":["6a0748181891e998a04454dc"],"type":"string"},"events":{"description":"List of event types this webhook is subscribed to","type":"array","items":{"type":"string","enum":["account.created","account.updated","account.deleted","payment.created","payment.updated","payment.completed","payment.refunded","verification.status.updated","capabilities.updated","onramp.created","onramp.updated","onramp.completed","achDebitReturn.created","achDebitReturn.updated","*"]}},"url":{"description":"URL to which webhook payloads are delivered","format":"uri","examples":["https://api.example.com/webhooks"],"type":"string"},"failureCount":{"description":"Number of consecutive delivery failures","minimum":0,"examples":[0],"type":"number"},"disabled":{"description":"Whether the webhook is currently disabled","examples":[false],"type":"boolean"}},"required":["id","events","url","failureCount","disabled"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1IntegratorWebhooks"}},"/v1/integrator/webhooks/{webhookId}":{"delete":{"tags":["Integrator"],"security":[{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Delete webhook","description":"Deletes a webhook by ID.","parameters":[{"name":"webhookId","in":"path","required":true,"schema":{"description":"Unique identifier for the webhook to delete","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Unique identifier for the deleted webhook","examples":["wh_abc123"],"type":"string"},"deleted":{"description":"Always true for a deleted webhook response","const":true,"type":"boolean"}},"required":["id","deleted"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"deleteV1IntegratorWebhooksByWebhookId"},"patch":{"tags":["Integrator"],"security":[{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Update webhook","description":"Updates the event subscriptions for an existing webhook. Use `*` to subscribe to all events.","parameters":[{"name":"webhookId","in":"path","required":true,"schema":{"description":"Unique identifier for the webhook to update","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"events":{"description":"List of event types to subscribe to. Use `*` to subscribe to all events.","minItems":1,"type":"array","items":{"type":"string","enum":["account.created","account.updated","account.deleted","payment.created","payment.updated","payment.completed","payment.refunded","verification.status.updated","capabilities.updated","onramp.created","onramp.updated","onramp.completed","achDebitReturn.created","achDebitReturn.updated","*"]}}},"required":["events"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"events":{"description":"List of event types to subscribe to. Use `*` to subscribe to all events.","minItems":1,"type":"array","items":{"type":"string","enum":["account.created","account.updated","account.deleted","payment.created","payment.updated","payment.completed","payment.refunded","verification.status.updated","capabilities.updated","onramp.created","onramp.updated","onramp.completed","achDebitReturn.created","achDebitReturn.updated","*"]}}},"required":["events"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"events":{"description":"List of event types to subscribe to. Use `*` to subscribe to all events.","minItems":1,"type":"array","items":{"type":"string","enum":["account.created","account.updated","account.deleted","payment.created","payment.updated","payment.completed","payment.refunded","verification.status.updated","capabilities.updated","onramp.created","onramp.updated","onramp.completed","achDebitReturn.created","achDebitReturn.updated","*"]}}},"required":["events"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Unique identifier for the webhook","examples":["6a0748181891e998a04454dc"],"type":"string"},"events":{"description":"List of event types this webhook is subscribed to","type":"array","items":{"type":"string","enum":["account.created","account.updated","account.deleted","payment.created","payment.updated","payment.completed","payment.refunded","verification.status.updated","capabilities.updated","onramp.created","onramp.updated","onramp.completed","achDebitReturn.created","achDebitReturn.updated","*"]}},"url":{"description":"URL to which webhook payloads are delivered","format":"uri","examples":["https://api.example.com/webhooks"],"type":"string"},"failureCount":{"description":"Number of consecutive delivery failures","minimum":0,"examples":[0],"type":"number"},"disabled":{"description":"Whether the webhook is currently disabled","examples":[false],"type":"boolean"}},"required":["id","events","url","failureCount","disabled"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"patchV1IntegratorWebhooksByWebhookId"}},"/v1/integrator/webhook-secret":{"post":{"tags":["Integrator"],"security":[{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Update webhook secret","description":"Updates the webhook secret used for signing webhook payloads.\n\n**Webhook Security**: Each webhook request is signed using HMAC SHA256. The signature is computed from the exact JSON payload and included in the `Signature` HTTP header.\n\n**Verification**: Compute the HMAC signature using your secret and the raw request body, then compare it to the `Signature` header before processing.\n\nIf no webhook secret is set, webhook requests will not include a `Signature` header.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"secret":{"description":"The secret key used to compute HMAC SHA256 signatures for webhook payloads. The signature is included in the `Signature` HTTP header of each webhook request.","minLength":1,"examples":["whsec_abc123def456"],"type":"string"}},"required":["secret"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"secret":{"description":"The secret key used to compute HMAC SHA256 signatures for webhook payloads. The signature is included in the `Signature` HTTP header of each webhook request.","minLength":1,"examples":["whsec_abc123def456"],"type":"string"}},"required":["secret"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"secret":{"description":"The secret key used to compute HMAC SHA256 signatures for webhook payloads. The signature is included in the `Signature` HTTP header of each webhook request.","minLength":1,"examples":["whsec_abc123def456"],"type":"string"}},"required":["secret"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"secretConfigured":{"description":"Always true after the webhook secret is configured","const":true,"type":"boolean"}},"required":["secretConfigured"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1IntegratorWebhook-secret"}},"/v1/integrator/regenerate-secret":{"post":{"tags":["Integrator"],"security":[{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Regenerate API secret","description":"Regenerates the integrator's API secret. The new secret is returned in the response - this is the only time it will be exposed.\n\n**Grace Period**: Optionally specify `oldSecretValidForSeconds` (0-3600) to keep the old secret valid during rotation. This prevents service disruption while updating your systems.\n\n**Warning**: Without a grace period, the old secret is invalidated immediately. Any requests signed with the old secret will fail.\n\nStore the new secret securely - it cannot be retrieved again.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"oldSecretValidForSeconds":{"description":"Grace period in seconds during which the old secret remains valid. Allows for safe rotation without service disruption. Default: 0 (immediate invalidation), Maximum: 3600 (1 hour).","minimum":0,"maximum":3600,"default":0,"examples":[300,600,3600],"type":"number"}}}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"oldSecretValidForSeconds":{"description":"Grace period in seconds during which the old secret remains valid. Allows for safe rotation without service disruption. Default: 0 (immediate invalidation), Maximum: 3600 (1 hour).","minimum":0,"maximum":3600,"default":0,"examples":[300,600,3600],"type":"number"}}}},"multipart/form-data":{"schema":{"type":"object","properties":{"oldSecretValidForSeconds":{"description":"Grace period in seconds during which the old secret remains valid. Allows for safe rotation without service disruption. Default: 0 (immediate invalidation), Maximum: 3600 (1 hour).","minimum":0,"maximum":3600,"default":0,"examples":[300,600,3600],"type":"number"}}}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"secret":{"description":"The newly generated API secret. This is the only time the secret will be exposed - store it securely.","examples":["sk_live_abc123def456ghi789"],"type":"string"},"oldSecretExpiresAt":{"description":"ISO 8601 timestamp when the old secret will expire. Only present if a grace period was specified.","format":"date-time","examples":["2026-05-15T16:26:44.006Z"],"type":"string"}},"required":["secret"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1IntegratorRegenerate-secret"}},"/v1/users/me":{"get":{"tags":["Users"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Get the current authenticated user","description":"Returns the authenticated user's profile information.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Unique identifier for the user","examples":["6a0748181891e998a04454d8"],"type":"string"},"email":{"nullable":true,"anyOf":[{"description":"User's email address","format":"email","examples":["user@example.com"],"type":"string"},{"type":"null"}]},"firstName":{"nullable":true,"anyOf":[{"description":"User's first name","examples":["John"],"type":"string"},{"type":"null"}]},"signedUpAt":{"description":"ISO 8601 timestamp of when the user was created","format":"date-time","examples":["2026-05-15T16:21:44.001Z"],"type":"string"},"timezone":{"nullable":true,"anyOf":[{"description":"User's timezone in IANA format","examples":["America/New_York","Europe/London"],"type":"string"},{"type":"null"}]},"notificationPreferences":{"description":"User's notification preferences by type","type":"array","items":{"description":"A notification preference for a specific notification type","type":"object","properties":{"type":{"type":"string","enum":["cardTransaction.approved","cardTransaction.declined","credit.added"]},"email":{"description":"Whether email notifications are enabled for this type","default":true,"type":"boolean"},"mobile":{"description":"Whether mobile notifications are enabled for this type","default":false,"type":"boolean"}},"required":["type","email","mobile"]}},"verification":{"description":"User's identity verification status and any pending requirements","type":"object","properties":{"status":{"type":"string","enum":["not_started","verified","failed","disabled","retry"]},"country":{"nullable":true,"anyOf":[{"description":"ISO 3166-1 alpha-2 country code where user was verified","examples":["US","GB","CA"],"type":"string"},{"type":"null"}]},"requirement":{"description":"A requirement that must be fulfilled to access certain features","type":"object","properties":{"type":{"type":"string","enum":["identity_verification","terms_acceptance","additional_verification","document_submission","region_restriction"]},"description":{"description":"Human-readable description of what needs to be done","examples":["Verify your identity to unlock payment features"],"type":"string"},"actionUrl":{"nullable":true,"anyOf":[{"description":"URL where the user can complete this requirement","examples":["https://verify.example.com/start"],"type":"string"},{"type":"null"}]},"retryable":{"description":"Whether this requirement can be retried after failure","examples":[true],"type":"boolean"},"status":{"type":"string","enum":["not_started","pending","completed","failed"]}},"required":["type","status"]}},"required":["status","country"]},"capabilities":{"description":"User's available capabilities and their requirements","type":"array","items":{"description":"Individual capability with its own requirements and status","type":"object","properties":{"product":{"type":"string","enum":["fiat_to_crypto","crypto_to_fiat","bill_pay","crypto_card"]},"method":{"type":"string","enum":["ach_credit","ach_debit","wire","sepa_credit_transfer","rtp","push_to_card","canadian_eft"]},"name":{"description":"Human-readable name for this capability","examples":["ACH Bank Transfer","Bill Pay"],"type":"string"},"description":{"description":"Description of what this capability enables","examples":["Buy crypto using ACH bank transfer"],"type":"string"},"status":{"type":"string","enum":["active","requirements_needed","not_available","pending"]},"nextRequirement":{"type":"string","enum":["identity_verification","terms_acceptance","additional_verification","document_submission","region_restriction"]},"requirements":{"description":"List of requirements that must be met to activate this capability","examples":[[]],"type":"array","items":{"description":"A requirement that must be fulfilled to access certain features","type":"object","properties":{"type":{"type":"string","enum":["identity_verification","terms_acceptance","additional_verification","document_submission","region_restriction"]},"description":{"description":"Human-readable description of what needs to be done","examples":["Verify your identity to unlock payment features"],"type":"string"},"actionUrl":{"nullable":true,"anyOf":[{"description":"URL where the user can complete this requirement","examples":["https://verify.example.com/start"],"type":"string"},{"type":"null"}]},"retryable":{"description":"Whether this requirement can be retried after failure","examples":[true],"type":"boolean"},"status":{"type":"string","enum":["not_started","pending","completed","failed"]}},"required":["type","status"]}}},"required":["product","name","description","status","requirements"]}}},"required":["id","email","firstName","signedUpAt","timezone","notificationPreferences","verification","capabilities"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1UsersMe"},"post":{"tags":["Users"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Update the current authenticated user","description":"Updates the authenticated user's profile. Both fields are optional - include only what you want to change.\n\n**Updatable fields:**\n- `timezone`: User's timezone in IANA format (e.g., \"America/New_York\")\n- `notificationPreferences`: Array of notification preference updates\n\n**Partial updates for notification preferences:**\nThe `notificationPreferences` array supports partial updates at two levels:\n\n1. **Type-level**: Only include notification types you want to modify. Types not included will keep their existing settings.\n2. **Field-level**: For each type included, you must provide both `email` and `mobile` fields, but only the values you provide will be applied.\n\n**Example - Update just one notification type:**\n```json\n{\n  \"notificationPreferences\": [\n    { \"type\": \"cardTransaction.approved\", \"email\": false, \"mobile\": true }\n  ]\n}\n```\nThis updates only \"cardTransaction.approved\" preferences; all other notification types remain unchanged.\n\n**Example - Update only timezone:**\n```json\n{\n  \"timezone\": \"Europe/London\"\n}\n```","requestBody":{"description":"Request body for updating user profile. All fields are optional - include only the fields you want to update.","required":true,"content":{"application/json":{"schema":{"description":"Request body for updating user profile. All fields are optional - include only the fields you want to update.","type":"object","properties":{"timezone":{"description":"User's timezone in IANA format","examples":["America/New_York","Europe/London"],"type":"string"},"notificationPreferences":{"description":"Notification preferences to update. Supports partial updates: only include the notification types you want to change. For each type included, you can update just 'email', just 'mobile', or both fields. Notification types not included in this array will retain their existing settings.","examples":[[{"type":"cardTransaction.approved","email":false,"mobile":true}]],"type":"array","items":{"description":"A notification preference for a specific notification type","type":"object","properties":{"type":{"type":"string","enum":["cardTransaction.approved","cardTransaction.declined","credit.added"]},"email":{"description":"Whether email notifications are enabled for this type","default":true,"type":"boolean"},"mobile":{"description":"Whether mobile notifications are enabled for this type","default":false,"type":"boolean"}},"required":["type","email","mobile"]}}}}},"application/x-www-form-urlencoded":{"schema":{"description":"Request body for updating user profile. All fields are optional - include only the fields you want to update.","type":"object","properties":{"timezone":{"description":"User's timezone in IANA format","examples":["America/New_York","Europe/London"],"type":"string"},"notificationPreferences":{"description":"Notification preferences to update. Supports partial updates: only include the notification types you want to change. For each type included, you can update just 'email', just 'mobile', or both fields. Notification types not included in this array will retain their existing settings.","examples":[[{"type":"cardTransaction.approved","email":false,"mobile":true}]],"type":"array","items":{"description":"A notification preference for a specific notification type","type":"object","properties":{"type":{"type":"string","enum":["cardTransaction.approved","cardTransaction.declined","credit.added"]},"email":{"description":"Whether email notifications are enabled for this type","default":true,"type":"boolean"},"mobile":{"description":"Whether mobile notifications are enabled for this type","default":false,"type":"boolean"}},"required":["type","email","mobile"]}}}}},"multipart/form-data":{"schema":{"description":"Request body for updating user profile. All fields are optional - include only the fields you want to update.","type":"object","properties":{"timezone":{"description":"User's timezone in IANA format","examples":["America/New_York","Europe/London"],"type":"string"},"notificationPreferences":{"description":"Notification preferences to update. Supports partial updates: only include the notification types you want to change. For each type included, you can update just 'email', just 'mobile', or both fields. Notification types not included in this array will retain their existing settings.","examples":[[{"type":"cardTransaction.approved","email":false,"mobile":true}]],"type":"array","items":{"description":"A notification preference for a specific notification type","type":"object","properties":{"type":{"type":"string","enum":["cardTransaction.approved","cardTransaction.declined","credit.added"]},"email":{"description":"Whether email notifications are enabled for this type","default":true,"type":"boolean"},"mobile":{"description":"Whether mobile notifications are enabled for this type","default":false,"type":"boolean"}},"required":["type","email","mobile"]}}}}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Unique identifier for the user","examples":["6a0748181891e998a04454d8"],"type":"string"},"email":{"nullable":true,"anyOf":[{"description":"User's email address","format":"email","examples":["user@example.com"],"type":"string"},{"type":"null"}]},"firstName":{"nullable":true,"anyOf":[{"description":"User's first name","examples":["John"],"type":"string"},{"type":"null"}]},"signedUpAt":{"description":"ISO 8601 timestamp of when the user was created","format":"date-time","examples":["2026-05-15T16:21:44.001Z"],"type":"string"},"timezone":{"nullable":true,"anyOf":[{"description":"User's timezone in IANA format","examples":["America/New_York","Europe/London"],"type":"string"},{"type":"null"}]},"notificationPreferences":{"description":"User's notification preferences by type","type":"array","items":{"description":"A notification preference for a specific notification type","type":"object","properties":{"type":{"type":"string","enum":["cardTransaction.approved","cardTransaction.declined","credit.added"]},"email":{"description":"Whether email notifications are enabled for this type","default":true,"type":"boolean"},"mobile":{"description":"Whether mobile notifications are enabled for this type","default":false,"type":"boolean"}},"required":["type","email","mobile"]}},"verification":{"description":"User's identity verification status and any pending requirements","type":"object","properties":{"status":{"type":"string","enum":["not_started","verified","failed","disabled","retry"]},"country":{"nullable":true,"anyOf":[{"description":"ISO 3166-1 alpha-2 country code where user was verified","examples":["US","GB","CA"],"type":"string"},{"type":"null"}]},"requirement":{"description":"A requirement that must be fulfilled to access certain features","type":"object","properties":{"type":{"type":"string","enum":["identity_verification","terms_acceptance","additional_verification","document_submission","region_restriction"]},"description":{"description":"Human-readable description of what needs to be done","examples":["Verify your identity to unlock payment features"],"type":"string"},"actionUrl":{"nullable":true,"anyOf":[{"description":"URL where the user can complete this requirement","examples":["https://verify.example.com/start"],"type":"string"},{"type":"null"}]},"retryable":{"description":"Whether this requirement can be retried after failure","examples":[true],"type":"boolean"},"status":{"type":"string","enum":["not_started","pending","completed","failed"]}},"required":["type","status"]}},"required":["status","country"]},"capabilities":{"description":"User's available capabilities and their requirements","type":"array","items":{"description":"Individual capability with its own requirements and status","type":"object","properties":{"product":{"type":"string","enum":["fiat_to_crypto","crypto_to_fiat","bill_pay","crypto_card"]},"method":{"type":"string","enum":["ach_credit","ach_debit","wire","sepa_credit_transfer","rtp","push_to_card","canadian_eft"]},"name":{"description":"Human-readable name for this capability","examples":["ACH Bank Transfer","Bill Pay"],"type":"string"},"description":{"description":"Description of what this capability enables","examples":["Buy crypto using ACH bank transfer"],"type":"string"},"status":{"type":"string","enum":["active","requirements_needed","not_available","pending"]},"nextRequirement":{"type":"string","enum":["identity_verification","terms_acceptance","additional_verification","document_submission","region_restriction"]},"requirements":{"description":"List of requirements that must be met to activate this capability","examples":[[]],"type":"array","items":{"description":"A requirement that must be fulfilled to access certain features","type":"object","properties":{"type":{"type":"string","enum":["identity_verification","terms_acceptance","additional_verification","document_submission","region_restriction"]},"description":{"description":"Human-readable description of what needs to be done","examples":["Verify your identity to unlock payment features"],"type":"string"},"actionUrl":{"nullable":true,"anyOf":[{"description":"URL where the user can complete this requirement","examples":["https://verify.example.com/start"],"type":"string"},{"type":"null"}]},"retryable":{"description":"Whether this requirement can be retried after failure","examples":[true],"type":"boolean"},"status":{"type":"string","enum":["not_started","pending","completed","failed"]}},"required":["type","status"]}}},"required":["product","name","description","status","requirements"]}}},"required":["id","email","firstName","signedUpAt","timezone","notificationPreferences","verification","capabilities"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1UsersMe"}},"/v1/users/me/email-update-sessions/":{"post":{"tags":["Users"],"security":[{"bearerAuth":[]}],"summary":"Start an email update","description":"Creates a pending email update session for the authenticated user and sends a one-time code to the requested email address.","requestBody":{"description":"Starts a pending email update by sending a one-time code to the requested email address.","required":true,"content":{"application/json":{"schema":{"description":"Starts a pending email update by sending a one-time code to the requested email address.","type":"object","properties":{"email":{"format":"email","description":"The email address to add to the current account or replace the existing one.","examples":["user@example.com"],"type":"string"}},"required":["email"]}},"application/x-www-form-urlencoded":{"schema":{"description":"Starts a pending email update by sending a one-time code to the requested email address.","type":"object","properties":{"email":{"format":"email","description":"The email address to add to the current account or replace the existing one.","examples":["user@example.com"],"type":"string"}},"required":["email"]}},"multipart/form-data":{"schema":{"description":"Starts a pending email update by sending a one-time code to the requested email address.","type":"object","properties":{"email":{"format":"email","description":"The email address to add to the current account or replace the existing one.","examples":["user@example.com"],"type":"string"}},"required":["email"]}}}},"responses":{"200":{"description":"Pending email update session details. Confirm the session with the code sent to the new email address.","content":{"application/json":{"schema":{"description":"Pending email update session details. Confirm the session with the code sent to the new email address.","type":"object","properties":{"sessionId":{"description":"Opaque identifier for the pending email update confirmation session.","examples":["8ebd7043-c4d7-4136-9db1-8ced22a91f78"],"type":"string"},"deliveryMethod":{"description":"How the one-time confirmation code is delivered.","const":"email","type":"string"}},"required":["sessionId","deliveryMethod"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1UsersMeEmail-update-sessions"}},"/v1/users/me/email-update-sessions/{sessionId}/confirm":{"post":{"tags":["Users"],"security":[{"bearerAuth":[]}],"summary":"Confirm an email update","description":"Confirms a pending email update session with the code sent to the new email address and returns the updated user profile.","parameters":[{"name":"sessionId","in":"path","required":true,"schema":{"minLength":1,"description":"Identifier returned when the email update session was created.","type":"string"}}],"requestBody":{"description":"Confirms a pending email update session and applies the new email address to the current account.","required":true,"content":{"application/json":{"schema":{"description":"Confirms a pending email update session and applies the new email address to the current account.","type":"object","properties":{"code":{"minLength":6,"maxLength":6,"pattern":"^[0-9]{6}$","description":"Six-digit confirmation code sent to the new email address.","examples":["123456"],"type":"string"}},"required":["code"]}},"application/x-www-form-urlencoded":{"schema":{"description":"Confirms a pending email update session and applies the new email address to the current account.","type":"object","properties":{"code":{"minLength":6,"maxLength":6,"pattern":"^[0-9]{6}$","description":"Six-digit confirmation code sent to the new email address.","examples":["123456"],"type":"string"}},"required":["code"]}},"multipart/form-data":{"schema":{"description":"Confirms a pending email update session and applies the new email address to the current account.","type":"object","properties":{"code":{"minLength":6,"maxLength":6,"pattern":"^[0-9]{6}$","description":"Six-digit confirmation code sent to the new email address.","examples":["123456"],"type":"string"}},"required":["code"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Unique identifier for the user","examples":["6a0748181891e998a04454d8"],"type":"string"},"email":{"nullable":true,"anyOf":[{"description":"User's email address","format":"email","examples":["user@example.com"],"type":"string"},{"type":"null"}]},"firstName":{"nullable":true,"anyOf":[{"description":"User's first name","examples":["John"],"type":"string"},{"type":"null"}]},"signedUpAt":{"description":"ISO 8601 timestamp of when the user was created","format":"date-time","examples":["2026-05-15T16:21:44.001Z"],"type":"string"},"timezone":{"nullable":true,"anyOf":[{"description":"User's timezone in IANA format","examples":["America/New_York","Europe/London"],"type":"string"},{"type":"null"}]},"notificationPreferences":{"description":"User's notification preferences by type","type":"array","items":{"description":"A notification preference for a specific notification type","type":"object","properties":{"type":{"type":"string","enum":["cardTransaction.approved","cardTransaction.declined","credit.added"]},"email":{"description":"Whether email notifications are enabled for this type","default":true,"type":"boolean"},"mobile":{"description":"Whether mobile notifications are enabled for this type","default":false,"type":"boolean"}},"required":["type","email","mobile"]}},"verification":{"description":"User's identity verification status and any pending requirements","type":"object","properties":{"status":{"type":"string","enum":["not_started","verified","failed","disabled","retry"]},"country":{"nullable":true,"anyOf":[{"description":"ISO 3166-1 alpha-2 country code where user was verified","examples":["US","GB","CA"],"type":"string"},{"type":"null"}]},"requirement":{"description":"A requirement that must be fulfilled to access certain features","type":"object","properties":{"type":{"type":"string","enum":["identity_verification","terms_acceptance","additional_verification","document_submission","region_restriction"]},"description":{"description":"Human-readable description of what needs to be done","examples":["Verify your identity to unlock payment features"],"type":"string"},"actionUrl":{"nullable":true,"anyOf":[{"description":"URL where the user can complete this requirement","examples":["https://verify.example.com/start"],"type":"string"},{"type":"null"}]},"retryable":{"description":"Whether this requirement can be retried after failure","examples":[true],"type":"boolean"},"status":{"type":"string","enum":["not_started","pending","completed","failed"]}},"required":["type","status"]}},"required":["status","country"]},"capabilities":{"description":"User's available capabilities and their requirements","type":"array","items":{"description":"Individual capability with its own requirements and status","type":"object","properties":{"product":{"type":"string","enum":["fiat_to_crypto","crypto_to_fiat","bill_pay","crypto_card"]},"method":{"type":"string","enum":["ach_credit","ach_debit","wire","sepa_credit_transfer","rtp","push_to_card","canadian_eft"]},"name":{"description":"Human-readable name for this capability","examples":["ACH Bank Transfer","Bill Pay"],"type":"string"},"description":{"description":"Description of what this capability enables","examples":["Buy crypto using ACH bank transfer"],"type":"string"},"status":{"type":"string","enum":["active","requirements_needed","not_available","pending"]},"nextRequirement":{"type":"string","enum":["identity_verification","terms_acceptance","additional_verification","document_submission","region_restriction"]},"requirements":{"description":"List of requirements that must be met to activate this capability","examples":[[]],"type":"array","items":{"description":"A requirement that must be fulfilled to access certain features","type":"object","properties":{"type":{"type":"string","enum":["identity_verification","terms_acceptance","additional_verification","document_submission","region_restriction"]},"description":{"description":"Human-readable description of what needs to be done","examples":["Verify your identity to unlock payment features"],"type":"string"},"actionUrl":{"nullable":true,"anyOf":[{"description":"URL where the user can complete this requirement","examples":["https://verify.example.com/start"],"type":"string"},{"type":"null"}]},"retryable":{"description":"Whether this requirement can be retried after failure","examples":[true],"type":"boolean"},"status":{"type":"string","enum":["not_started","pending","completed","failed"]}},"required":["type","status"]}}},"required":["product","name","description","status","requirements"]}}},"required":["id","email","firstName","signedUpAt","timezone","notificationPreferences","verification","capabilities"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1UsersMeEmail-update-sessionsBySessionIdConfirm"}},"/v1/users/me/verification-sessions/":{"post":{"tags":["Users"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Create or refresh an enhanced verification session","description":"Creates or resumes the authenticated user's interactive enhanced identity verification session. Verification URLs and provider tokens are retrieved just in time because they may expire or need to be regenerated.","responses":{"200":{"description":"Interactive enhanced verification session details retrieved just in time for the authenticated user.","content":{"application/json":{"schema":{"description":"Interactive enhanced verification session details retrieved just in time for the authenticated user.","type":"object","properties":{"sessionId":{"description":"Provider-issued identifier for the current verification session.","examples":["inq_2Q3x7k9m1n","flwses_c25ACZysrTfA9Q"],"type":"string"},"provider":{"type":"string","enum":["persona","plaid"]},"sessionToken":{"nullable":true,"anyOf":[{"description":"Provider-issued token for embedded or resumed verification flows. Null when not required.","type":"string"},{"type":"null"}]},"verificationUrl":{"nullable":true,"anyOf":[{"format":"uri","description":"Hosted URL to start or continue verification. For Persona this may be a fresh one-time link.","examples":["https://withpersona.com/verify?inquiry-id=inq_2Q3x7k9m1n","https://flow.cognitohq.com/verify/flwses_c25ACZysrTfA9Q"],"type":"string"},{"type":"null"}]},"verificationUrlExpiresAt":{"nullable":true,"anyOf":[{"format":"date-time","description":"Expiration time for `verificationUrl` when the provider returns an expiring link.","type":"string"},{"type":"null"}]}},"required":["sessionId","provider","sessionToken","verificationUrl","verificationUrlExpiresAt"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1UsersMeVerification-sessions"}},"/v1/api-keys/":{"post":{"tags":["API Keys"],"security":[{"bearerAuth":[]}],"summary":"Create an API key","description":"Creates a new API key for the authenticated user. The raw key is returned once and cannot be retrieved again.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"permissions":{"minItems":1,"type":"array","items":{"type":"string","enum":["bank-accounts:read","bank-accounts:write","bank-accounts:delete","bills:read","bills:delete","off-ramp-quotes:write"]}},"expiresAt":{"format":"date-time","description":"ISO 8601 expiration timestamp","type":"string"},"name":{"minLength":1,"maxLength":255,"type":"string"}},"required":["permissions"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"permissions":{"minItems":1,"type":"array","items":{"type":"string","enum":["bank-accounts:read","bank-accounts:write","bank-accounts:delete","bills:read","bills:delete","off-ramp-quotes:write"]}},"expiresAt":{"format":"date-time","description":"ISO 8601 expiration timestamp","type":"string"},"name":{"minLength":1,"maxLength":255,"type":"string"}},"required":["permissions"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"permissions":{"minItems":1,"type":"array","items":{"type":"string","enum":["bank-accounts:read","bank-accounts:write","bank-accounts:delete","bills:read","bills:delete","off-ramp-quotes:write"]}},"expiresAt":{"format":"date-time","description":"ISO 8601 expiration timestamp","type":"string"},"name":{"minLength":1,"maxLength":255,"type":"string"}},"required":["permissions"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"keyPrefix":{"type":"string"},"rawKey":{"description":"The raw API key. Store securely — it will not be shown again.","type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"name":{"nullable":true,"anyOf":[{"type":"string"},{"type":"null"}]},"expiresAt":{"nullable":true,"anyOf":[{"anyOf":[{"type":"Date"},{"format":"date-time","type":"string"},{"format":"date","type":"string"},{"type":"number"}]},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"Date"},{"format":"date-time","type":"string"},{"format":"date","type":"string"},{"type":"number"}]},"warning":{"type":"string"}},"required":["id","keyPrefix","rawKey","permissions","name","expiresAt","createdAt","warning"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1Api-keys"},"get":{"tags":["API Keys"],"security":[{"bearerAuth":[]}],"summary":"List API keys","description":"Lists all API keys for the authenticated user. Only key prefixes are returned, never the full key or hash.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"nullable":true,"anyOf":[{"type":"string"},{"type":"null"}]},"keyPrefix":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"status":{"type":"string"},"expiresAt":{"nullable":true,"anyOf":[{"anyOf":[{"type":"Date"},{"format":"date-time","type":"string"},{"format":"date","type":"string"},{"type":"number"}]},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"Date"},{"format":"date-time","type":"string"},{"format":"date","type":"string"},{"type":"number"}]},"lastUsedAt":{"nullable":true,"anyOf":[{"anyOf":[{"type":"Date"},{"format":"date-time","type":"string"},{"format":"date","type":"string"},{"type":"number"}]},{"type":"null"}]}},"required":["id","name","keyPrefix","permissions","status","expiresAt","createdAt","lastUsedAt"]}}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Api-keys"}},"/v1/api-keys/{keyId}":{"delete":{"tags":["API Keys"],"security":[{"bearerAuth":[]}],"summary":"Revoke an API key","description":"Revokes an API key. This action is irreversible.","parameters":[{"name":"keyId","in":"path","required":true,"schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"deleteV1Api-keysByKeyId"}},"/v1/device/authorize":{"post":{"tags":["Device Authorization"],"summary":"Initiate device authorization","description":"Generates a device code and user code for CLI authentication. The user opens verificationUriComplete in their browser to approve.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"clientId":{"minLength":1,"type":"string"}},"required":["clientId"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"clientId":{"minLength":1,"type":"string"}},"required":["clientId"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"clientId":{"minLength":1,"type":"string"}},"required":["clientId"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"deviceCode":{"type":"string"},"userCode":{"type":"string"},"verificationUri":{"type":"string"},"verificationUriComplete":{"type":"string"},"expiresIn":{"type":"number"},"interval":{"type":"number"}},"required":["deviceCode","userCode","verificationUri","verificationUriComplete","expiresIn","interval"]}}}}},"operationId":"postV1DeviceAuthorize"}},"/v1/device/token":{"post":{"tags":["Device Authorization"],"summary":"Poll for device authorization token","description":"CLI polls this endpoint to check if the user has approved the device code. Returns the API key on success.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"deviceCode":{"minLength":1,"type":"string"},"grantType":{"minLength":1,"type":"string"}},"required":["deviceCode","grantType"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"deviceCode":{"minLength":1,"type":"string"},"grantType":{"minLength":1,"type":"string"}},"required":["deviceCode","grantType"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"deviceCode":{"minLength":1,"type":"string"},"grantType":{"minLength":1,"type":"string"}},"required":["deviceCode","grantType"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"apiKey":{"type":"string"},"keyId":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"expiresAt":{"nullable":true,"anyOf":[{"type":"string"},{"type":"null"}]},"keyName":{"nullable":true,"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["apiKey","keyId","permissions","expiresAt","keyName"]}}}}},"operationId":"postV1DeviceToken"}},"/v1/device/info":{"get":{"security":[{"bearerAuth":[]}],"tags":["Device Authorization"],"summary":"Get device authorization request info","description":"Returns details about a pending device authorization request so the user can review before approving.","parameters":[{"name":"userCode","in":"query","required":true,"schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"clientId":{"type":"string"},"expiresIn":{"type":"number"},"createdAt":{"type":"string"}},"required":["clientId","expiresIn","createdAt"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1DeviceInfo"}},"/v1/device/approve":{"post":{"security":[{"bearerAuth":[]}],"tags":["Device Authorization"],"summary":"Approve device authorization","description":"User approves the CLI's device authorization request, selecting permissions and expiry. Mints a scoped API key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userCode":{"minLength":1,"type":"string"},"permissions":{"minItems":1,"type":"array","items":{"type":"string","enum":["bank-accounts:read","bank-accounts:write","bank-accounts:delete","bills:read","bills:delete","off-ramp-quotes:write"]}},"expiresAt":{"format":"date-time","description":"ISO 8601 expiration timestamp","type":"string"},"name":{"minLength":1,"maxLength":255,"type":"string"}},"required":["userCode","permissions"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"userCode":{"minLength":1,"type":"string"},"permissions":{"minItems":1,"type":"array","items":{"type":"string","enum":["bank-accounts:read","bank-accounts:write","bank-accounts:delete","bills:read","bills:delete","off-ramp-quotes:write"]}},"expiresAt":{"format":"date-time","description":"ISO 8601 expiration timestamp","type":"string"},"name":{"minLength":1,"maxLength":255,"type":"string"}},"required":["userCode","permissions"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"userCode":{"minLength":1,"type":"string"},"permissions":{"minItems":1,"type":"array","items":{"type":"string","enum":["bank-accounts:read","bank-accounts:write","bank-accounts:delete","bills:read","bills:delete","off-ramp-quotes:write"]}},"expiresAt":{"format":"date-time","description":"ISO 8601 expiration timestamp","type":"string"},"name":{"minLength":1,"maxLength":255,"type":"string"}},"required":["userCode","permissions"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"approved":{"type":"boolean"},"clientId":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"expiresAt":{"nullable":true,"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["approved","clientId","permissions","expiresAt"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1DeviceApprove"}},"/v1/wallet-kit/":{"get":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"Get embedded wallet status","description":"Returns the authenticated user's embedded wallet status. Always 200: branch on `status` to handle the not-yet-provisioned case (`status === \"not_provisioned\"`) versus an active wallet (`status === \"active\"`, with `data` populated).","responses":{"200":{"description":"Wallet status envelope. `data` is present only when `status === \"active\"`. Branch on `status` to handle the not-yet-provisioned case.","content":{"application/json":{"schema":{"description":"Wallet status envelope. `data` is present only when `status === \"active\"`. Branch on `status` to handle the not-yet-provisioned case.","anyOf":[{"description":"Wallet status envelope for an active (provisioned) wallet. The only response shape returned by POST /v1/wallet-kit.","type":"object","properties":{"status":{"description":"An embedded wallet has been provisioned for this user.","const":"active","type":"string"},"data":{"description":"An embedded wallet for the authenticated user. Backed by a Turnkey sub-organization that holds the user's keys.","type":"object","properties":{"id":{"description":"Stable wallet identifier. Pass this as the organization id when calling the Turnkey SDK.","examples":["8b3f7e2a-7c5e-4a3a-8a8a-2c5e8a8a2c5e"],"type":"string"},"userId":{"description":"Wallet user identifier. Pass this as the user id when calling the Turnkey SDK.","examples":["e3a2c5e8-4a3a-7c5e-8a8a-2c5e8a8a2c5e"],"type":"string"},"createdAt":{"description":"Timestamp when the wallet was provisioned (ISO 8601)","format":"date-time","examples":["2025-01-15T10:30:00.000Z"],"type":"string"}},"required":["id","userId","createdAt"]}},"required":["status","data"]},{"type":"object","properties":{"status":{"description":"No embedded wallet has been provisioned for this user yet. Call POST /v1/wallet-kit to provision one.","const":"not_provisioned","type":"string"}},"required":["status"]}]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Wallet-kit"},"post":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"Provision embedded wallet","description":"Provisions a new embedded wallet for the authenticated user from a passkey challenge. Returns 409 if a wallet already exists.","requestBody":{"description":"Request body for provisioning an embedded wallet.","required":true,"content":{"application/json":{"schema":{"description":"Request body for provisioning an embedded wallet.","type":"object","properties":{"challenge":{"minLength":1,"description":"Passkey/WebAuthn challenge produced by the client SDK. Forwarded directly to Turnkey to bind the user's authenticator to the new sub-organization.","type":"string"}},"required":["challenge"]}},"application/x-www-form-urlencoded":{"schema":{"description":"Request body for provisioning an embedded wallet.","type":"object","properties":{"challenge":{"minLength":1,"description":"Passkey/WebAuthn challenge produced by the client SDK. Forwarded directly to Turnkey to bind the user's authenticator to the new sub-organization.","type":"string"}},"required":["challenge"]}},"multipart/form-data":{"schema":{"description":"Request body for provisioning an embedded wallet.","type":"object","properties":{"challenge":{"minLength":1,"description":"Passkey/WebAuthn challenge produced by the client SDK. Forwarded directly to Turnkey to bind the user's authenticator to the new sub-organization.","type":"string"}},"required":["challenge"]}}}},"responses":{"201":{"description":"Wallet status envelope for an active (provisioned) wallet. The only response shape returned by POST /v1/wallet-kit.","content":{"application/json":{"schema":{"description":"Wallet status envelope for an active (provisioned) wallet. The only response shape returned by POST /v1/wallet-kit.","type":"object","properties":{"status":{"description":"An embedded wallet has been provisioned for this user.","const":"active","type":"string"},"data":{"description":"An embedded wallet for the authenticated user. Backed by a Turnkey sub-organization that holds the user's keys.","type":"object","properties":{"id":{"description":"Stable wallet identifier. Pass this as the organization id when calling the Turnkey SDK.","examples":["8b3f7e2a-7c5e-4a3a-8a8a-2c5e8a8a2c5e"],"type":"string"},"userId":{"description":"Wallet user identifier. Pass this as the user id when calling the Turnkey SDK.","examples":["e3a2c5e8-4a3a-7c5e-8a8a-2c5e8a8a2c5e"],"type":"string"},"createdAt":{"description":"Timestamp when the wallet was provisioned (ISO 8601)","format":"date-time","examples":["2025-01-15T10:30:00.000Z"],"type":"string"}},"required":["id","userId","createdAt"]}},"required":["status","data"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1Wallet-kit"}},"/v1/wallet-kit/accounts":{"get":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"List wallet accounts","description":"Returns the on-chain addresses derived from the authenticated user's embedded wallet. `data` is empty when no wallet has been provisioned.","responses":{"200":{"description":"Paginated list of the authenticated user's wallet accounts. Returns an empty list when no wallet has been provisioned.","content":{"application/json":{"schema":{"description":"Paginated list of the authenticated user's wallet accounts. Returns an empty list when no wallet has been provisioned.","type":"object","properties":{"data":{"description":"On-chain accounts derived from the authenticated user's embedded wallet. Empty when no wallet has been provisioned.","type":"array","items":{"description":"An on-chain address derived from the user's embedded wallet. The wallet may hold multiple accounts across address formats.","type":"object","properties":{"address":{"description":"Public on-chain address derived for this wallet","examples":["0x1234567890abcdef1234567890abcdef12345678"],"type":"string"},"addressFormat":{"description":"Turnkey address format identifier","examples":["ADDRESS_FORMAT_ETHEREUM","ADDRESS_FORMAT_SOLANA"],"type":"string"},"curve":{"description":"Turnkey curve identifier used to derive the address","examples":["CURVE_SECP256K1","CURVE_ED25519"],"type":"string"},"createdAt":{"description":"Timestamp when this account was provisioned (ISO 8601)","format":"date-time","examples":["2025-01-15T10:30:00.000Z"],"type":"string"}},"required":["address","addressFormat","curve","createdAt"]}},"hasMore":{"description":"Whether more results are available beyond `data`. Always false for this resource — the full list is returned in a single response.","examples":[false],"type":"boolean"},"nextCursor":{"description":"Opaque pagination cursor. Always null for this resource — the full list is returned in a single response.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","hasMore","nextCursor"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Wallet-kitAccounts"}},"/v1/wallet-kit/balances":{"get":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"List wallet token balances","description":"Returns multichain token balances for the supplied on-chain wallet address. Results are cached briefly per address.","parameters":[{"name":"address","in":"query","required":true,"schema":{"minLength":1,"description":"On-chain wallet address to fetch balances for. EVM, Solana, and Sui address formats are supported.","examples":["0x1234567890abcdef1234567890abcdef12345678"],"type":"string"}}],"responses":{"200":{"description":"Paginated list of token balances for the requested on-chain wallet address.","content":{"application/json":{"schema":{"description":"Paginated list of token balances for the requested on-chain wallet address.","type":"object","properties":{"data":{"description":"Multichain token balances for the requested wallet address.","type":"array","items":{"description":"A token balance held by an on-chain wallet address.","type":"object","properties":{"chain":{"description":"Chain the token lives on","examples":["ethereum","polygon","solana"],"type":"string"},"tokenAddress":{"description":"On-chain token contract address","examples":["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],"type":"string"},"walletAddress":{"description":"Wallet address that holds the balance","examples":["0x1234567890abcdef1234567890abcdef12345678"],"type":"string"},"symbol":{"description":"Token symbol","examples":["USDC"],"type":"string"},"name":{"description":"Token name","examples":["USD Coin"],"type":"string"},"decimals":{"description":"Token decimals","examples":[6],"anyOf":[{"format":"integer","default":0,"type":"string"},{"description":"Token decimals","examples":[6],"type":"integer"}]},"balance":{"description":"Decimal-formatted token balance","examples":["100.5"],"type":"string"},"balanceRaw":{"description":"Raw on-chain balance as an integer string","examples":["100500000"],"type":"string"},"balanceUsd":{"description":"Balance value in USD, formatted to two decimal places","examples":["100.50"],"type":"string"},"price":{"description":"Token price in USD, formatted to two decimal places","examples":["1.00"],"type":"string"},"tokenImageUrl":{"description":"URL of the token's logo image, or empty string when unknown","examples":["https://assets.example.com/usdc.png"],"type":"string"}},"required":["chain","tokenAddress","walletAddress","symbol","name","decimals","balance","balanceRaw","balanceUsd","price","tokenImageUrl"]}},"hasMore":{"description":"Whether more results are available beyond `data`. Always false for this resource — the full list is returned in a single response.","examples":[false],"type":"boolean"},"nextCursor":{"description":"Opaque pagination cursor. Always null for this resource — the full list is returned in a single response.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","hasMore","nextCursor"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Wallet-kitBalances"}},"/v1/wallet-kit/portfolio/snapshots":{"get":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"Get wallet portfolio snapshots","description":"Returns the authenticated user's portfolio snapshot history for the requested range. `latest` and `baseline` reference the newest and oldest snapshots inside the range; `changeUsd`/`changePercent` are simple balance deltas (not P&L). New users with no snapshots return `latest`/`baseline` as null and an empty `points` array.","parameters":[{"name":"range","in":"query","required":false,"schema":{"type":"string","enum":["1d","7d","30d","90d","1y","all"]}}],"responses":{"200":{"description":"Portfolio snapshot history for the authenticated user's wallets. `changeUsd` and `changePercent` are simple balance deltas, not P&L. New users with no history return `latest`/`baseline` as null and `points` empty.","content":{"application/json":{"schema":{"description":"Portfolio snapshot history for the authenticated user's wallets. `changeUsd` and `changePercent` are simple balance deltas, not P&L. New users with no history return `latest`/`baseline` as null and `points` empty.","type":"object","properties":{"range":{"type":"string","enum":["1d","7d","30d","90d","1y","all"]},"latest":{"description":"Newest snapshot inside the requested range, or null when no snapshots exist.","anyOf":[{"description":"A single point in the user's portfolio snapshot history. `totalBalanceUsd` is a USD amount, not P&L.","type":"object","properties":{"id":{"description":"Stable identifier for the snapshot point.","type":"string"},"bucketStart":{"format":"date-time","description":"ISO 8601 timestamp marking the start of the time bucket this snapshot represents.","type":"string"},"capturedAt":{"format":"date-time","description":"ISO 8601 timestamp at which the snapshot was actually captured.","type":"string"},"status":{"description":"`complete` when every wallet was captured successfully; `partial` when one or more wallets failed or are unsupported.","anyOf":[{"const":"complete","type":"string"},{"const":"partial","type":"string"}]},"totalBalanceUsd":{"description":"Total USD balance across all captured wallets at this point, formatted to two decimal places.","examples":["1234.56"],"type":"string"},"assetCount":{"minimum":0,"description":"Distinct asset count at this point.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Distinct asset count at this point.","type":"integer"}]},"chainCount":{"minimum":0,"description":"Distinct chain count at this point.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Distinct chain count at this point.","type":"integer"}]},"walletCount":{"minimum":0,"description":"Total wallet count considered for this point.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Total wallet count considered for this point.","type":"integer"}]},"capturedWalletCount":{"minimum":0,"description":"Number of wallets that were captured successfully.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Number of wallets that were captured successfully.","type":"integer"}]},"unsupportedWalletCount":{"minimum":0,"description":"Number of wallets skipped because their chain is not yet supported.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Number of wallets skipped because their chain is not yet supported.","type":"integer"}]},"failedWalletCount":{"minimum":0,"description":"Number of wallets that failed to capture.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Number of wallets that failed to capture.","type":"integer"}]}},"required":["id","bucketStart","capturedAt","status","totalBalanceUsd","assetCount","chainCount","walletCount","capturedWalletCount","unsupportedWalletCount","failedWalletCount"]},{"type":"null"}]},"baseline":{"description":"Oldest snapshot inside the requested range, or null when no snapshots exist.","anyOf":[{"description":"A single point in the user's portfolio snapshot history. `totalBalanceUsd` is a USD amount, not P&L.","type":"object","properties":{"id":{"description":"Stable identifier for the snapshot point.","type":"string"},"bucketStart":{"format":"date-time","description":"ISO 8601 timestamp marking the start of the time bucket this snapshot represents.","type":"string"},"capturedAt":{"format":"date-time","description":"ISO 8601 timestamp at which the snapshot was actually captured.","type":"string"},"status":{"description":"`complete` when every wallet was captured successfully; `partial` when one or more wallets failed or are unsupported.","anyOf":[{"const":"complete","type":"string"},{"const":"partial","type":"string"}]},"totalBalanceUsd":{"description":"Total USD balance across all captured wallets at this point, formatted to two decimal places.","examples":["1234.56"],"type":"string"},"assetCount":{"minimum":0,"description":"Distinct asset count at this point.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Distinct asset count at this point.","type":"integer"}]},"chainCount":{"minimum":0,"description":"Distinct chain count at this point.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Distinct chain count at this point.","type":"integer"}]},"walletCount":{"minimum":0,"description":"Total wallet count considered for this point.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Total wallet count considered for this point.","type":"integer"}]},"capturedWalletCount":{"minimum":0,"description":"Number of wallets that were captured successfully.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Number of wallets that were captured successfully.","type":"integer"}]},"unsupportedWalletCount":{"minimum":0,"description":"Number of wallets skipped because their chain is not yet supported.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Number of wallets skipped because their chain is not yet supported.","type":"integer"}]},"failedWalletCount":{"minimum":0,"description":"Number of wallets that failed to capture.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Number of wallets that failed to capture.","type":"integer"}]}},"required":["id","bucketStart","capturedAt","status","totalBalanceUsd","assetCount","chainCount","walletCount","capturedWalletCount","unsupportedWalletCount","failedWalletCount"]},{"type":"null"}]},"changeUsd":{"description":"Simple USD balance delta between baseline and latest, formatted to two decimal places. Not P&L. Null when history is empty.","examples":["12.34"],"anyOf":[{"type":"string"},{"type":"null"}]},"changePercent":{"description":"Simple percentage change between baseline and latest balance, formatted to two decimal places. Not P&L. Null when history is empty or baseline balance is zero.","examples":["1.23"],"anyOf":[{"type":"string"},{"type":"null"}]},"points":{"description":"Snapshot points inside the requested range, ordered by `bucketStart`. Empty when no history exists.","type":"array","items":{"description":"A single point in the user's portfolio snapshot history. `totalBalanceUsd` is a USD amount, not P&L.","type":"object","properties":{"id":{"description":"Stable identifier for the snapshot point.","type":"string"},"bucketStart":{"format":"date-time","description":"ISO 8601 timestamp marking the start of the time bucket this snapshot represents.","type":"string"},"capturedAt":{"format":"date-time","description":"ISO 8601 timestamp at which the snapshot was actually captured.","type":"string"},"status":{"type":"string","enum":["complete","partial"]},"totalBalanceUsd":{"description":"Total USD balance across all captured wallets at this point, formatted to two decimal places.","examples":["1234.56"],"type":"string"},"assetCount":{"minimum":0,"description":"Distinct asset count at this point.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Distinct asset count at this point.","type":"integer"}]},"chainCount":{"minimum":0,"description":"Distinct chain count at this point.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Distinct chain count at this point.","type":"integer"}]},"walletCount":{"minimum":0,"description":"Total wallet count considered for this point.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Total wallet count considered for this point.","type":"integer"}]},"capturedWalletCount":{"minimum":0,"description":"Number of wallets that were captured successfully.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Number of wallets that were captured successfully.","type":"integer"}]},"unsupportedWalletCount":{"minimum":0,"description":"Number of wallets skipped because their chain is not yet supported.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Number of wallets skipped because their chain is not yet supported.","type":"integer"}]},"failedWalletCount":{"minimum":0,"description":"Number of wallets that failed to capture.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Number of wallets that failed to capture.","type":"integer"}]}},"required":["id","bucketStart","capturedAt","status","totalBalanceUsd","assetCount","chainCount","walletCount","capturedWalletCount","unsupportedWalletCount","failedWalletCount"]}}},"required":["range","latest","baseline","changeUsd","changePercent","points"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Wallet-kitPortfolioSnapshots"}},"/v1/wallet-kit/solana/transfers":{"get":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"List Solana wallet transfers","description":"Returns a paginated list of Solana transfers involving the supplied address (sent or received). Results are cached briefly per address + page and invalidated when the web3 service emits `wallet-balance.invalidated`.","parameters":[{"name":"address","in":"query","required":true,"schema":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana wallet address (base58) to fetch transfers for. Case-sensitive.","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"default":50,"description":"Maximum number of transfers to return per page (1–100).","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":1,"maximum":100,"default":50,"description":"Maximum number of transfers to return per page (1–100).","type":"integer"}]}},{"name":"cursor","in":"query","required":false,"schema":{"minLength":1,"description":"Opaque pagination cursor returned as `nextCursor` from a previous request.","type":"string"}}],"responses":{"200":{"description":"Paginated list of Solana wallet transfers.","content":{"application/json":{"schema":{"description":"Paginated list of Solana wallet transfers.","type":"object","properties":{"data":{"description":"Solana transfers involving the requested address.","type":"array","items":{"description":"A Solana wallet transfer involving the queried address.","type":"object","properties":{"signature":{"description":"Solana transaction signature (base58). Stable identifier for the transfer.","type":"string"},"occurredAt":{"format":"date-time","description":"ISO 8601 timestamp the transaction was confirmed at.","type":"string"},"direction":{"type":"string","enum":["in","out"]},"counterparty":{"description":"Counterparty address (sender for `in`, recipient for `out`), or null when not resolvable.","anyOf":[{"type":"string"},{"type":"null"}]},"mint":{"description":"SPL mint address. For native SOL transfers this is the wrapped SOL mint (`So111...`).","type":"string"},"symbol":{"description":"Token symbol.","examples":["SOL","USDC"],"type":"string"},"decimals":{"description":"Token decimals.","examples":[9,6],"anyOf":[{"format":"integer","default":0,"type":"string"},{"description":"Token decimals.","examples":[9,6],"type":"integer"}]},"amount":{"description":"Decimal-formatted token amount in display units (not USD). Precision matches the token's decimals.","examples":["1.5"],"type":"string"},"amountRaw":{"description":"Raw on-chain amount as an integer string in base units (lamports for SOL, mint base units for SPL).","examples":["1500000000"],"type":"string"},"chain":{"description":"Source chain. Always `solana` for this resource.","const":"solana","type":"string"}},"required":["signature","occurredAt","direction","counterparty","mint","symbol","decimals","amount","amountRaw","chain"]}},"hasMore":{"description":"Whether more results are available beyond `data`.","type":"boolean"},"nextCursor":{"description":"Opaque pagination cursor. Pass to the next request as `cursor` to fetch the next page. Null when there are no more results.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","hasMore","nextCursor"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Wallet-kitSolanaTransfers"}},"/v1/wallet-kit/solana/transactions/prepare":{"post":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"Prepare Solana transaction","description":"Prepares an unsigned Solana v0 message for the authenticated user's embedded wallet to sign. Supports `transfer`, `payment`, `yield.deposit`, and `yield.withdraw` intents. Kamino is the only yield protocol supported today. The response `messageBytes` are base64-encoded Solana message bytes, not a serialized transaction; the wallet must sign the decoded bytes exactly and submit only the detached signature.","requestBody":{"description":"Request body for preparing a Solana transaction. The authenticated user id is derived from the bearer token; clients do not send `userId` to Wallet Kit. The server builds and stores an unsigned Solana v0 message, then returns the exact bytes the embedded wallet must sign.","required":true,"content":{"application/json":{"schema":{"description":"Request body for preparing a Solana transaction. The authenticated user id is derived from the bearer token; clients do not send `userId` to Wallet Kit. The server builds and stores an unsigned Solana v0 message, then returns the exact bytes the embedded wallet must sign.","type":"object","properties":{"clientIntentId":{"minLength":1,"description":"Caller-supplied idempotency key for this prepare call. Repeating the same `clientIntentId` with an identical intent returns the existing prepared transaction while it is active. Reusing the same key with different intent details returns a conflict error.","type":"string"},"intentVersion":{"description":"Version of the intent schema. Production prepare currently expects exactly `1`.","examples":[1],"const":1,"type":"number"},"feeMode":{"type":"string","enum":["auto","sponsored_only","user_paid_only"]},"intent":{"description":"Discriminated Solana transaction intent. Use `transfer` for wallet transfers, `payment` for Spritz off-ramp quote payments, `yield.deposit` for Kamino USDC vault deposits, and `yield.withdraw` for Kamino USDC vault withdrawals.","anyOf":[{"description":"Transfer intent. The transaction builder creates the exact Solana v0 message for the authenticated user's embedded wallet to sign.","type":"object","properties":{"kind":{"description":"Intent kind for a native SOL or SPL token transfer.","const":"transfer","type":"string"},"from":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"to":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Recipient Solana public key (base58).","examples":["FqVnHphYBfJTb46iWbwS8oRaAWGnLPVhWqvY1pgZ7yC8"],"type":"string"},"amount":{"minLength":1,"pattern":"^[1-9][0-9]*$","description":"Positive integer amount in base units, formatted as a string. For native SOL this is lamports. For SPL tokens this is the mint's base unit, for example USDC uses 6 decimals.","examples":["1000000"],"type":"string"},"mint":{"description":"SPL mint address for token transfers, or null for native SOL transfers.","examples":[null],"anyOf":[{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},{"type":"null"}]}},"required":["kind","from","to","amount","mint"]},{"description":"Off-ramp quote payment intent. The transaction builder creates the exact Solana v0 message for the authenticated user's embedded wallet to sign.","type":"object","properties":{"kind":{"description":"Intent kind for a Spritz off-ramp quote payment.","const":"payment","type":"string"},"from":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"offRampQuoteId":{"minLength":1,"description":"Existing off-ramp quote id. The transaction builder resolves amount due, destination, memo/reference, and token route from this quote.","examples":["offramp_xyz789"],"type":"string"}},"required":["kind","from","offRampQuoteId"]},{"description":"Kamino yield deposit intent. `amount` is a raw USDC base-unit integer string, so `1500000` means 1.5 USDC.","type":"object","properties":{"kind":{"description":"Intent kind for depositing USDC into a Kamino vault.","const":"yield.deposit","type":"string"},"protocol":{"description":"Yield protocol that will construct the deposit instructions. Only Kamino is supported for Solana yield transactions today.","const":"kamino","type":"string"},"from":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"vault":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"amount":{"minLength":1,"pattern":"^[1-9][0-9]*$","description":"Positive integer amount in base units, formatted as a string. For native SOL this is lamports. For SPL tokens this is the mint's base unit, for example USDC uses 6 decimals.","examples":["1000000"],"type":"string"},"mint":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana USDC mint address supported by the selected Kamino vault.","examples":["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"],"type":"string"}},"required":["kind","protocol","from","vault","amount","mint"]},{"description":"Kamino yield withdraw intent. Wallet Kit currently exposes full-position withdrawals with `withdrawAll: true`.","type":"object","properties":{"kind":{"description":"Intent kind for withdrawing from a Kamino vault.","const":"yield.withdraw","type":"string"},"protocol":{"description":"Yield protocol that will construct the withdraw instructions. Only Kamino is supported for Solana yield transactions today.","const":"kamino","type":"string"},"from":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"vault":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"withdrawAll":{"description":"Withdraw the user's full available position from this vault. Partial withdraws are not exposed by Wallet Kit yet.","const":true,"type":"boolean"},"mint":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana USDC mint address supported by the selected Kamino vault.","examples":["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"],"type":"string"}},"required":["kind","protocol","from","vault","withdrawAll","mint"]}]}},"required":["clientIntentId","intentVersion","intent"]}},"application/x-www-form-urlencoded":{"schema":{"description":"Request body for preparing a Solana transaction. The authenticated user id is derived from the bearer token; clients do not send `userId` to Wallet Kit. The server builds and stores an unsigned Solana v0 message, then returns the exact bytes the embedded wallet must sign.","type":"object","properties":{"clientIntentId":{"minLength":1,"description":"Caller-supplied idempotency key for this prepare call. Repeating the same `clientIntentId` with an identical intent returns the existing prepared transaction while it is active. Reusing the same key with different intent details returns a conflict error.","type":"string"},"intentVersion":{"description":"Version of the intent schema. Production prepare currently expects exactly `1`.","examples":[1],"const":1,"type":"number"},"feeMode":{"type":"string","enum":["auto","sponsored_only","user_paid_only"]},"intent":{"description":"Discriminated Solana transaction intent. Use `transfer` for wallet transfers, `payment` for Spritz off-ramp quote payments, `yield.deposit` for Kamino USDC vault deposits, and `yield.withdraw` for Kamino USDC vault withdrawals.","anyOf":[{"description":"Transfer intent. The transaction builder creates the exact Solana v0 message for the authenticated user's embedded wallet to sign.","type":"object","properties":{"kind":{"description":"Intent kind for a native SOL or SPL token transfer.","const":"transfer","type":"string"},"from":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"to":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Recipient Solana public key (base58).","examples":["FqVnHphYBfJTb46iWbwS8oRaAWGnLPVhWqvY1pgZ7yC8"],"type":"string"},"amount":{"minLength":1,"pattern":"^[1-9][0-9]*$","description":"Positive integer amount in base units, formatted as a string. For native SOL this is lamports. For SPL tokens this is the mint's base unit, for example USDC uses 6 decimals.","examples":["1000000"],"type":"string"},"mint":{"description":"SPL mint address for token transfers, or null for native SOL transfers.","examples":[null],"anyOf":[{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},{"type":"null"}]}},"required":["kind","from","to","amount","mint"]},{"description":"Off-ramp quote payment intent. The transaction builder creates the exact Solana v0 message for the authenticated user's embedded wallet to sign.","type":"object","properties":{"kind":{"description":"Intent kind for a Spritz off-ramp quote payment.","const":"payment","type":"string"},"from":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"offRampQuoteId":{"minLength":1,"description":"Existing off-ramp quote id. The transaction builder resolves amount due, destination, memo/reference, and token route from this quote.","examples":["offramp_xyz789"],"type":"string"}},"required":["kind","from","offRampQuoteId"]},{"description":"Kamino yield deposit intent. `amount` is a raw USDC base-unit integer string, so `1500000` means 1.5 USDC.","type":"object","properties":{"kind":{"description":"Intent kind for depositing USDC into a Kamino vault.","const":"yield.deposit","type":"string"},"protocol":{"description":"Yield protocol that will construct the deposit instructions. Only Kamino is supported for Solana yield transactions today.","const":"kamino","type":"string"},"from":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"vault":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"amount":{"minLength":1,"pattern":"^[1-9][0-9]*$","description":"Positive integer amount in base units, formatted as a string. For native SOL this is lamports. For SPL tokens this is the mint's base unit, for example USDC uses 6 decimals.","examples":["1000000"],"type":"string"},"mint":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana USDC mint address supported by the selected Kamino vault.","examples":["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"],"type":"string"}},"required":["kind","protocol","from","vault","amount","mint"]},{"description":"Kamino yield withdraw intent. Wallet Kit currently exposes full-position withdrawals with `withdrawAll: true`.","type":"object","properties":{"kind":{"description":"Intent kind for withdrawing from a Kamino vault.","const":"yield.withdraw","type":"string"},"protocol":{"description":"Yield protocol that will construct the withdraw instructions. Only Kamino is supported for Solana yield transactions today.","const":"kamino","type":"string"},"from":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"vault":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"withdrawAll":{"description":"Withdraw the user's full available position from this vault. Partial withdraws are not exposed by Wallet Kit yet.","const":true,"type":"boolean"},"mint":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana USDC mint address supported by the selected Kamino vault.","examples":["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"],"type":"string"}},"required":["kind","protocol","from","vault","withdrawAll","mint"]}]}},"required":["clientIntentId","intentVersion","intent"]}},"multipart/form-data":{"schema":{"description":"Request body for preparing a Solana transaction. The authenticated user id is derived from the bearer token; clients do not send `userId` to Wallet Kit. The server builds and stores an unsigned Solana v0 message, then returns the exact bytes the embedded wallet must sign.","type":"object","properties":{"clientIntentId":{"minLength":1,"description":"Caller-supplied idempotency key for this prepare call. Repeating the same `clientIntentId` with an identical intent returns the existing prepared transaction while it is active. Reusing the same key with different intent details returns a conflict error.","type":"string"},"intentVersion":{"description":"Version of the intent schema. Production prepare currently expects exactly `1`.","examples":[1],"const":1,"type":"number"},"feeMode":{"type":"string","enum":["auto","sponsored_only","user_paid_only"]},"intent":{"description":"Discriminated Solana transaction intent. Use `transfer` for wallet transfers, `payment` for Spritz off-ramp quote payments, `yield.deposit` for Kamino USDC vault deposits, and `yield.withdraw` for Kamino USDC vault withdrawals.","anyOf":[{"description":"Transfer intent. The transaction builder creates the exact Solana v0 message for the authenticated user's embedded wallet to sign.","type":"object","properties":{"kind":{"description":"Intent kind for a native SOL or SPL token transfer.","const":"transfer","type":"string"},"from":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"to":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Recipient Solana public key (base58).","examples":["FqVnHphYBfJTb46iWbwS8oRaAWGnLPVhWqvY1pgZ7yC8"],"type":"string"},"amount":{"minLength":1,"pattern":"^[1-9][0-9]*$","description":"Positive integer amount in base units, formatted as a string. For native SOL this is lamports. For SPL tokens this is the mint's base unit, for example USDC uses 6 decimals.","examples":["1000000"],"type":"string"},"mint":{"description":"SPL mint address for token transfers, or null for native SOL transfers.","examples":[null],"anyOf":[{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},{"type":"null"}]}},"required":["kind","from","to","amount","mint"]},{"description":"Off-ramp quote payment intent. The transaction builder creates the exact Solana v0 message for the authenticated user's embedded wallet to sign.","type":"object","properties":{"kind":{"description":"Intent kind for a Spritz off-ramp quote payment.","const":"payment","type":"string"},"from":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"offRampQuoteId":{"minLength":1,"description":"Existing off-ramp quote id. The transaction builder resolves amount due, destination, memo/reference, and token route from this quote.","examples":["offramp_xyz789"],"type":"string"}},"required":["kind","from","offRampQuoteId"]},{"description":"Kamino yield deposit intent. `amount` is a raw USDC base-unit integer string, so `1500000` means 1.5 USDC.","type":"object","properties":{"kind":{"description":"Intent kind for depositing USDC into a Kamino vault.","const":"yield.deposit","type":"string"},"protocol":{"description":"Yield protocol that will construct the deposit instructions. Only Kamino is supported for Solana yield transactions today.","const":"kamino","type":"string"},"from":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"vault":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"amount":{"minLength":1,"pattern":"^[1-9][0-9]*$","description":"Positive integer amount in base units, formatted as a string. For native SOL this is lamports. For SPL tokens this is the mint's base unit, for example USDC uses 6 decimals.","examples":["1000000"],"type":"string"},"mint":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana USDC mint address supported by the selected Kamino vault.","examples":["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"],"type":"string"}},"required":["kind","protocol","from","vault","amount","mint"]},{"description":"Kamino yield withdraw intent. Wallet Kit currently exposes full-position withdrawals with `withdrawAll: true`.","type":"object","properties":{"kind":{"description":"Intent kind for withdrawing from a Kamino vault.","const":"yield.withdraw","type":"string"},"protocol":{"description":"Yield protocol that will construct the withdraw instructions. Only Kamino is supported for Solana yield transactions today.","const":"kamino","type":"string"},"from":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"vault":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"withdrawAll":{"description":"Withdraw the user's full available position from this vault. Partial withdraws are not exposed by Wallet Kit yet.","const":true,"type":"boolean"},"mint":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana USDC mint address supported by the selected Kamino vault.","examples":["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"],"type":"string"}},"required":["kind","protocol","from","vault","withdrawAll","mint"]}]}},"required":["clientIntentId","intentVersion","intent"]}}}},"responses":{"200":{"description":"Prepare response for the embedded-wallet signing flow. Decode `messageBytes`, sign those exact bytes with `userSigner`, then submit only the detached base64 signature. Do not submit a serialized transaction or rebuild the message client-side.","content":{"application/json":{"schema":{"description":"Prepare response for the embedded-wallet signing flow. Decode `messageBytes`, sign those exact bytes with `userSigner`, then submit only the detached base64 signature. Do not submit a serialized transaction or rebuild the message client-side.","type":"object","properties":{"txId":{"description":"Server-issued transaction id. Pass this back to the submit endpoint along with the user signature.","type":"string"},"messageBytes":{"description":"Base64-encoded Solana v0 message bytes. The embedded wallet must sign exactly these bytes after base64 decoding — do not mutate, rebuild, or wrap.","type":"string"},"messageFormat":{"description":"Format of `messageBytes`. `solana_message_v0` means the bytes are a Solana v0 message, not a serialized transaction.","const":"solana_message_v0","type":"string"},"userSigner":{"description":"Solana public key that must produce `userSignature` over the decoded `messageBytes`.","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"requiredSigners":{"description":"All signer public keys required by the prepared message. The embedded wallet is responsible for the `userSigner`; Spritz may add the fee-payer signature during submit.","type":"array","items":{"type":"string"}},"feePayer":{"description":"Solana public key paying the network fee for the prepared transaction.","type":"string"},"sponsored":{"description":"Whether Spritz is expected to pay the Solana network fee for this prepared transaction.","type":"boolean"},"estimatedFeeLamports":{"minimum":0,"description":"Estimated Solana network fee in lamports for the prepared message.","examples":[5000],"anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Estimated Solana network fee in lamports for the prepared message.","examples":[5000],"type":"integer"}]},"addressLookupTableAddresses":{"description":"Address lookup table accounts used by the v0 message. Empty when the message does not use lookup tables.","type":"array","items":{"type":"string"}},"blockhash":{"description":"Recent blockhash embedded in the prepared message. This blockhash is what makes the prepared message expire.","type":"string"},"lastValidBlockHeight":{"minimum":0,"description":"Last Solana block height at which the prepared message can still be submitted.","anyOf":[{"format":"integer","default":0,"type":"string"},{"minimum":0,"description":"Last Solana block height at which the prepared message can still be submitted.","type":"integer"}]},"expiresAt":{"format":"date-time","description":"ISO 8601 timestamp at which this prepared transaction expires. Solana blockhashes expire quickly; if submit fails with `TX_EXPIRED`, call prepare again and sign the new `messageBytes`.","type":"string"},"summary":{"description":"Product summary of the prepared transaction. Shape varies by intent. Transfer summaries identify sender, recipient, mint, and amount. Payment summaries identify the off-ramp quote, destination, amount, mint, and required token input. Kamino yield summaries identify protocol, vault, mint, and the deposit amount or withdraw-all request.","type":"object","patternProperties":{"^(.*)$":{}}}},"required":["txId","messageBytes","messageFormat","userSigner","requiredSigners","feePayer","sponsored","estimatedFeeLamports","addressLookupTableAddresses","blockhash","lastValidBlockHeight","expiresAt","summary"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"502":{"description":"Response for status 502","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1Wallet-kitSolanaTransactionsPrepare"}},"/v1/wallet-kit/solana/transactions/submit":{"post":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"Submit Solana transaction","description":"Submits the user's detached signature for a previously prepared Solana transaction. The server verifies the signature against the stored message, adds any Spritz-owned signatures such as the fee payer, serializes the transaction, and broadcasts it. If submit returns `TX_EXPIRED`, call prepare again and sign the new `messageBytes`. Retrying after a successful broadcast returns the existing transaction signature.","requestBody":{"description":"Request body for submitting the user's detached signature for a previously prepared Solana transaction. The server verifies this signature against the stored `messageBytes`, adds any Spritz-owned signatures such as the fee payer, serializes the final transaction, and broadcasts it.","required":true,"content":{"application/json":{"schema":{"description":"Request body for submitting the user's detached signature for a previously prepared Solana transaction. The server verifies this signature against the stored `messageBytes`, adds any Spritz-owned signatures such as the fee payer, serializes the final transaction, and broadcasts it.","type":"object","properties":{"txId":{"minLength":1,"description":"Server transaction id returned by the prepare endpoint.","type":"string"},"userSignature":{"minLength":1,"description":"Base64-encoded 64-byte ed25519 signature over the decoded `messageBytes` returned by prepare. Never send a fully signed transaction here — only the detached user signature.","type":"string"}},"required":["txId","userSignature"]}},"application/x-www-form-urlencoded":{"schema":{"description":"Request body for submitting the user's detached signature for a previously prepared Solana transaction. The server verifies this signature against the stored `messageBytes`, adds any Spritz-owned signatures such as the fee payer, serializes the final transaction, and broadcasts it.","type":"object","properties":{"txId":{"minLength":1,"description":"Server transaction id returned by the prepare endpoint.","type":"string"},"userSignature":{"minLength":1,"description":"Base64-encoded 64-byte ed25519 signature over the decoded `messageBytes` returned by prepare. Never send a fully signed transaction here — only the detached user signature.","type":"string"}},"required":["txId","userSignature"]}},"multipart/form-data":{"schema":{"description":"Request body for submitting the user's detached signature for a previously prepared Solana transaction. The server verifies this signature against the stored `messageBytes`, adds any Spritz-owned signatures such as the fee payer, serializes the final transaction, and broadcasts it.","type":"object","properties":{"txId":{"minLength":1,"description":"Server transaction id returned by the prepare endpoint.","type":"string"},"userSignature":{"minLength":1,"description":"Base64-encoded 64-byte ed25519 signature over the decoded `messageBytes` returned by prepare. Never send a fully signed transaction here — only the detached user signature.","type":"string"}},"required":["txId","userSignature"]}}}},"responses":{"200":{"description":"Submit response. The transaction has been broadcast to the Solana cluster. If submit is retried after a successful broadcast, the existing signature is returned.","content":{"application/json":{"schema":{"description":"Submit response. The transaction has been broadcast to the Solana cluster. If submit is retried after a successful broadcast, the existing signature is returned.","type":"object","properties":{"txId":{"description":"Server transaction id.","type":"string"},"signature":{"description":"Solana transaction signature (base58).","type":"string"},"signatureRole":{"description":"Role of the signature returned (e.g., `fee_payer`).","examples":["fee_payer"],"type":"string"},"status":{"description":"Transaction status (e.g., `submitted`).","examples":["submitted"],"type":"string"},"explorerUrl":{"description":"URL to view the transaction on a Solana explorer.","type":"string"}},"required":["txId","signature","signatureRole","status","explorerUrl"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"502":{"description":"Response for status 502","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1Wallet-kitSolanaTransactionsSubmit"}},"/v1/wallet-kit/solana/transactions/{txId}/submit":{"post":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"Submit Solana transaction by id","description":"Path-based submit alias. Use this when the prepared transaction id is already part of the URL. The request body contains only `userSignature`; `txId` is taken from the path.","parameters":[{"name":"txId","in":"path","required":true,"schema":{"minLength":1,"description":"Server transaction id returned by the prepare endpoint. Supplied in the path for the submit alias.","type":"string"}}],"requestBody":{"description":"Request body for the path-based submit alias. The `txId` comes from the URL path; the body contains only the user's detached signature.","required":true,"content":{"application/json":{"schema":{"description":"Request body for the path-based submit alias. The `txId` comes from the URL path; the body contains only the user's detached signature.","type":"object","properties":{"userSignature":{"minLength":1,"description":"Base64-encoded 64-byte ed25519 signature over the decoded `messageBytes` returned by prepare. Never send a fully signed transaction here - only the detached user signature.","type":"string"}},"required":["userSignature"]}},"application/x-www-form-urlencoded":{"schema":{"description":"Request body for the path-based submit alias. The `txId` comes from the URL path; the body contains only the user's detached signature.","type":"object","properties":{"userSignature":{"minLength":1,"description":"Base64-encoded 64-byte ed25519 signature over the decoded `messageBytes` returned by prepare. Never send a fully signed transaction here - only the detached user signature.","type":"string"}},"required":["userSignature"]}},"multipart/form-data":{"schema":{"description":"Request body for the path-based submit alias. The `txId` comes from the URL path; the body contains only the user's detached signature.","type":"object","properties":{"userSignature":{"minLength":1,"description":"Base64-encoded 64-byte ed25519 signature over the decoded `messageBytes` returned by prepare. Never send a fully signed transaction here - only the detached user signature.","type":"string"}},"required":["userSignature"]}}}},"responses":{"200":{"description":"Submit response. The transaction has been broadcast to the Solana cluster. If submit is retried after a successful broadcast, the existing signature is returned.","content":{"application/json":{"schema":{"description":"Submit response. The transaction has been broadcast to the Solana cluster. If submit is retried after a successful broadcast, the existing signature is returned.","type":"object","properties":{"txId":{"description":"Server transaction id.","type":"string"},"signature":{"description":"Solana transaction signature (base58).","type":"string"},"signatureRole":{"description":"Role of the signature returned (e.g., `fee_payer`).","examples":["fee_payer"],"type":"string"},"status":{"description":"Transaction status (e.g., `submitted`).","examples":["submitted"],"type":"string"},"explorerUrl":{"description":"URL to view the transaction on a Solana explorer.","type":"string"}},"required":["txId","signature","signatureRole","status","explorerUrl"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"502":{"description":"Response for status 502","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1Wallet-kitSolanaTransactionsByTxIdSubmit"}},"/v1/wallet-kit/auth-methods/":{"get":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"List wallet auth methods","description":"Returns the auth methods registered on the authenticated user's embedded wallet sub-organization.","responses":{"200":{"description":"Paginated list of the authenticated user's auth methods. Empty when no wallet has been provisioned.","content":{"application/json":{"schema":{"description":"Paginated list of the authenticated user's auth methods. Empty when no wallet has been provisioned.","type":"object","properties":{"data":{"description":"Auth methods registered on the user's embedded wallet sub-organization.","type":"array","items":{"description":"An authentication method registered on the user's embedded wallet sub-organization.","type":"object","properties":{"id":{"description":"Stable identifier for the auth method.","type":"string"},"kind":{"type":"string","enum":["passkey","google","apple","email"]},"label":{"description":"Human-readable label for the method (e.g., the email address, OAuth account label, or passkey nickname).","type":"string"},"addedAt":{"format":"date-time","description":"Timestamp when the method was added (ISO 8601).","type":"string"},"isPrimary":{"description":"Whether this method is the user's primary method. The primary method cannot be removed without first promoting another.","type":"boolean"}},"required":["id","kind","label","addedAt","isPrimary"]}},"hasMore":{"description":"Whether more results are available beyond `data`. Always false — the full list is returned in a single response.","examples":[false],"type":"boolean"},"nextCursor":{"description":"Opaque pagination cursor. Always null — the full list is returned in a single response.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","hasMore","nextCursor"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Wallet-kitAuth-methods"},"post":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"Commit add auth method","description":"Submits the user's stamp for a previously prepared add-auth-method intent. Returns the newly registered auth method.","requestBody":{"description":"Commit body for any prepared auth-method activity (add, email-start, remove).","required":true,"content":{"application/json":{"schema":{"description":"Commit body for any prepared auth-method activity (add, email-start, remove).","type":"object","properties":{"intentId":{"minLength":1,"description":"Intent identifier returned by the matching prepare call.","type":"string"},"stamp":{"minLength":1,"description":"Turnkey stamp produced by signing the prepared `activityBody` with the user's WebAuthn authenticator.","type":"string"}},"required":["intentId","stamp"]}},"application/x-www-form-urlencoded":{"schema":{"description":"Commit body for any prepared auth-method activity (add, email-start, remove).","type":"object","properties":{"intentId":{"minLength":1,"description":"Intent identifier returned by the matching prepare call.","type":"string"},"stamp":{"minLength":1,"description":"Turnkey stamp produced by signing the prepared `activityBody` with the user's WebAuthn authenticator.","type":"string"}},"required":["intentId","stamp"]}},"multipart/form-data":{"schema":{"description":"Commit body for any prepared auth-method activity (add, email-start, remove).","type":"object","properties":{"intentId":{"minLength":1,"description":"Intent identifier returned by the matching prepare call.","type":"string"},"stamp":{"minLength":1,"description":"Turnkey stamp produced by signing the prepared `activityBody` with the user's WebAuthn authenticator.","type":"string"}},"required":["intentId","stamp"]}}}},"responses":{"201":{"description":"The newly registered auth method.","content":{"application/json":{"schema":{"description":"The newly registered auth method.","type":"object","properties":{"data":{"description":"An authentication method registered on the user's embedded wallet sub-organization.","type":"object","properties":{"id":{"description":"Stable identifier for the auth method.","type":"string"},"kind":{"type":"string","enum":["passkey","google","apple","email"]},"label":{"description":"Human-readable label for the method (e.g., the email address, OAuth account label, or passkey nickname).","type":"string"},"addedAt":{"format":"date-time","description":"Timestamp when the method was added (ISO 8601).","type":"string"},"isPrimary":{"description":"Whether this method is the user's primary method. The primary method cannot be removed without first promoting another.","type":"boolean"}},"required":["id","kind","label","addedAt","isPrimary"]}},"required":["data"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1Wallet-kitAuth-methods"}},"/v1/wallet-kit/auth-methods/intents":{"post":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"Prepare add auth method","description":"Prepares a Turnkey activity for adding a new auth method (passkey, OAuth, or email). When a new method must be added, returns `status: \"intent_required\"` and an intent the wallet must stamp. When the same OAuth/email method already exists, returns `status: \"already_exists\"` with the existing method — no commit is needed.","requestBody":{"description":"Prepare request for adding an auth method. Discriminated by `kind`. Email requires a prior call to the email-start flow to obtain `otpId`.","required":true,"content":{"application/json":{"schema":{"description":"Prepare request for adding an auth method. Discriminated by `kind`. Email requires a prior call to the email-start flow to obtain `otpId`.","anyOf":[{"type":"object","properties":{"kind":{"const":"passkey","type":"string"},"challenge":{"minLength":1,"description":"Passkey/WebAuthn challenge produced by the client SDK.","type":"string"},"label":{"minLength":1,"description":"Optional nickname for this passkey.","type":"string"}},"required":["kind","challenge"]},{"type":"object","properties":{"kind":{"anyOf":[{"const":"google","type":"string"},{"const":"apple","type":"string"}]},"oidcToken":{"minLength":1,"description":"OIDC ID token issued by Google or Apple after a successful sign-in flow on the client.","type":"string"},"label":{"minLength":1,"description":"Optional label for this method.","type":"string"}},"required":["kind","oidcToken"]},{"type":"object","properties":{"kind":{"const":"email","type":"string"},"email":{"minLength":1,"format":"email","description":"Email address to register. Must match the OTP start email.","type":"string"},"otp":{"minLength":1,"description":"One-time passcode delivered to `email` by the email-start flow.","type":"string"},"otpId":{"minLength":1,"description":"OTP identifier returned by the email-start commit endpoint.","type":"string"},"targetPublicKey":{"minLength":1,"description":"Turnkey iframe public key produced by the client SDK (e.g. `authIframeClient.iframePublicKey`).","type":"string"},"label":{"minLength":1,"description":"Optional label for this method.","type":"string"}},"required":["kind","email","otp","otpId","targetPublicKey"]}]}},"application/x-www-form-urlencoded":{"schema":{"description":"Prepare request for adding an auth method. Discriminated by `kind`. Email requires a prior call to the email-start flow to obtain `otpId`.","anyOf":[{"type":"object","properties":{"kind":{"const":"passkey","type":"string"},"challenge":{"minLength":1,"description":"Passkey/WebAuthn challenge produced by the client SDK.","type":"string"},"label":{"minLength":1,"description":"Optional nickname for this passkey.","type":"string"}},"required":["kind","challenge"]},{"type":"object","properties":{"kind":{"anyOf":[{"const":"google","type":"string"},{"const":"apple","type":"string"}]},"oidcToken":{"minLength":1,"description":"OIDC ID token issued by Google or Apple after a successful sign-in flow on the client.","type":"string"},"label":{"minLength":1,"description":"Optional label for this method.","type":"string"}},"required":["kind","oidcToken"]},{"type":"object","properties":{"kind":{"const":"email","type":"string"},"email":{"minLength":1,"format":"email","description":"Email address to register. Must match the OTP start email.","type":"string"},"otp":{"minLength":1,"description":"One-time passcode delivered to `email` by the email-start flow.","type":"string"},"otpId":{"minLength":1,"description":"OTP identifier returned by the email-start commit endpoint.","type":"string"},"targetPublicKey":{"minLength":1,"description":"Turnkey iframe public key produced by the client SDK (e.g. `authIframeClient.iframePublicKey`).","type":"string"},"label":{"minLength":1,"description":"Optional label for this method.","type":"string"}},"required":["kind","email","otp","otpId","targetPublicKey"]}]}},"multipart/form-data":{"schema":{"description":"Prepare request for adding an auth method. Discriminated by `kind`. Email requires a prior call to the email-start flow to obtain `otpId`.","anyOf":[{"type":"object","properties":{"kind":{"const":"passkey","type":"string"},"challenge":{"minLength":1,"description":"Passkey/WebAuthn challenge produced by the client SDK.","type":"string"},"label":{"minLength":1,"description":"Optional nickname for this passkey.","type":"string"}},"required":["kind","challenge"]},{"type":"object","properties":{"kind":{"anyOf":[{"const":"google","type":"string"},{"const":"apple","type":"string"}]},"oidcToken":{"minLength":1,"description":"OIDC ID token issued by Google or Apple after a successful sign-in flow on the client.","type":"string"},"label":{"minLength":1,"description":"Optional label for this method.","type":"string"}},"required":["kind","oidcToken"]},{"type":"object","properties":{"kind":{"const":"email","type":"string"},"email":{"minLength":1,"format":"email","description":"Email address to register. Must match the OTP start email.","type":"string"},"otp":{"minLength":1,"description":"One-time passcode delivered to `email` by the email-start flow.","type":"string"},"otpId":{"minLength":1,"description":"OTP identifier returned by the email-start commit endpoint.","type":"string"},"targetPublicKey":{"minLength":1,"description":"Turnkey iframe public key produced by the client SDK (e.g. `authIframeClient.iframePublicKey`).","type":"string"},"label":{"minLength":1,"description":"Optional label for this method.","type":"string"}},"required":["kind","email","otp","otpId","targetPublicKey"]}]}}}},"responses":{"200":{"description":"Prepare response. Branch on `status`: `intent_required` requires stamping + commit; `already_exists` returns the existing method directly.","content":{"application/json":{"schema":{"description":"Prepare response. Branch on `status`: `intent_required` requires stamping + commit; `already_exists` returns the existing method directly.","anyOf":[{"description":"A new auth method is being added. The wallet must stamp `intent.activityBody` and call commit with the returned `intentId` and stamp.","type":"object","properties":{"status":{"const":"intent_required","type":"string"},"intent":{"description":"Prepared activity that the embedded wallet must stamp before commit.","type":"object","properties":{"intentId":{"description":"Single-use intent identifier returned by prepare. Pass back to commit alongside the user's stamp. TTL is 60 seconds.","type":"string"},"activityBody":{"description":"Turnkey activity body bytes for the wallet to stamp. Sign with the user's WebAuthn authenticator and submit the stamp via the matching commit endpoint.","type":"string"},"timestampMs":{"description":"Unix-millisecond timestamp the activity body was issued at. Pass through verbatim when stamping.","type":"string"},"expiresAt":{"format":"date-time","description":"ISO 8601 timestamp at which the prepared intent expires (60s after issue).","type":"string"}},"required":["intentId","activityBody","timestampMs","expiresAt"]}},"required":["status","intent"]},{"description":"The OAuth/email method is already registered. No commit is needed; the existing method is returned.","type":"object","properties":{"status":{"const":"already_exists","type":"string"},"data":{"description":"An authentication method registered on the user's embedded wallet sub-organization.","type":"object","properties":{"id":{"description":"Stable identifier for the auth method.","type":"string"},"kind":{"description":"Authentication method kind. `passkey` is a WebAuthn authenticator on this device; `google`/`apple` are OIDC tokens; `email` is a verified email address used for OTP login.","anyOf":[{"const":"passkey","type":"string"},{"const":"google","type":"string"},{"const":"apple","type":"string"},{"const":"email","type":"string"}]},"label":{"description":"Human-readable label for the method (e.g., the email address, OAuth account label, or passkey nickname).","type":"string"},"addedAt":{"format":"date-time","description":"Timestamp when the method was added (ISO 8601).","type":"string"},"isPrimary":{"description":"Whether this method is the user's primary method. The primary method cannot be removed without first promoting another.","type":"boolean"}},"required":["id","kind","label","addedAt","isPrimary"]}},"required":["status","data"]}]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"429":{"description":"Response for status 429","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1Wallet-kitAuth-methodsIntents"}},"/v1/wallet-kit/auth-methods/email/start/intents":{"post":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"Prepare email OTP start","description":"Prepares a Turnkey activity for starting the email-OTP flow. Stamp `intent.activityBody` and call the matching commit endpoint to dispatch the OTP.","requestBody":{"description":"Prepare body for starting the email-OTP flow.","required":true,"content":{"application/json":{"schema":{"description":"Prepare body for starting the email-OTP flow.","type":"object","properties":{"email":{"minLength":1,"format":"email","description":"Email address to send the one-time passcode to.","type":"string"}},"required":["email"]}},"application/x-www-form-urlencoded":{"schema":{"description":"Prepare body for starting the email-OTP flow.","type":"object","properties":{"email":{"minLength":1,"format":"email","description":"Email address to send the one-time passcode to.","type":"string"}},"required":["email"]}},"multipart/form-data":{"schema":{"description":"Prepare body for starting the email-OTP flow.","type":"object","properties":{"email":{"minLength":1,"format":"email","description":"Email address to send the one-time passcode to.","type":"string"}},"required":["email"]}}}},"responses":{"200":{"description":"Prepared email-start activity. Stamp `intent.activityBody` and submit via the matching commit endpoint.","content":{"application/json":{"schema":{"description":"Prepared email-start activity. Stamp `intent.activityBody` and submit via the matching commit endpoint.","type":"object","properties":{"intent":{"description":"Prepared activity that the embedded wallet must stamp before commit.","type":"object","properties":{"intentId":{"description":"Single-use intent identifier returned by prepare. Pass back to commit alongside the user's stamp. TTL is 60 seconds.","type":"string"},"activityBody":{"description":"Turnkey activity body bytes for the wallet to stamp. Sign with the user's WebAuthn authenticator and submit the stamp via the matching commit endpoint.","type":"string"},"timestampMs":{"description":"Unix-millisecond timestamp the activity body was issued at. Pass through verbatim when stamping.","type":"string"},"expiresAt":{"format":"date-time","description":"ISO 8601 timestamp at which the prepared intent expires (60s after issue).","type":"string"}},"required":["intentId","activityBody","timestampMs","expiresAt"]}},"required":["intent"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"429":{"description":"Response for status 429","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1Wallet-kitAuth-methodsEmailStartIntents"}},"/v1/wallet-kit/auth-methods/email/start":{"post":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"Commit email OTP start","description":"Submits the user's stamp for a previously prepared email-start intent. Dispatches the OTP and returns the `otpId` to pass back to the add-auth-method prepare call.","requestBody":{"description":"Commit body for any prepared auth-method activity (add, email-start, remove).","required":true,"content":{"application/json":{"schema":{"description":"Commit body for any prepared auth-method activity (add, email-start, remove).","type":"object","properties":{"intentId":{"minLength":1,"description":"Intent identifier returned by the matching prepare call.","type":"string"},"stamp":{"minLength":1,"description":"Turnkey stamp produced by signing the prepared `activityBody` with the user's WebAuthn authenticator.","type":"string"}},"required":["intentId","stamp"]}},"application/x-www-form-urlencoded":{"schema":{"description":"Commit body for any prepared auth-method activity (add, email-start, remove).","type":"object","properties":{"intentId":{"minLength":1,"description":"Intent identifier returned by the matching prepare call.","type":"string"},"stamp":{"minLength":1,"description":"Turnkey stamp produced by signing the prepared `activityBody` with the user's WebAuthn authenticator.","type":"string"}},"required":["intentId","stamp"]}},"multipart/form-data":{"schema":{"description":"Commit body for any prepared auth-method activity (add, email-start, remove).","type":"object","properties":{"intentId":{"minLength":1,"description":"Intent identifier returned by the matching prepare call.","type":"string"},"stamp":{"minLength":1,"description":"Turnkey stamp produced by signing the prepared `activityBody` with the user's WebAuthn authenticator.","type":"string"}},"required":["intentId","stamp"]}}}},"responses":{"202":{"description":"Email-start commit response. The OTP has been dispatched.","content":{"application/json":{"schema":{"description":"Email-start commit response. The OTP has been dispatched.","type":"object","properties":{"data":{"type":"object","properties":{"email":{"format":"email","description":"Email the OTP was sent to.","type":"string"},"otpId":{"description":"OTP identifier to pass back to the add-auth-method prepare call along with the OTP.","type":"string"}},"required":["email","otpId"]}},"required":["data"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1Wallet-kitAuth-methodsEmailStart"}},"/v1/wallet-kit/auth-methods/{id}/intents":{"post":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"Prepare remove auth method","description":"Prepares a Turnkey activity for removing an auth method. Stamp `intent.activityBody` and call DELETE with the same `intentId` and stamp. Returns 409 if the method is the user's last (`LAST_AUTH_METHOD`).","parameters":[{"name":"id","in":"path","required":true,"schema":{"minLength":1,"description":"Auth method identifier.","type":"string"}}],"responses":{"200":{"description":"Prepared remove activity. Stamp `intent.activityBody` and submit via DELETE with the same `intentId`.","content":{"application/json":{"schema":{"description":"Prepared remove activity. Stamp `intent.activityBody` and submit via DELETE with the same `intentId`.","type":"object","properties":{"intent":{"description":"Prepared activity that the embedded wallet must stamp before commit.","type":"object","properties":{"intentId":{"description":"Single-use intent identifier returned by prepare. Pass back to commit alongside the user's stamp. TTL is 60 seconds.","type":"string"},"activityBody":{"description":"Turnkey activity body bytes for the wallet to stamp. Sign with the user's WebAuthn authenticator and submit the stamp via the matching commit endpoint.","type":"string"},"timestampMs":{"description":"Unix-millisecond timestamp the activity body was issued at. Pass through verbatim when stamping.","type":"string"},"expiresAt":{"format":"date-time","description":"ISO 8601 timestamp at which the prepared intent expires (60s after issue).","type":"string"}},"required":["intentId","activityBody","timestampMs","expiresAt"]}},"required":["intent"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1Wallet-kitAuth-methodsByIdIntents"}},"/v1/wallet-kit/auth-methods/{id}":{"delete":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"Commit remove auth method","description":"Submits the user's stamp for a previously prepared remove-auth-method intent. Returns 204 on success. Returns 409 if the method is the user's last (`LAST_AUTH_METHOD`).","parameters":[{"name":"id","in":"path","required":true,"schema":{"minLength":1,"description":"Auth method identifier.","type":"string"}}],"requestBody":{"description":"Commit body for any prepared auth-method activity (add, email-start, remove).","required":true,"content":{"application/json":{"schema":{"description":"Commit body for any prepared auth-method activity (add, email-start, remove).","type":"object","properties":{"intentId":{"minLength":1,"description":"Intent identifier returned by the matching prepare call.","type":"string"},"stamp":{"minLength":1,"description":"Turnkey stamp produced by signing the prepared `activityBody` with the user's WebAuthn authenticator.","type":"string"}},"required":["intentId","stamp"]}},"application/x-www-form-urlencoded":{"schema":{"description":"Commit body for any prepared auth-method activity (add, email-start, remove).","type":"object","properties":{"intentId":{"minLength":1,"description":"Intent identifier returned by the matching prepare call.","type":"string"},"stamp":{"minLength":1,"description":"Turnkey stamp produced by signing the prepared `activityBody` with the user's WebAuthn authenticator.","type":"string"}},"required":["intentId","stamp"]}},"multipart/form-data":{"schema":{"description":"Commit body for any prepared auth-method activity (add, email-start, remove).","type":"object","properties":{"intentId":{"minLength":1,"description":"Intent identifier returned by the matching prepare call.","type":"string"},"stamp":{"minLength":1,"description":"Turnkey stamp produced by signing the prepared `activityBody` with the user's WebAuthn authenticator.","type":"string"}},"required":["intentId","stamp"]}}}},"responses":{"204":{"description":"Response for status 204","content":{"type":"void"}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"409":{"description":"Response for status 409","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"deleteV1Wallet-kitAuth-methodsById"}},"/v1/wallet-kit/yield/solana/kamino/vaults":{"get":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"List Kamino yield vaults","description":"Returns listed USDC Kamino vaults on Solana by default. Set `includeUnlisted=true` to include unlisted vaults.","parameters":[{"name":"asset","in":"query","required":false,"schema":{"default":"USDC","description":"Deposit asset to filter by. Only USDC is currently supported.","const":"USDC","type":"string"}},{"name":"includeUnlisted","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"Paginated Kamino yield vault list.","content":{"application/json":{"schema":{"description":"Paginated Kamino yield vault list.","type":"object","properties":{"data":{"type":"array","items":{"description":"Kamino yield vault available through Wallet Kit.","type":"object","properties":{"id":{"description":"Kamino vault identifier.","type":"string"},"protocol":{"const":"kamino","type":"string"},"chain":{"const":"solana","type":"string"},"name":{"type":"string"},"isListed":{"type":"boolean"},"depositToken":{"type":"object","properties":{"symbol":{"type":"string","enum":["USDC","UNKNOWN"]},"mint":{"type":"string"},"decimals":{"anyOf":[{"format":"integer","default":0,"type":"string"},{"type":"integer"}]}},"required":["symbol","mint","decimals"]},"receiptToken":{"type":"object","properties":{"mint":{"type":"string"},"decimals":{"anyOf":[{"format":"integer","default":0,"type":"string"},{"type":"integer"}]}},"required":["mint","decimals"]},"apy":{"type":"object","properties":{"current":{"anyOf":[{"type":"string"},{"type":"null"}]},"actual":{"anyOf":[{"type":"string"},{"type":"null"}]},"theoretical":{"anyOf":[{"type":"string"},{"type":"null"}]},"apy24h":{"anyOf":[{"type":"string"},{"type":"null"}]},"apy7d":{"anyOf":[{"type":"string"},{"type":"null"}]},"apy30d":{"anyOf":[{"type":"string"},{"type":"null"}]},"apy90d":{"anyOf":[{"type":"string"},{"type":"null"}]},"apy180d":{"anyOf":[{"type":"string"},{"type":"null"}]},"apy365d":{"anyOf":[{"type":"string"},{"type":"null"}]},"farmRewards":{"anyOf":[{"type":"string"},{"type":"null"}]},"incentives":{"anyOf":[{"type":"string"},{"type":"null"}]},"reservesIncentives":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["current","actual","theoretical","apy24h","apy7d","apy30d","apy90d","apy180d","apy365d","farmRewards","incentives","reservesIncentives"]},"tvl":{"type":"object","properties":{"tokenAmount":{"anyOf":[{"type":"string"},{"type":"null"}]},"usdAmount":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tokenAmount","usdAmount"]},"liquidity":{"type":"object","properties":{"availableTokenAmount":{"anyOf":[{"type":"string"},{"type":"null"}]},"investedTokenAmount":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["availableTokenAmount","investedTokenAmount"]},"sharePrice":{"anyOf":[{"type":"string"},{"type":"null"}]},"tokensPerShare":{"anyOf":[{"type":"string"},{"type":"null"}]},"numberOfHolders":{"anyOf":[{"anyOf":[{"format":"integer","default":0,"type":"string"},{"type":"integer"}]},{"type":"null"}]},"fees":{"type":"object","properties":{"performanceFeeBps":{"anyOf":[{"format":"integer","default":0,"type":"string"},{"type":"integer"}]},"managementFeeBps":{"anyOf":[{"format":"integer","default":0,"type":"string"},{"type":"integer"}]},"withdrawalPenaltyBps":{"anyOf":[{"format":"integer","default":0,"type":"string"},{"type":"integer"}]}},"required":["performanceFeeBps","managementFeeBps","withdrawalPenaltyBps"]},"limits":{"type":"object","properties":{"minDepositAmount":{"type":"string"},"minWithdrawAmount":{"type":"string"}},"required":["minDepositAmount","minWithdrawAmount"]},"risk":{"type":"object","properties":{"level":{"type":"string","enum":["low","medium","high","unknown"]},"labels":{"type":"array","items":{"type":"string"}},"whitelistedReservesOnly":{"type":"boolean"},"whitelistedInvestOnly":{"type":"boolean"},"hasFirstLossCapitalFarm":{"type":"boolean"},"firstLossCapitalFarm":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["level","labels","whitelistedReservesOnly","whitelistedInvestOnly","hasFirstLossCapitalFarm","firstLossCapitalFarm"]},"allocations":{"type":"array","items":{"type":"object","properties":{"reserve":{"type":"string"},"marketName":{"anyOf":[{"type":"string"},{"type":"null"}]},"supplyApy":{"anyOf":[{"type":"string"},{"type":"null"}]},"totalSupplyUsd":{"anyOf":[{"type":"string"},{"type":"null"}]},"maxLtv":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["reserve","marketName","supplyApy","totalSupplyUsd","maxLtv"]}}},"required":["id","protocol","chain","name","isListed","depositToken","receiptToken","apy","tvl","liquidity","sharePrice","tokensPerShare","numberOfHolders","fees","limits","risk","allocations"]}},"hasMore":{"examples":[false],"description":"Whether more results are available. Always false today.","type":"boolean"},"nextCursor":{"description":"Opaque pagination cursor. Always null today.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","hasMore","nextCursor"]}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"502":{"description":"Response for status 502","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Wallet-kitYieldSolanaKaminoVaults"}},"/v1/wallet-kit/yield/solana/kamino/vaults/{vaultId}":{"get":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"Get Kamino yield vault","description":"Returns one Solana Kamino vault. Unlisted vaults return 404 unless `includeUnlisted=true` is supplied.","parameters":[{"name":"vaultId","in":"path","required":true,"schema":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"}},{"name":"asset","in":"query","required":false,"schema":{"default":"USDC","description":"Deposit asset to filter by. Only USDC is currently supported.","const":"USDC","type":"string"}},{"name":"includeUnlisted","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"Kamino yield vault available through Wallet Kit.","content":{"application/json":{"schema":{"description":"Kamino yield vault available through Wallet Kit.","type":"object","properties":{"id":{"description":"Kamino vault identifier.","type":"string"},"protocol":{"const":"kamino","type":"string"},"chain":{"const":"solana","type":"string"},"name":{"type":"string"},"isListed":{"type":"boolean"},"depositToken":{"type":"object","properties":{"symbol":{"type":"string","enum":["USDC","UNKNOWN"]},"mint":{"type":"string"},"decimals":{"anyOf":[{"format":"integer","default":0,"type":"string"},{"type":"integer"}]}},"required":["symbol","mint","decimals"]},"receiptToken":{"type":"object","properties":{"mint":{"type":"string"},"decimals":{"anyOf":[{"format":"integer","default":0,"type":"string"},{"type":"integer"}]}},"required":["mint","decimals"]},"apy":{"type":"object","properties":{"current":{"anyOf":[{"type":"string"},{"type":"null"}]},"actual":{"anyOf":[{"type":"string"},{"type":"null"}]},"theoretical":{"anyOf":[{"type":"string"},{"type":"null"}]},"apy24h":{"anyOf":[{"type":"string"},{"type":"null"}]},"apy7d":{"anyOf":[{"type":"string"},{"type":"null"}]},"apy30d":{"anyOf":[{"type":"string"},{"type":"null"}]},"apy90d":{"anyOf":[{"type":"string"},{"type":"null"}]},"apy180d":{"anyOf":[{"type":"string"},{"type":"null"}]},"apy365d":{"anyOf":[{"type":"string"},{"type":"null"}]},"farmRewards":{"anyOf":[{"type":"string"},{"type":"null"}]},"incentives":{"anyOf":[{"type":"string"},{"type":"null"}]},"reservesIncentives":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["current","actual","theoretical","apy24h","apy7d","apy30d","apy90d","apy180d","apy365d","farmRewards","incentives","reservesIncentives"]},"tvl":{"type":"object","properties":{"tokenAmount":{"anyOf":[{"type":"string"},{"type":"null"}]},"usdAmount":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tokenAmount","usdAmount"]},"liquidity":{"type":"object","properties":{"availableTokenAmount":{"anyOf":[{"type":"string"},{"type":"null"}]},"investedTokenAmount":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["availableTokenAmount","investedTokenAmount"]},"sharePrice":{"anyOf":[{"type":"string"},{"type":"null"}]},"tokensPerShare":{"anyOf":[{"type":"string"},{"type":"null"}]},"numberOfHolders":{"anyOf":[{"anyOf":[{"format":"integer","default":0,"type":"string"},{"type":"integer"}]},{"type":"null"}]},"fees":{"type":"object","properties":{"performanceFeeBps":{"anyOf":[{"format":"integer","default":0,"type":"string"},{"type":"integer"}]},"managementFeeBps":{"anyOf":[{"format":"integer","default":0,"type":"string"},{"type":"integer"}]},"withdrawalPenaltyBps":{"anyOf":[{"format":"integer","default":0,"type":"string"},{"type":"integer"}]}},"required":["performanceFeeBps","managementFeeBps","withdrawalPenaltyBps"]},"limits":{"type":"object","properties":{"minDepositAmount":{"type":"string"},"minWithdrawAmount":{"type":"string"}},"required":["minDepositAmount","minWithdrawAmount"]},"risk":{"type":"object","properties":{"level":{"type":"string","enum":["low","medium","high","unknown"]},"labels":{"type":"array","items":{"type":"string"}},"whitelistedReservesOnly":{"type":"boolean"},"whitelistedInvestOnly":{"type":"boolean"},"hasFirstLossCapitalFarm":{"type":"boolean"},"firstLossCapitalFarm":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["level","labels","whitelistedReservesOnly","whitelistedInvestOnly","hasFirstLossCapitalFarm","firstLossCapitalFarm"]},"allocations":{"type":"array","items":{"type":"object","properties":{"reserve":{"type":"string"},"marketName":{"anyOf":[{"type":"string"},{"type":"null"}]},"supplyApy":{"anyOf":[{"type":"string"},{"type":"null"}]},"totalSupplyUsd":{"anyOf":[{"type":"string"},{"type":"null"}]},"maxLtv":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["reserve","marketName","supplyApy","totalSupplyUsd","maxLtv"]}}},"required":["id","protocol","chain","name","isListed","depositToken","receiptToken","apy","tvl","liquidity","sharePrice","tokensPerShare","numberOfHolders","fees","limits","risk","allocations"]}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"502":{"description":"Response for status 502","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Wallet-kitYieldSolanaKaminoVaultsByVaultId"}},"/v1/wallet-kit/yield/solana/kamino/vaults/{vaultId}/history":{"get":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"List Kamino yield vault history","description":"Returns time-series metrics for one Solana Kamino vault.","parameters":[{"name":"vaultId","in":"path","required":true,"schema":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"}},{"name":"start","in":"query","required":false,"schema":{"format":"date-time","description":"ISO 8601 datetime.","examples":["2026-01-01T00:00:00.000Z"],"type":"string"}},{"name":"end","in":"query","required":false,"schema":{"format":"date-time","description":"ISO 8601 datetime.","examples":["2026-01-01T00:00:00.000Z"],"type":"string"}}],"responses":{"200":{"description":"Paginated Kamino yield history.","content":{"application/json":{"schema":{"description":"Paginated Kamino yield history.","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"createdAt":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}]},"tvlUsd":{"anyOf":[{"type":"string"},{"type":"null"}]},"apy":{"anyOf":[{"type":"string"},{"type":"null"}]},"cumulativeInterestEarnedUsd":{"anyOf":[{"type":"string"},{"type":"null"}]},"raw":{"description":"Raw provider payload retained for diagnostics.","type":"object","patternProperties":{"^(.*)$":{}}}},"required":["createdAt","tvlUsd","apy","cumulativeInterestEarnedUsd","raw"]}},"hasMore":{"examples":[false],"description":"Whether more results are available. Always false today.","type":"boolean"},"nextCursor":{"description":"Opaque pagination cursor. Always null today.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","hasMore","nextCursor"]}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"502":{"description":"Response for status 502","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Wallet-kitYieldSolanaKaminoVaultsByVaultIdHistory"}},"/v1/wallet-kit/yield/solana/kamino/positions":{"get":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"List Kamino yield positions","description":"Returns Solana Kamino vault positions for the supplied wallet address.","parameters":[{"name":"walletAddress","in":"query","required":true,"schema":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"}},{"name":"asset","in":"query","required":false,"schema":{"default":"USDC","description":"Deposit asset to filter by. Only USDC is currently supported.","const":"USDC","type":"string"}},{"name":"includeUnlisted","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"Paginated Kamino yield positions.","content":{"application/json":{"schema":{"description":"Paginated Kamino yield positions.","type":"object","properties":{"data":{"type":"array","items":{"description":"Kamino yield position for a Solana wallet.","type":"object","properties":{"vaultId":{"type":"string"},"walletAddress":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"vaultName":{"anyOf":[{"type":"string"},{"type":"null"}]},"depositToken":{"type":"object","properties":{"symbol":{"type":"string","enum":["USDC","UNKNOWN"]},"mint":{"anyOf":[{"type":"string"},{"type":"null"}]},"decimals":{"anyOf":[{"anyOf":[{"format":"integer","default":0,"type":"string"},{"type":"integer"}]},{"type":"null"}]}},"required":["symbol","mint","decimals"]},"shares":{"type":"object","properties":{"staked":{"type":"string"},"unstaked":{"type":"string"},"total":{"type":"string"}},"required":["staked","unstaked","total"]},"value":{"type":"object","properties":{"tokenAmount":{"anyOf":[{"type":"string"},{"type":"null"}]},"usdAmount":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tokenAmount","usdAmount"]},"sharePrice":{"anyOf":[{"type":"string"},{"type":"null"}]},"tokensPerShare":{"anyOf":[{"type":"string"},{"type":"null"}]},"raw":{"description":"Raw provider payload retained for diagnostics.","type":"object","patternProperties":{"^(.*)$":{}}}},"required":["vaultId","walletAddress","vaultName","depositToken","shares","value","sharePrice","tokensPerShare","raw"]}},"hasMore":{"examples":[false],"description":"Whether more results are available. Always false today.","type":"boolean"},"nextCursor":{"description":"Opaque pagination cursor. Always null today.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","hasMore","nextCursor"]}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"502":{"description":"Response for status 502","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Wallet-kitYieldSolanaKaminoPositions"}},"/v1/wallet-kit/yield/solana/kamino/positions/{vaultId}":{"get":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"Get Kamino yield position","description":"`data` is a Solana Kamino vault position for the supplied wallet address, or null when Kamino reports no position.","parameters":[{"name":"vaultId","in":"path","required":true,"schema":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"}},{"name":"walletAddress","in":"query","required":true,"schema":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"}}],"responses":{"200":{"description":"Kamino yield position lookup response.","content":{"application/json":{"schema":{"description":"Kamino yield position lookup response.","type":"object","properties":{"data":{"description":"Kamino yield position, or null when Kamino reports no position.","anyOf":[{"description":"Kamino yield position for a Solana wallet.","type":"object","properties":{"vaultId":{"type":"string"},"walletAddress":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"vaultName":{"anyOf":[{"type":"string"},{"type":"null"}]},"depositToken":{"type":"object","properties":{"symbol":{"anyOf":[{"const":"USDC","type":"string"},{"const":"UNKNOWN","type":"string"}]},"mint":{"anyOf":[{"type":"string"},{"type":"null"}]},"decimals":{"anyOf":[{"anyOf":[{"format":"integer","default":0,"type":"string"},{"type":"integer"}]},{"type":"null"}]}},"required":["symbol","mint","decimals"]},"shares":{"type":"object","properties":{"staked":{"type":"string"},"unstaked":{"type":"string"},"total":{"type":"string"}},"required":["staked","unstaked","total"]},"value":{"type":"object","properties":{"tokenAmount":{"anyOf":[{"type":"string"},{"type":"null"}]},"usdAmount":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tokenAmount","usdAmount"]},"sharePrice":{"anyOf":[{"type":"string"},{"type":"null"}]},"tokensPerShare":{"anyOf":[{"type":"string"},{"type":"null"}]},"raw":{"description":"Raw provider payload retained for diagnostics.","type":"object","patternProperties":{"^(.*)$":{}}}},"required":["vaultId","walletAddress","vaultName","depositToken","shares","value","sharePrice","tokensPerShare","raw"]},{"type":"null"}]}},"required":["data"]}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"502":{"description":"Response for status 502","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Wallet-kitYieldSolanaKaminoPositionsByVaultId"}},"/v1/wallet-kit/yield/solana/kamino/positions/{vaultId}/history":{"get":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"List Kamino yield position history","description":"Returns time-series metrics for one Solana Kamino vault position.","parameters":[{"name":"vaultId","in":"path","required":true,"schema":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"}},{"name":"walletAddress","in":"query","required":true,"schema":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"}},{"name":"start","in":"query","required":false,"schema":{"format":"date-time","description":"ISO 8601 datetime.","examples":["2026-01-01T00:00:00.000Z"],"type":"string"}},{"name":"end","in":"query","required":false,"schema":{"format":"date-time","description":"ISO 8601 datetime.","examples":["2026-01-01T00:00:00.000Z"],"type":"string"}}],"responses":{"200":{"description":"Paginated Kamino yield history.","content":{"application/json":{"schema":{"description":"Paginated Kamino yield history.","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"createdAt":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}]},"tvlUsd":{"anyOf":[{"type":"string"},{"type":"null"}]},"apy":{"anyOf":[{"type":"string"},{"type":"null"}]},"cumulativeInterestEarnedUsd":{"anyOf":[{"type":"string"},{"type":"null"}]},"raw":{"description":"Raw provider payload retained for diagnostics.","type":"object","patternProperties":{"^(.*)$":{}}}},"required":["createdAt","tvlUsd","apy","cumulativeInterestEarnedUsd","raw"]}},"hasMore":{"examples":[false],"description":"Whether more results are available. Always false today.","type":"boolean"},"nextCursor":{"description":"Opaque pagination cursor. Always null today.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","hasMore","nextCursor"]}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"502":{"description":"Response for status 502","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Wallet-kitYieldSolanaKaminoPositionsByVaultIdHistory"}},"/v1/wallet-kit/yield/solana/kamino/positions/{vaultId}/pnl":{"get":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"Get Kamino yield position PnL","description":"Returns aggregate PnL and cost basis for one Solana Kamino vault position.","parameters":[{"name":"vaultId","in":"path","required":true,"schema":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"}},{"name":"walletAddress","in":"query","required":true,"schema":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"}}],"responses":{"200":{"description":"Kamino yield PnL for a wallet position.","content":{"application/json":{"schema":{"description":"Kamino yield PnL for a wallet position.","type":"object","properties":{"vaultId":{"type":"string"},"walletAddress":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"totalPnl":{"type":"object","properties":{"usd":{"type":"string"},"sol":{"type":"string"},"token":{"type":"string"}},"required":["usd","sol","token"]},"totalCostBasis":{"type":"object","properties":{"usd":{"type":"string"},"sol":{"type":"string"},"token":{"type":"string"}},"required":["usd","sol","token"]}},"required":["vaultId","walletAddress","totalPnl","totalCostBasis"]}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"502":{"description":"Response for status 502","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Wallet-kitYieldSolanaKaminoPositionsByVaultIdPnl"}},"/v1/wallet-kit/yield/solana/kamino/transactions":{"get":{"tags":["Wallet Kit"],"security":[{"bearerAuth":[]}],"summary":"List Kamino yield transactions","description":"Returns Kamino vault activity for the supplied Solana wallet address. `vaultId` is optional.","parameters":[{"name":"walletAddress","in":"query","required":true,"schema":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"}},{"name":"vaultId","in":"query","required":false,"schema":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"}},{"name":"asset","in":"query","required":false,"schema":{"default":"USDC","description":"Deposit asset to filter by. Only USDC is currently supported.","const":"USDC","type":"string"}},{"name":"includeUnlisted","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"Paginated Kamino yield transactions.","content":{"application/json":{"schema":{"description":"Paginated Kamino yield transactions.","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"walletAddress":{"minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$","description":"Solana public key (base58).","examples":["8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj"],"type":"string"},"vaultId":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"anyOf":[{"type":"string"},{"type":"null"}]},"signature":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}]},"tokenMint":{"anyOf":[{"type":"string"},{"type":"null"}]},"tokenAmount":{"anyOf":[{"type":"string"},{"type":"null"}]},"tokenPrice":{"anyOf":[{"type":"string"},{"type":"null"}]},"solPrice":{"anyOf":[{"type":"string"},{"type":"null"}]},"sharePrice":{"anyOf":[{"type":"string"},{"type":"null"}]},"numberOfShares":{"anyOf":[{"type":"string"},{"type":"null"}]},"usdValue":{"anyOf":[{"type":"string"},{"type":"null"}]},"latestPosition":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"raw":{"description":"Raw provider payload retained for diagnostics.","type":"object","patternProperties":{"^(.*)$":{}}}},"required":["id","walletAddress","vaultId","kind","signature","createdAt","tokenMint","tokenAmount","tokenPrice","solPrice","sharePrice","numberOfShares","usdValue","latestPosition","raw"]}},"hasMore":{"examples":[false],"description":"Whether more results are available. Always false today.","type":"boolean"},"nextCursor":{"description":"Opaque pagination cursor. Always null today.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","hasMore","nextCursor"]}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"502":{"description":"Response for status 502","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"getV1Wallet-kitYieldSolanaKaminoTransactions"}},"/v1/sandbox/bypass-kyc":{"post":{"tags":["Sandbox"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Bypass KYC (sandbox only)","description":"Simulate KYC verification for testing purposes. **Only available in sandbox environments** — returns 403 in production.\n\nTo simulate a successful KYC check, pass a `country` code. To simulate a failed check, pass `failed: true`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"country":{"description":"Country code to simulate successful KYC for","examples":["US"],"type":"string"},"failed":{"description":"Set to true to simulate a failed KYC check","type":"boolean"}}}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"country":{"description":"Country code to simulate successful KYC for","examples":["US"],"type":"string"},"failed":{"description":"Set to true to simulate a failed KYC check","type":"boolean"}}}},"multipart/form-data":{"schema":{"type":"object","properties":{"country":{"description":"Country code to simulate successful KYC for","examples":["US"],"type":"string"},"failed":{"description":"Set to true to simulate a failed KYC check","type":"boolean"}}}}}},"responses":{"200":{"description":"The resulting verification document","content":{"application/json":{"schema":{"description":"The resulting verification document"}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1SandboxBypass-kyc"}},"/v1/sandbox/deposits/direct":{"post":{"tags":["Sandbox"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Create a sandbox direct deposit with an armed ACH return","description":"Creates a direct (no-signature) deposit in sandbox and routes the Modern Treasury debit through a return-code-backed receiving account for end-to-end return testing.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"preparationId":{"description":"Opaque public preparation identifier returned by direct prepare","examples":["prep_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"clientContext":{"type":"object","properties":{"clientIp":{"type":"string"},"userAgent":{"type":"string"},"sessionId":{"type":"string"},"deviceId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string"}}},"returnSimulation":{"type":"object","properties":{"code":{"minLength":1,"description":"Sandbox-only ACH return code to simulate through the Modern Treasury provider path","examples":["R10"],"type":"string"}},"required":["code"]}},"required":["preparationId","returnSimulation"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"preparationId":{"description":"Opaque public preparation identifier returned by direct prepare","examples":["prep_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"clientContext":{"type":"object","properties":{"clientIp":{"type":"string"},"userAgent":{"type":"string"},"sessionId":{"type":"string"},"deviceId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string"}}},"returnSimulation":{"type":"object","properties":{"code":{"minLength":1,"description":"Sandbox-only ACH return code to simulate through the Modern Treasury provider path","examples":["R10"],"type":"string"}},"required":["code"]}},"required":["preparationId","returnSimulation"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"preparationId":{"description":"Opaque public preparation identifier returned by direct prepare","examples":["prep_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"clientContext":{"type":"object","properties":{"clientIp":{"type":"string"},"userAgent":{"type":"string"},"sessionId":{"type":"string"},"deviceId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string"}}},"returnSimulation":{"type":"object","properties":{"code":{"minLength":1,"description":"Sandbox-only ACH return code to simulate through the Modern Treasury provider path","examples":["R10"],"type":"string"}},"required":["code"]}},"required":["preparationId","returnSimulation"]}}}},"responses":{"200":{"description":"An ACH debit deposit authorized by the user and processed asynchronously through debit and crypto release lifecycles.","content":{"application/json":{"schema":{"description":"An ACH debit deposit authorized by the user and processed asynchronously through debit and crypto release lifecycles.","type":"object","properties":{"id":{"description":"Opaque public deposit identifier","examples":["dep_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"sourceId":{"description":"Opaque public funding source identifier","examples":["fs_01JV7Q8M4Y8K6N2Z5P3R1T9W0X"],"type":"string"},"status":{"type":"string","enum":["authorized","processing","partially_released","completed","returned","failed"]},"quoteType":{"type":"string","enum":["exact_input","exact_output"]},"priority":{"type":"string","enum":["normal","high"]},"feeRateBps":{"type":"number"},"principalAmountUsd":{"type":"string"},"expectedAssetAmount":{"type":"string"},"grossFeeUsd":{"type":"string"},"feeSubsidyUsd":{"type":"string"},"userFeeUsd":{"type":"string"},"totalDebitAmountUsd":{"type":"string"},"feeSubsidy":{"anyOf":[{"type":"object","properties":{"percentage":{"type":"number"},"percentageBps":{"type":"number"},"maxAmountUsd":{"anyOf":[{"type":"string"},{"type":"null"}]},"appliedAmountUsd":{"type":"string"}},"required":["percentage","percentageBps","maxAmountUsd","appliedAmountUsd"]},{"type":"null"}]},"network":{"type":"string","enum":["solana","ethereum","polygon","base","avalanche","arbitrum"]},"asset":{"description":"Asset sent to the deposit destination","examples":["USDC"],"const":"USDC","type":"string"},"assetAddress":{"type":"string"},"address":{"description":"Destination wallet address for the crypto release","type":"string"},"debitStatus":{"type":"string","enum":["authorized","submitting","submitted","settled","returned","failed"]},"releaseStatus":{"type":"string","enum":["not_started","queued","partial","completed","failed"]},"releaseDecisionMode":{"type":"string","enum":["after_settlement","early_full","early_partial"]},"releasedAmountUsd":{"type":"string"},"confirmedReleasedAmountUsd":{"type":"string"},"exposureAmountUsd":{"type":"string"},"authorizedAt":{"format":"date-time","type":"string"},"createdAt":{"format":"date-time","type":"string"},"settledAt":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}]},"returnedAt":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}]},"completedAt":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}]},"returnCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"returnReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"debitFailureCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"debitFailureReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"releaseFailureCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"releaseFailureReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"payoutTxHash":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","sourceId","status","quoteType","priority","feeRateBps","principalAmountUsd","expectedAssetAmount","grossFeeUsd","feeSubsidyUsd","userFeeUsd","totalDebitAmountUsd","feeSubsidy","network","asset","assetAddress","address","debitStatus","releaseStatus","releaseDecisionMode","releasedAmountUsd","confirmedReleasedAmountUsd","exposureAmountUsd","authorizedAt","createdAt","settledAt","returnedAt","completedAt","returnCode","returnReason","debitFailureCode","debitFailureReason","releaseFailureCode","releaseFailureReason","payoutTxHash"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"403":{"description":"Response for status 403","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","type":"string"},"title":{"description":"A short, human-readable summary of the problem type","type":"string"},"status":{"description":"The HTTP status code","examples":[404],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"resourceType":{"description":"The type of resource that was not found","examples":["user","account","transaction"],"type":"string"},"resourceId":{"description":"The identifier of the resource that was not found","type":"string"}},"required":["title","status","resourceType","resourceId"]}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1SandboxDepositsDirect"}},"/v1/sandbox/bills/activate":{"post":{"tags":["Sandbox"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Activate bills with a sandbox simulation","description":"Starts the bills activation flow in sandbox with a server-side Spinwheel simulation profile.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"consent":{"type":"object","properties":{"termsText":{"minLength":1,"type":"string"},"termsTextVersion":{"minLength":1,"type":"string"},"acceptedAt":{"format":"date-time","type":"string"}},"required":["termsText","termsTextVersion","acceptedAt"]},"clientContext":{"type":"object","properties":{"clientIp":{"type":"string"},"userAgent":{"type":"string"},"sessionId":{"type":"string"},"deviceId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string"}}},"simulation":{"description":"Sandbox-only simulation selector. This replaces provider-specific test inputs like magic phone numbers or dates of birth.","type":"object","properties":{"code":{"type":"string","enum":["profile","profile_debt_small","profile_debt_medium","profile_debt_large","debt_profile_fraud_risk","debt_profile_fetch_failed","kba_test_user","force_additional_verification"]}},"required":["code"]}},"required":["consent","simulation"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"consent":{"type":"object","properties":{"termsText":{"minLength":1,"type":"string"},"termsTextVersion":{"minLength":1,"type":"string"},"acceptedAt":{"format":"date-time","type":"string"}},"required":["termsText","termsTextVersion","acceptedAt"]},"clientContext":{"type":"object","properties":{"clientIp":{"type":"string"},"userAgent":{"type":"string"},"sessionId":{"type":"string"},"deviceId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string"}}},"simulation":{"description":"Sandbox-only simulation selector. This replaces provider-specific test inputs like magic phone numbers or dates of birth.","type":"object","properties":{"code":{"type":"string","enum":["profile","profile_debt_small","profile_debt_medium","profile_debt_large","debt_profile_fraud_risk","debt_profile_fetch_failed","kba_test_user","force_additional_verification"]}},"required":["code"]}},"required":["consent","simulation"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"consent":{"type":"object","properties":{"termsText":{"minLength":1,"type":"string"},"termsTextVersion":{"minLength":1,"type":"string"},"acceptedAt":{"format":"date-time","type":"string"}},"required":["termsText","termsTextVersion","acceptedAt"]},"clientContext":{"type":"object","properties":{"clientIp":{"type":"string"},"userAgent":{"type":"string"},"sessionId":{"type":"string"},"deviceId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string"}}},"simulation":{"description":"Sandbox-only simulation selector. This replaces provider-specific test inputs like magic phone numbers or dates of birth.","type":"object","properties":{"code":{"type":"string","enum":["profile","profile_debt_small","profile_debt_medium","profile_debt_large","debt_profile_fraud_risk","debt_profile_fetch_failed","kba_test_user","force_additional_verification"]}},"required":["code"]}},"required":["consent","simulation"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["activated","already_active","verification_required","failed"]},"activationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"verification":{"type":"object","properties":{"status":{"type":"string","enum":["information_required","challenge_required"]},"challenge":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"options":{"type":"array","items":{"type":"string"}}},"required":["id","prompt","options"]}}},"required":["questions"]}},"required":["status"]},"liabilitiesSynced":{"type":"number"},"syncedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["status","activationId"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"403":{"description":"Response for status 403","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1SandboxBillsActivate"}},"/v1/sandbox/bills/start_verification":{"post":{"tags":["Sandbox"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Start sandbox bills verification","description":"Continues a sandbox bills activation flow into the fallback verification step.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"activationId":{"minLength":1,"type":"string"}},"required":["activationId"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"activationId":{"minLength":1,"type":"string"}},"required":["activationId"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"activationId":{"minLength":1,"type":"string"}},"required":["activationId"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["activated","already_active","verification_required","failed"]},"activationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"verification":{"type":"object","properties":{"status":{"type":"string","enum":["information_required","challenge_required"]},"challenge":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"options":{"type":"array","items":{"type":"string"}}},"required":["id","prompt","options"]}}},"required":["questions"]}},"required":["status"]},"liabilitiesSynced":{"type":"number"},"syncedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["status","activationId"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"403":{"description":"Response for status 403","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1SandboxBillsStart_verification"}},"/v1/sandbox/bills/submit_verification/{activationId}":{"post":{"tags":["Sandbox"],"security":[{"bearerAuth":[]},{"integratorJwt":[]},{"hmacAuth":[],"integratorKey":[],"timestamp":[]}],"summary":"Submit sandbox bills verification challenge","description":"Submits challenge responses for a sandbox bills activation verification flow.","parameters":[{"name":"activationId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"responses":{"minItems":1,"type":"array","items":{"type":"object","properties":{"questionId":{"type":"string"},"value":{"minLength":1,"type":"string"}},"required":["value"]}}},"required":["responses"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"responses":{"minItems":1,"type":"array","items":{"type":"object","properties":{"questionId":{"type":"string"},"value":{"minLength":1,"type":"string"}},"required":["value"]}}},"required":["responses"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"responses":{"minItems":1,"type":"array","items":{"type":"object","properties":{"questionId":{"type":"string"},"value":{"minLength":1,"type":"string"}},"required":["value"]}}},"required":["responses"]}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["activated","already_active","verification_required","failed"]},"activationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"verification":{"type":"object","properties":{"status":{"type":"string","enum":["information_required","challenge_required"]},"challenge":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"options":{"type":"array","items":{"type":"string"}}},"required":["id","prompt","options"]}}},"required":["questions"]}},"required":["status"]},"liabilitiesSynced":{"type":"number"},"syncedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["status","activationId"]}}}},"401":{"description":"Response for status 401","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:auth:token-expired"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Token Expired"],"type":"string"},"status":{"description":"The HTTP status code","examples":[401,403],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","examples":["Bearer token required","Invalid token"],"type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","type":"string"},"realm":{"description":"The authentication realm","examples":["API"],"type":"string"},"scope":{"description":"The required scope for this resource","examples":["read:users","write:orders"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"403":{"description":"Response for status 403","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}},"500":{"description":"Response for status 500","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"about:blank","description":"A URI reference that identifies the problem type","examples":["urn:problem-type:auth:unauthorized","urn:problem-type:system:internal-error"],"type":"string"},"title":{"description":"A short, human-readable summary of the problem type","examples":["Unauthorized","Internal Server Error"],"type":"string"},"status":{"description":"The HTTP status code","examples":[400,401,404,500],"type":"number"},"detail":{"description":"A human-readable explanation specific to this occurrence","type":"string"},"instance":{"description":"A URI reference that identifies the specific occurrence","examples":["/errors/1234567890"],"type":"string"}},"required":["title","status"],"additionalProperties":false}}}}},"operationId":"postV1SandboxBillsSubmit_verificationByActivationId"}}}}