{"openapi":"3.0.3","info":{"title":"Solana Developer Platform API","version":"0.1.0","description":"Public OpenAPI spec generated from supported API schemas and routes. API versioning is path-based: /v1 is the current contract, and breaking changes are introduced under a new path major (for example /v2). The OpenAPI info.version tracks spec/document revision for the current path contract."},"tags":[{"name":"Health","description":"Service health and readiness endpoints."},{"name":"API Keys","description":"API key management endpoints."},{"name":"Wallets","description":"Wallet signing provider configuration and wallet management."},{"name":"Projects","description":"Project and project member management."},{"name":"Issuance","description":"Token issuance, allowlists, and lifecycle operations."},{"name":"Payments","description":"Wallet balances, transfer execution, and ramps."},{"name":"Compliance","description":"Risk and compliance screening endpoints."},{"name":"Counterparties","description":"Counterparty (customer/beneficiary) identity records."},{"name":"Asset Profiles","description":"Issued-asset identity and metadata profiles, plus the public token metadata URI."}],"servers":[{"url":"http://localhost:8787","description":"Local development"},{"url":"https://api.solana.com","description":"Production"}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"Use Authorization: Bearer sk_test_... or sk_live_... with a base64url-encoded suffix."}},"schemas":{"TokenMetadataJson":{"type":"object","properties":{"name":{"type":"string"},"symbol":{"type":"string"},"description":{"type":"string"},"image":{"type":"string"}},"required":["name","symbol"]},"HoldersResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"holders":{"type":"array","items":{"type":"object","additionalProperties":{"nullable":true}}}},"required":["holders"]},"meta":{"type":"object","additionalProperties":{"nullable":true}}},"required":["data"]},"HolderResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"enrollment":{"type":"object","additionalProperties":{"nullable":true}}},"required":["enrollment"]},"meta":{"type":"object","additionalProperties":{"nullable":true}}},"required":["data"]},"EnrollHolderRequest":{"type":"object","properties":{"walletAddress":{"type":"string"},"counterpartyId":{"type":"string","nullable":true},"reviewMode":{"type":"string","enum":["auto","manual"]}},"required":["walletAddress"]}},"parameters":{}},"paths":{"/health":{"get":{"tags":["Health"],"summary":"Health check","operationId":"healthCheck","description":"Returns service health and build metadata.","responses":{"200":{"description":"Service is healthy","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ok"],"description":"Health status."},"timestamp":{"type":"string","format":"date-time","description":"Health check timestamp.","example":"2025-01-01T00:00:00.000Z"},"version":{"type":"string","description":"Service version.","example":"0.1.0"},"environment":{"type":"string","description":"Runtime environment.","example":"production"},"releaseChannel":{"type":"string","enum":["experimental","beta","stable"],"description":"Release channel: which modules this deployment runs.","example":"experimental"}},"required":["status","timestamp","version","environment","releaseChannel"],"description":"Health check response payload."}}}}}}},"/health/ready":{"get":{"tags":["Health"],"summary":"Readiness check","operationId":"healthReadiness","description":"Performs readiness checks for downstream dependencies.","responses":{"200":{"description":"Service is ready","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ready","not_ready"],"description":"Readiness status.","example":"ready"},"timestamp":{"type":"string","format":"date-time","description":"Readiness check timestamp.","example":"2025-01-01T00:00:00.000Z"},"revision":{"type":"string","description":"Cloud Run revision serving the request, or `local` outside Cloud Run.","example":"sdp-prod-api-public-00042-abc"},"checks":{"type":"object","properties":{"database":{"type":"string","enum":["ok","error"],"description":"Database connectivity status.","example":"ok"},"redis":{"type":"string","enum":["ok","error"],"description":"Redis connectivity status.","example":"ok"}},"required":["database","redis"],"description":"Dependency health checks."}},"required":["status","timestamp","revision","checks"],"description":"Readiness check response payload."}}}},"503":{"description":"Service is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ready","not_ready"],"description":"Readiness status.","example":"ready"},"timestamp":{"type":"string","format":"date-time","description":"Readiness check timestamp.","example":"2025-01-01T00:00:00.000Z"},"revision":{"type":"string","description":"Cloud Run revision serving the request, or `local` outside Cloud Run.","example":"sdp-prod-api-public-00042-abc"},"checks":{"type":"object","properties":{"database":{"type":"string","enum":["ok","error"],"description":"Database connectivity status.","example":"ok"},"redis":{"type":"string","enum":["ok","error"],"description":"Redis connectivity status.","example":"ok"}},"required":["database","redis"],"description":"Dependency health checks."}},"required":["status","timestamp","revision","checks"],"description":"Readiness check response payload."}}}}}}},"/v1/api-keys":{"get":{"tags":["API Keys"],"summary":"List API keys","operationId":"listApiKeys","description":"Lists API keys for the authenticated organization.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"API keys","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiKeys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"API key identifier.","example":"key_example"},"name":{"type":"string","description":"API key name.","example":"Primary Key"},"keyPrefix":{"type":"string","description":"API key prefix for display.","example":"sk_test_abc"},"role":{"type":"string","enum":["api_admin","api_developer","api_readonly"],"description":"API key role.","example":"api_developer"},"environment":{"type":"string","enum":["sandbox","production"],"description":"API key environment.","example":"sandbox"},"status":{"type":"string","enum":["active","revoked","expired","deactivated"],"description":"API key status.","example":"active"},"walletScope":{"type":"string","enum":["all","selected"],"description":"Whether the key can use all wallets in scope or only explicitly selected wallets.","example":"selected"},"signingWalletId":{"type":"string","nullable":true,"description":"Default custody wallet bound to this API key for signing.","example":"privy_wallet_123"},"signingWalletIds":{"type":"array","items":{"type":"string"},"description":"All custody wallet IDs bound to this API key.","example":["privy_wallet_123","dfns_wallet_456"]},"walletBindings":{"type":"array","items":{"type":"object","properties":{"walletId":{"type":"string","description":"Custody wallet ID attached to the API key.","example":"privy_wallet_123"},"permissions":{"type":"array","items":{"type":"string","enum":["tokens:read","tokens:write","tokens:admin","payments:read","payments:write","earn:read","earn:write","counterparties:read","counterparties:write","wallets:read","wallets:write","compliance:read","compliance:write","webhooks:read","webhooks:write","transactions:read","transactions:write","audit:read","org:read","org:write","org:admin","api-keys:read","api-keys:write","projects:read","projects:write","projects:admin","project-members:read","project-members:write","sessions:read","sessions:write","custody:read","custody:write","custody:admin","*"],"description":"Permission granted to the API key.","example":"tokens:write"},"description":"Permissions allowed when this wallet is selected.","example":["payments:write","tokens:write"]}},"required":["walletId","permissions"],"description":"Wallet-level permission binding for an API key."},"description":"Wallet bindings and wallet-level permission sets for this API key."},"allowedOperations":{"type":"array","items":{"type":"string","enum":["privacy","payment","ramp","issuance","program","payment_transfer_execute","payment_transfer_batch_execute","recurring_payment_create","recurring_payment_update","recurring_payment_collection","ramp_onramp_quote","ramp_offramp_quote","issuance_allowlist_add_execute","issuance_allowlist_remove_execute","issuance_burn_execute","issuance_deploy_execute","issuance_force_burn_execute","issuance_freeze_execute","issuance_metadata_update_execute","issuance_mint_execute","issuance_pause_execute","issuance_seize_execute","issuance_unfreeze_execute","issuance_unpause_execute","issuance_update_authority_execute","dvp_fund","dvp_settle","earn_vault_deposit","earn_vault_withdrawal","earn_program_withdrawal","rings_shield","rings_transfer_registered","rings_transfer_anonymous","rings_withdraw","rings_merge","rings_timelock_create","rings_timelock_settle","rings_zone_create","rings_ring_exit","rings_ring_entry"],"description":"An operation family (privacy, payment, ramp, issuance, program) or a single operation type. A family entry covers every type in it.","example":"payment"},"description":"Operation families and types this key may perform on the wallets it can access. An empty list places no restriction.","example":["payment","ramp_offramp_quote"]},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time","description":"Timestamp of the last key usage.","example":"2025-01-10T12:00:00.000Z"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Expiration timestamp, if set.","example":"2025-12-31T00:00:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","name","keyPrefix","role","environment","status","walletScope","signingWalletId","signingWalletIds","walletBindings","allowedOperations","lastUsedAt","expiresAt","createdAt"],"description":"API key list item."},"description":"API keys."}},"required":["apiKeys"],"description":"List of API keys."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"post":{"tags":["API Keys"],"summary":"Create API key","operationId":"createApiKey","description":"Creates a new API key. The full key is returned once.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Friendly name for the API key.","example":"Primary Key"},"description":{"type":"string","maxLength":500,"description":"Optional key description.","example":"Used by backend service."},"role":{"type":"string","enum":["api_admin","api_developer","api_readonly"],"description":"Role assigned to this API key.","example":"api_developer"},"permissions":{"type":"array","items":{"type":"string","enum":["tokens:read","tokens:write","tokens:admin","payments:read","payments:write","earn:read","earn:write","counterparties:read","counterparties:write","wallets:read","wallets:write","compliance:read","compliance:write","webhooks:read","webhooks:write","transactions:read","transactions:write","audit:read","org:read","org:write","org:admin","api-keys:read","api-keys:write","projects:read","projects:write","projects:admin","project-members:read","project-members:write","sessions:read","sessions:write","custody:read","custody:write","custody:admin","*"]},"description":"Optional explicit permission set. Requires admin access.","example":["tokens:read","tokens:write"]},"walletScope":{"type":"string","enum":["all","selected"],"description":"Explicit wallet access mode. Use 'all' to allow every wallet in scope or 'selected' to bind specific wallets.","example":"selected"},"allowedIps":{"type":"array","items":{"type":"string"},"description":"Optional list of IPv4/IPv6 addresses or CIDR ranges allowed to use the key.","example":["203.0.113.0/24"]},"allowedOperations":{"type":"array","items":{"type":"string","enum":["privacy","payment","ramp","issuance","program","payment_transfer_execute","payment_transfer_batch_execute","recurring_payment_create","recurring_payment_update","recurring_payment_collection","ramp_onramp_quote","ramp_offramp_quote","issuance_allowlist_add_execute","issuance_allowlist_remove_execute","issuance_burn_execute","issuance_deploy_execute","issuance_force_burn_execute","issuance_freeze_execute","issuance_metadata_update_execute","issuance_mint_execute","issuance_pause_execute","issuance_seize_execute","issuance_unfreeze_execute","issuance_unpause_execute","issuance_update_authority_execute","dvp_fund","dvp_settle","earn_vault_deposit","earn_vault_withdrawal","earn_program_withdrawal","rings_shield","rings_transfer_registered","rings_transfer_anonymous","rings_withdraw","rings_merge","rings_timelock_create","rings_timelock_settle","rings_zone_create","rings_ring_exit","rings_ring_entry"]},"maxItems":40,"description":"Optional operation families and types the key may perform. Omit or pass an empty list for no restriction. A key cannot grant operations outside its own list.","example":["payment","ramp"]},"expiresAt":{"type":"string","format":"date-time","description":"Optional expiration timestamp.","example":"2025-12-31T00:00:00.000Z"},"signingWalletId":{"type":"string","minLength":1,"description":"Optional default custody wallet ID to bind this key to.","example":"privy_wallet_123"},"signingWalletIds":{"type":"array","items":{"type":"string","minLength":1},"description":"Optional list of custody wallet IDs to bind to this key. The first wallet becomes default unless signingWalletId is explicitly set.","example":["privy_wallet_123","dfns_wallet_456"]},"walletBindings":{"type":"array","items":{"type":"object","properties":{"walletId":{"type":"string","minLength":1},"permissions":{"type":"array","items":{"type":"string","enum":["tokens:read","tokens:write","tokens:admin","payments:read","payments:write","earn:read","earn:write","counterparties:read","counterparties:write","wallets:read","wallets:write","compliance:read","compliance:write","webhooks:read","webhooks:write","transactions:read","transactions:write","audit:read","org:read","org:write","org:admin","api-keys:read","api-keys:write","projects:read","projects:write","projects:admin","project-members:read","project-members:write","sessions:read","sessions:write","custody:read","custody:write","custody:admin","*"]}}},"required":["walletId"]},"description":"Optional wallet-level permission bindings. Use this to attach multiple wallets with scoped permissions."},"provisionWallet":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["local","fireblocks","privy","coinbase_cdp","para","turnkey","dfns","ibm_haven","anchorage","utila"],"description":"Provider whose Managed config owns the new wallet. A project holds one active config per provider.","example":"privy"}},"required":["provider"],"not":{"required":["connectionId"]}},{"type":"object","properties":{"connectionId":{"type":"string","minLength":1,"description":"Custody Connection (BYOK) that owns the new wallet.","example":"cconn_123"}},"required":["connectionId"],"not":{"required":["provider"]}}],"description":"Provision a new wallet for this key under exactly one provider account: { provider } for the project's Managed config for that provider, or { connectionId } for a Custody Connection.","example":{"connectionId":"cconn_123"}},"walletLabel":{"type":"string","maxLength":100,"description":"Optional label for a provisioned wallet.","example":"Mint authority wallet"},"walletPurpose":{"type":"string","enum":["root","mint_authority","freeze_authority","fee_payer","transfer"],"description":"Optional purpose for a provisioned wallet.","example":"mint_authority"}},"required":["name","walletScope"],"description":"Create API key request body.","example":{"name":"Primary Key","role":"api_developer","walletScope":"selected","provisionWallet":{"connectionId":"cconn_123"},"walletLabel":"Mint authority wallet","walletPurpose":"mint_authority"}}}}},"responses":{"201":{"description":"API key created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiKey":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"API key identifier.","example":"key_example"},"name":{"type":"string","description":"API key name.","example":"Primary Key"},"key":{"type":"string","description":"Full API key. Only returned once.","example":"sk_test_example"},"keyPrefix":{"type":"string","description":"API key prefix for display.","example":"sk_test_abc"},"role":{"type":"string","enum":["api_admin","api_developer","api_readonly"],"description":"API key role.","example":"api_developer"},"environment":{"type":"string","enum":["sandbox","production"],"description":"API key environment.","example":"sandbox"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Expiration timestamp, if set.","example":"2025-12-31T00:00:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","name","key","keyPrefix","role","environment","expiresAt","createdAt"],"description":"API key details."}},"required":["apiKey"],"description":"API key create response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"503":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/api-keys/{keyId}":{"get":{"tags":["API Keys"],"summary":"Get API key","operationId":"getApiKey","description":"Gets API key details by id.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"API key identifier.","example":"key_example"},"required":true,"description":"API key identifier.","name":"keyId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"API key details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"API key identifier.","example":"key_example"},"name":{"type":"string","description":"API key name.","example":"Primary Key"},"description":{"type":"string","nullable":true,"description":"Optional API key description.","example":"Used by backend service."},"keyPrefix":{"type":"string","description":"API key prefix for display.","example":"sk_test_abc"},"role":{"type":"string","enum":["api_admin","api_developer","api_readonly"],"description":"API key role.","example":"api_developer"},"permissions":{"type":"array","nullable":true,"items":{"type":"string","enum":["tokens:read","tokens:write","tokens:admin","payments:read","payments:write","earn:read","earn:write","counterparties:read","counterparties:write","wallets:read","wallets:write","compliance:read","compliance:write","webhooks:read","webhooks:write","transactions:read","transactions:write","audit:read","org:read","org:write","org:admin","api-keys:read","api-keys:write","projects:read","projects:write","projects:admin","project-members:read","project-members:write","sessions:read","sessions:write","custody:read","custody:write","custody:admin","*"],"description":"Permission granted to the API key.","example":"tokens:write"},"description":"Custom permissions override. Null means role defaults.","example":["tokens:read","tokens:write"]},"environment":{"type":"string","enum":["sandbox","production"],"description":"API key environment.","example":"sandbox"},"status":{"type":"string","enum":["active","revoked","expired","deactivated"],"description":"API key status.","example":"active"},"projectId":{"type":"string","minLength":1,"description":"Associated project identifier.","example":"prj_example"},"allowedIps":{"type":"array","nullable":true,"items":{"type":"string"},"description":"IPv4/IPv6 addresses or CIDR ranges permitted to use the key.","example":["203.0.113.0/24"]},"walletScope":{"type":"string","enum":["all","selected"],"description":"Whether the key can use all wallets in scope or only explicitly selected wallets.","example":"selected"},"signingWalletId":{"type":"string","nullable":true,"description":"Default custody wallet bound to this API key for signing.","example":"privy_wallet_123"},"signingWalletIds":{"type":"array","items":{"type":"string"},"description":"All custody wallet IDs bound to this API key.","example":["privy_wallet_123","dfns_wallet_456"]},"walletBindings":{"type":"array","items":{"type":"object","properties":{"walletId":{"type":"string","description":"Custody wallet ID attached to the API key.","example":"privy_wallet_123"},"permissions":{"type":"array","items":{"type":"string","enum":["tokens:read","tokens:write","tokens:admin","payments:read","payments:write","earn:read","earn:write","counterparties:read","counterparties:write","wallets:read","wallets:write","compliance:read","compliance:write","webhooks:read","webhooks:write","transactions:read","transactions:write","audit:read","org:read","org:write","org:admin","api-keys:read","api-keys:write","projects:read","projects:write","projects:admin","project-members:read","project-members:write","sessions:read","sessions:write","custody:read","custody:write","custody:admin","*"],"description":"Permission granted to the API key.","example":"tokens:write"},"description":"Permissions allowed when this wallet is selected.","example":["payments:write","tokens:write"]}},"required":["walletId","permissions"],"description":"Wallet-level permission binding for an API key."},"description":"Wallet bindings and wallet-level permission sets for this API key."},"allowedOperations":{"type":"array","items":{"type":"string","enum":["privacy","payment","ramp","issuance","program","payment_transfer_execute","payment_transfer_batch_execute","recurring_payment_create","recurring_payment_update","recurring_payment_collection","ramp_onramp_quote","ramp_offramp_quote","issuance_allowlist_add_execute","issuance_allowlist_remove_execute","issuance_burn_execute","issuance_deploy_execute","issuance_force_burn_execute","issuance_freeze_execute","issuance_metadata_update_execute","issuance_mint_execute","issuance_pause_execute","issuance_seize_execute","issuance_unfreeze_execute","issuance_unpause_execute","issuance_update_authority_execute","dvp_fund","dvp_settle","earn_vault_deposit","earn_vault_withdrawal","earn_program_withdrawal","rings_shield","rings_transfer_registered","rings_transfer_anonymous","rings_withdraw","rings_merge","rings_timelock_create","rings_timelock_settle","rings_zone_create","rings_ring_exit","rings_ring_entry"],"description":"An operation family (privacy, payment, ramp, issuance, program) or a single operation type. A family entry covers every type in it.","example":"payment"},"description":"Operation families and types this key may perform on the wallets it can access. An empty list places no restriction.","example":["payment","ramp_offramp_quote"]},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time","description":"Timestamp of the last key usage.","example":"2025-01-10T12:00:00.000Z"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Expiration timestamp, if set.","example":"2025-12-31T00:00:00.000Z"},"rotatedFrom":{"type":"string","nullable":true,"minLength":1,"description":"Previous key identifier if rotated.","example":"key_example"},"rotationDeadline":{"type":"string","nullable":true,"format":"date-time","description":"Deadline before the previous key is revoked.","example":"2025-02-01T00:00:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","name","description","keyPrefix","role","permissions","environment","status","projectId","allowedIps","walletScope","signingWalletId","signingWalletIds","walletBindings","allowedOperations","lastUsedAt","expiresAt","rotatedFrom","rotationDeadline","createdAt"],"description":"Detailed API key view."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"patch":{"tags":["API Keys"],"summary":"Update API key","operationId":"updateApiKey","description":"Updates API key attributes. Use null to clear optional fields.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"API key identifier.","example":"key_example"},"required":true,"description":"API key identifier.","name":"keyId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Updated key name.","example":"Primary Key Updated"},"description":{"type":"string","nullable":true,"maxLength":500,"description":"Updated description. Use null to clear.","example":"Rotated key for new service."},"walletScope":{"type":"string","enum":["all","selected"],"description":"Updated wallet access mode. Provide this when changing wallet bindings, or by itself to reset the key to all wallets.","example":"all"},"allowedIps":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Updated IPv4/IPv6 address or CIDR allowlist. Use null to clear.","example":["203.0.113.0/24"]},"allowedOperations":{"type":"array","nullable":true,"items":{"type":"string","enum":["privacy","payment","ramp","issuance","program","payment_transfer_execute","payment_transfer_batch_execute","recurring_payment_create","recurring_payment_update","recurring_payment_collection","ramp_onramp_quote","ramp_offramp_quote","issuance_allowlist_add_execute","issuance_allowlist_remove_execute","issuance_burn_execute","issuance_deploy_execute","issuance_force_burn_execute","issuance_freeze_execute","issuance_metadata_update_execute","issuance_mint_execute","issuance_pause_execute","issuance_seize_execute","issuance_unfreeze_execute","issuance_unpause_execute","issuance_update_authority_execute","dvp_fund","dvp_settle","earn_vault_deposit","earn_vault_withdrawal","earn_program_withdrawal","rings_shield","rings_transfer_registered","rings_transfer_anonymous","rings_withdraw","rings_merge","rings_timelock_create","rings_timelock_settle","rings_zone_create","rings_ring_exit","rings_ring_entry"]},"maxItems":40,"description":"Updated operation families and types the key may perform. Use null or an empty list to remove the restriction.","example":["issuance_mint_execute"]},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Updated expiration. Use null to clear.","example":"2026-01-01T00:00:00.000Z"},"permissions":{"type":"array","nullable":true,"items":{"type":"string","enum":["tokens:read","tokens:write","tokens:admin","payments:read","payments:write","earn:read","earn:write","counterparties:read","counterparties:write","wallets:read","wallets:write","compliance:read","compliance:write","webhooks:read","webhooks:write","transactions:read","transactions:write","audit:read","org:read","org:write","org:admin","api-keys:read","api-keys:write","projects:read","projects:write","projects:admin","project-members:read","project-members:write","sessions:read","sessions:write","custody:read","custody:write","custody:admin","*"]},"description":"Updated explicit permission set. Use null to revert to role defaults.","example":["tokens:read","tokens:write"]},"signingWalletId":{"type":"string","nullable":true,"minLength":1,"description":"Updated default signing wallet binding. Use null to clear all wallet bindings.","example":"privy_wallet_123"},"signingWalletIds":{"type":"array","nullable":true,"items":{"type":"string","minLength":1},"description":"Updated list of wallet IDs bound to this key. Use null to clear all wallet bindings.","example":["privy_wallet_123","dfns_wallet_456"]},"walletBindings":{"type":"array","nullable":true,"items":{"type":"object","properties":{"walletId":{"type":"string","minLength":1},"permissions":{"type":"array","items":{"type":"string","enum":["tokens:read","tokens:write","tokens:admin","payments:read","payments:write","earn:read","earn:write","counterparties:read","counterparties:write","wallets:read","wallets:write","compliance:read","compliance:write","webhooks:read","webhooks:write","transactions:read","transactions:write","audit:read","org:read","org:write","org:admin","api-keys:read","api-keys:write","projects:read","projects:write","projects:admin","project-members:read","project-members:write","sessions:read","sessions:write","custody:read","custody:write","custody:admin","*"]}}},"required":["walletId"]},"description":"Updated wallet-level permission bindings. Use null to clear all wallet bindings."}},"description":"Update API key request body."}}}},"responses":{"200":{"description":"API key updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"success":{"type":"boolean","description":"Operation success flag.","example":true}},"required":["success"],"description":"Generic success response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"delete":{"tags":["API Keys"],"summary":"Deactivate API key","operationId":"revokeApiKey","description":"Deactivates (soft deletes) an API key and invalidates it immediately.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"API key identifier.","example":"key_example"},"required":true,"description":"API key identifier.","name":"keyId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"confirmation":{"type":"string","minLength":1,"description":"Type the exact API key name to confirm deletion.","example":"Primary Key"}},"required":["confirmation"]}}}},"responses":{"200":{"description":"API key revoked","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Revocation result."},"revokedAt":{"type":"string","format":"date-time","description":"Revocation timestamp.","example":"2025-01-10T12:00:00.000Z"}},"required":["success","revokedAt"],"description":"API key revocation response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/api-keys/{keyId}/rotate":{"post":{"tags":["API Keys"],"summary":"Rotate API key","operationId":"rotateApiKey","description":"Rotates an API key and returns the new key plus the old key grace period.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"API key identifier.","example":"key_example"},"required":true,"description":"API key identifier.","name":"keyId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"gracePeriodHours":{"type":"number","minimum":0,"maximum":168,"description":"Grace period for the old key before revocation.","example":24}},"description":"Rotate API key request body."}}}},"responses":{"201":{"description":"API key rotated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiKey":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"API key identifier.","example":"key_example"},"name":{"type":"string","description":"API key name.","example":"Primary Key"},"key":{"type":"string","description":"Full API key. Only returned once.","example":"sk_test_example"},"keyPrefix":{"type":"string","description":"API key prefix for display.","example":"sk_test_abc"},"role":{"type":"string","enum":["api_admin","api_developer","api_readonly"],"description":"API key role.","example":"api_developer"},"environment":{"type":"string","enum":["sandbox","production"],"description":"API key environment.","example":"sandbox"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Expiration timestamp, if set.","example":"2025-12-31T00:00:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","name","key","keyPrefix","role","environment","expiresAt","createdAt"],"description":"New API key details."},"previousKey":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"API key identifier.","example":"key_example"},"rotationDeadline":{"type":"string","format":"date-time","description":"Deadline for revoking the previous key.","example":"2025-02-01T00:00:00.000Z"}},"required":["id","rotationDeadline"],"description":"Previous API key rotation metadata."}},"required":["apiKey","previousKey"],"description":"API key rotation response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/wallets/initialize":{"post":{"tags":["Wallets"],"summary":"Initialize wallet signing","operationId":"initializeWalletSigning","description":"Sets up Managed custody for the project's named provider by creating its active signing configuration and first wallet. Production projects use BYOK only: there this returns 403 with details.reason custody_mode_not_allowed, and wallets are created in a Custody Connection with POST /v1/wallets and connectionId.","security":[{"apiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["local"]},"walletLabel":{"type":"string","maxLength":100}},"required":["provider"],"additionalProperties":false},{"type":"object","properties":{"provider":{"type":"string","enum":["fireblocks"]},"walletLabel":{"type":"string","maxLength":100}},"required":["provider"],"additionalProperties":false},{"type":"object","properties":{"provider":{"type":"string","enum":["privy"]},"requestDelayMs":{"type":"integer","minimum":0,"maximum":3000},"walletLabel":{"type":"string","maxLength":100}},"required":["provider"],"additionalProperties":false},{"type":"object","properties":{"provider":{"type":"string","enum":["coinbase_cdp"]},"network":{"type":"string","enum":["solana","solana-devnet"]},"accountPolicy":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"walletLabel":{"type":"string","maxLength":100}},"required":["provider"],"additionalProperties":false},{"type":"object","properties":{"provider":{"type":"string","enum":["para"]},"requestDelayMs":{"type":"integer","minimum":0,"maximum":3000},"walletLabel":{"type":"string","maxLength":100}},"required":["provider"],"additionalProperties":false},{"type":"object","properties":{"provider":{"type":"string","enum":["turnkey"]},"requestDelayMs":{"type":"integer","minimum":0,"maximum":3000},"walletLabel":{"type":"string","maxLength":100}},"required":["provider"],"additionalProperties":false},{"type":"object","properties":{"provider":{"type":"string","enum":["dfns"]},"network":{"type":"string","enum":["Solana","SolanaDevnet"]},"walletLabel":{"type":"string","maxLength":100}},"required":["provider"],"additionalProperties":false},{"type":"object","properties":{"provider":{"type":"string","enum":["ibm_haven"]},"network":{"type":"string","enum":["Solana","SolanaDevnet"]},"walletLabel":{"type":"string","maxLength":100}},"required":["provider"],"additionalProperties":false},{"type":"object","properties":{"provider":{"type":"string","enum":["anchorage"]},"walletLabel":{"type":"string","maxLength":100},"network":{"type":"string","enum":["solana","solana-devnet"]}},"required":["provider"],"additionalProperties":false},{"type":"object","properties":{"provider":{"type":"string","enum":["utila"]},"walletLabel":{"type":"string","maxLength":100}},"required":["provider"],"additionalProperties":false}],"description":"Initialize wallet signing provider for the project resolved from the request context."}}}},"responses":{"201":{"description":"Wallet signing initialized","content":{"application/json":{"schema":{"type":"object","properties":{"configId":{"type":"string","description":"Created wallet signing config ID.","example":"cfg_example"},"publicKey":{"type":"string","minLength":32,"maxLength":44,"description":"Public key of the provisioned root wallet.","example":"So11111111111111111111111111111111111111112"},"walletId":{"type":"string","minLength":1,"description":"Provider wallet ID of the provisioned root wallet.","example":"privy_wallet_123"}},"required":["configId","publicKey","walletId"],"description":"Wallet signing initialization result."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Forbidden: the API key lacks permission or is wallet-scoped, or custody setup was refused. A refusal's details.reason names the failed check: custody_mode_not_allowed when a Production project names Managed custody (Production is BYOK only), custody_provider_not_in_release_channel, or provider_not_entitled.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"503":{"description":"PROVIDER_NOT_CONFIGURED: the deployment holds no credentials for the provider in the project's environment (details.reason provider_not_configured).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/wallets":{"post":{"tags":["Wallets"],"summary":"Create wallet","operationId":"createWallet","description":"Provisions a new wallet under exactly one provider account: the project's Managed config for provider, or the Custody Connection named by connectionId. A body naming both, or neither, is rejected with 400.","security":[{"apiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["local","fireblocks","privy","coinbase_cdp","para","turnkey","dfns","ibm_haven","anchorage","utila"],"description":"Provider whose Managed config owns the new wallet. A project holds one active config per provider.","example":"privy"},"label":{"type":"string","maxLength":100,"description":"Optional label for the new wallet.","example":"Mint authority wallet"},"purpose":{"type":"string","enum":["root","mint_authority","freeze_authority","fee_payer","transfer"],"description":"Optional semantic purpose for the wallet.","example":"mint_authority"}},"required":["provider"],"not":{"required":["connectionId"]},"description":"Create a wallet under the project's Managed config for provider."},{"type":"object","properties":{"connectionId":{"type":"string","minLength":1,"description":"Custody Connection (BYOK) that owns the new wallet.","example":"cconn_123"},"label":{"type":"string","maxLength":100,"description":"Optional label for the new wallet.","example":"Mint authority wallet"},"purpose":{"type":"string","enum":["root","mint_authority","freeze_authority","fee_payer","transfer"],"description":"Optional semantic purpose for the wallet.","example":"mint_authority"}},"required":["connectionId"],"not":{"required":["provider"]},"description":"Create a wallet under a Custody Connection."}],"description":"Create wallet request body. Names exactly one owner: provider (Managed config) or connectionId (Custody Connection); a body naming both, or neither, is rejected with 400.","example":{"provider":"privy","label":"Mint authority wallet","purpose":"mint_authority"}}}}},"responses":{"201":{"description":"Wallet created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"wallet":{"type":"object","properties":{"id":{"type":"string","description":"Wallet record ID.","example":"cw_example"},"custodyConfigId":{"type":"string","description":"Owning custody configuration ID.","example":"cfg_example"},"custodyConnectionId":{"type":"string","description":"Owning Custody Connection ID.","example":"cconn_example"},"provider":{"type":"string","enum":["local","fireblocks","privy","coinbase_cdp","para","turnkey","dfns","ibm_haven","anchorage","utila"],"description":"Wallet signing provider.","example":"privy"},"isRuntimeExecutionAllowed":{"type":"boolean","description":"Whether SDP currently permits attempting runtime execution through this wallet's owner. This is request-time admission, not Provider health or a success guarantee.","example":true},"walletId":{"type":"string","minLength":1,"description":"Provider wallet ID.","example":"privy_wallet_123"},"publicKey":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"label":{"type":"string","nullable":true,"description":"Optional wallet label.","example":"Root Signing Wallet"},"purpose":{"type":"string","nullable":true,"enum":["root","mint_authority","freeze_authority","fee_payer","transfer","dvp_settlement_authority",null],"description":"Optional wallet purpose.","example":"root"},"status":{"type":"string","enum":["active","inactive"],"description":"Wallet status.","example":"active"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"balances":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string","description":"Tracked token symbol.","example":"USDC"},"mint":{"type":"string","minLength":32,"maxLength":44,"description":"Tracked token mint address.","example":"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU"},"amount":{"type":"string","description":"Raw token amount as a string.","example":"1250000"},"uiAmount":{"type":"string","description":"Human-readable token balance.","example":"1.25"},"decimals":{"type":"integer","minimum":0,"description":"Token decimals.","example":6},"usdPrice":{"type":"number","description":"Resolved USD price per token when available.","example":1},"usdValue":{"type":"number","description":"Resolved USD value of this balance when pricing is available.","example":125.5}},"required":["token","mint","amount","uiAmount","decimals"],"description":"Tracked fungible token balance."},"description":"Tracked token balances when requested and successfully observed. Omitted when the balance lookup is unavailable; an empty array is a successful zero-token result."}},"required":["id","isRuntimeExecutionAllowed","walletId","publicKey","label","purpose","status","createdAt"],"oneOf":[{"required":["custodyConfigId"],"not":{"required":["custodyConnectionId"]}},{"required":["custodyConnectionId"],"not":{"required":["custodyConfigId"]}}],"description":"Wallet details.","example":{"id":"cw_example","custodyConfigId":"cfg_example","provider":"privy","isRuntimeExecutionAllowed":true,"walletId":"privy_wallet_123","publicKey":"So11111111111111111111111111111111111111112","label":"Root Signing Wallet","purpose":"root","status":"active","createdAt":"2025-01-01T00:00:00.000Z"}}},"required":["wallet"],"description":"Created wallet response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Forbidden: the API key lacks permission or is wallet-scoped, or the provider account was refused. A refusal's details.reason names the failed check: custody_mode_not_allowed when provider names a Managed config in a Production project (Production is BYOK only: create the wallet in a Custody Connection with connectionId), custody_provider_not_in_release_channel, or provider_not_entitled.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"503":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"delete":{"tags":["Wallets"],"summary":"Delete wallet","operationId":"deleteWallet","description":"Deletes the wallet from its exact owning custody target when that Provider supports wallet deletion. Provider, when supplied, is a consistency assertion.","security":[{"apiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","enum":["local","fireblocks","privy","coinbase_cdp","para","turnkey","dfns","ibm_haven","anchorage","utila"],"description":"Optional consistency assertion for the Provider of the wallet being deleted.","example":"anchorage"},"walletId":{"type":"string","minLength":1,"description":"Provider wallet ID to delete from its exact owning target.","example":"anchorage_wallet_123"}},"required":["walletId"],"description":"Delete wallet request body."}}}},"responses":{"200":{"description":"Wallet deleted","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"walletId":{"type":"string","minLength":1,"description":"Wallet ID that was deleted.","example":"anchorage_wallet_123"},"deleted":{"type":"boolean","enum":[true],"description":"Deletion confirmation flag.","example":true}},"required":["walletId","deleted"],"description":"Delete wallet response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"get":{"tags":["Wallets"],"summary":"List wallets","operationId":"listWallets","description":"Lists active wallets under active Config and Connection owners, oldest first. Provider narrows the list to one custody provider.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["local","fireblocks","privy","coinbase_cdp","para","turnkey","dfns","ibm_haven","anchorage","utila"],"description":"Wallet signing provider.","example":"privy"},"required":false,"description":"Wallet signing provider.","name":"provider","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"includeBalances","in":"query"},{"schema":{"type":"string","enum":["summary"]},"required":false,"name":"view","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Wallets","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"wallets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Wallet record ID.","example":"cw_example"},"custodyConfigId":{"type":"string","description":"Owning custody configuration ID.","example":"cfg_example"},"custodyConnectionId":{"type":"string","description":"Owning Custody Connection ID.","example":"cconn_example"},"provider":{"type":"string","enum":["local","fireblocks","privy","coinbase_cdp","para","turnkey","dfns","ibm_haven","anchorage","utila"],"description":"Wallet signing provider.","example":"privy"},"isRuntimeExecutionAllowed":{"type":"boolean","description":"Whether SDP currently permits attempting runtime execution through this wallet's owner. This is request-time admission, not Provider health or a success guarantee.","example":true},"walletId":{"type":"string","minLength":1,"description":"Provider wallet ID.","example":"privy_wallet_123"},"publicKey":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"label":{"type":"string","nullable":true,"description":"Optional wallet label.","example":"Root Signing Wallet"},"purpose":{"type":"string","nullable":true,"enum":["root","mint_authority","freeze_authority","fee_payer","transfer","dvp_settlement_authority",null],"description":"Optional wallet purpose.","example":"root"},"status":{"type":"string","enum":["active","inactive"],"description":"Wallet status.","example":"active"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"balances":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string","description":"Tracked token symbol.","example":"USDC"},"mint":{"type":"string","minLength":32,"maxLength":44,"description":"Tracked token mint address.","example":"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU"},"amount":{"type":"string","description":"Raw token amount as a string.","example":"1250000"},"uiAmount":{"type":"string","description":"Human-readable token balance.","example":"1.25"},"decimals":{"type":"integer","minimum":0,"description":"Token decimals.","example":6},"usdPrice":{"type":"number","description":"Resolved USD price per token when available.","example":1},"usdValue":{"type":"number","description":"Resolved USD value of this balance when pricing is available.","example":125.5}},"required":["token","mint","amount","uiAmount","decimals"],"description":"Tracked fungible token balance."},"description":"Tracked token balances when requested and successfully observed. Omitted when the balance lookup is unavailable; an empty array is a successful zero-token result."}},"required":["id","isRuntimeExecutionAllowed","walletId","publicKey","label","purpose","status","createdAt"],"oneOf":[{"required":["custodyConfigId"],"not":{"required":["custodyConnectionId"]}},{"required":["custodyConnectionId"],"not":{"required":["custodyConfigId"]}}],"description":"Wallet details.","example":{"id":"cw_example","custodyConfigId":"cfg_example","provider":"privy","isRuntimeExecutionAllowed":true,"walletId":"privy_wallet_123","publicKey":"So11111111111111111111111111111111111111112","label":"Root Signing Wallet","purpose":"root","status":"active","createdAt":"2025-01-01T00:00:00.000Z"}},"description":"Wallets."}},"required":["wallets"],"description":"Wallets list response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/wallets/configs":{"get":{"tags":["Wallets"],"summary":"List wallet signing configs","operationId":"listWalletConfigs","description":"Returns the active Config-owned wallet signing configurations for the requested scope, one per provider.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Wallet signing configurations","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"configs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Wallet signing config ID.","example":"cfg_example"},"organizationId":{"type":"string","description":"Organization ID that owns this wallet signing config.","example":"org_example"},"projectId":{"type":"string","nullable":true,"minLength":1,"description":"Optional project scope for this config.","example":"prj_example"},"provider":{"type":"string","enum":["local","fireblocks","privy","coinbase_cdp","para","turnkey","dfns","ibm_haven","anchorage","utila"],"description":"Wallet signing provider.","example":"privy"},"status":{"type":"string","enum":["active","inactive"],"description":"Config status.","example":"active"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","provider","status","createdAt"]},"description":"Active wallet signing configurations for the requested scope."}},"required":["configs"],"description":"Wallet signing configurations response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/wallets/aggregate":{"get":{"tags":["Wallets"],"summary":"Aggregate wallet balances","operationId":"aggregateWalletBalances","description":"Aggregates tracked balances for active wallets under the same owner-aware inclusion rules as the wallet list, without exposing one aggregate-level owner or runtime-admission value. Returns 503 if any included wallet balance cannot be read, rather than returning an incomplete total.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["local","fireblocks","privy","coinbase_cdp","para","turnkey","dfns","ibm_haven","anchorage","utila"],"description":"Wallet signing provider.","example":"privy"},"required":false,"description":"Wallet signing provider.","name":"provider","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Aggregated wallet balances","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"aggregate":{"type":"object","properties":{"walletCount":{"type":"integer","minimum":0,"description":"Number of wallets included in the aggregate.","example":3},"balances":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string","description":"Tracked token symbol.","example":"USDC"},"mint":{"type":"string","minLength":32,"maxLength":44,"description":"Tracked token mint address.","example":"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU"},"amount":{"type":"string","description":"Raw token amount as a string.","example":"1250000"},"uiAmount":{"type":"string","description":"Human-readable token balance.","example":"1.25"},"decimals":{"type":"integer","minimum":0,"description":"Token decimals.","example":6},"usdPrice":{"type":"number","description":"Resolved USD price per token when available.","example":1},"usdValue":{"type":"number","description":"Resolved USD value of this balance when pricing is available.","example":125.5}},"required":["token","mint","amount","uiAmount","decimals"],"description":"Tracked fungible token balance."},"description":"Aggregated tracked token balances across the included wallets."}},"required":["walletCount","balances"],"description":"Aggregated wallet balance summary."}},"required":["aggregate"],"description":"Aggregated wallet balance response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"503":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/wallets/public-key":{"get":{"tags":["Wallets"],"summary":"Get wallet public key","operationId":"getWalletPublicKey","description":"Returns the persisted public key for an exact active walletId. walletId may be omitted only by an API key whose own signing-wallet binding names the wallet; otherwise the request is rejected with 400. Resolution is DB-backed only.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Provider wallet ID — the `walletId` field returned by GET /v1/wallets.","example":"privy_wallet_123"},"required":false,"description":"Provider wallet ID — the `walletId` field returned by GET /v1/wallets.","name":"walletId","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Wallet public key","content":{"application/json":{"schema":{"type":"object","properties":{"publicKey":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"}},"required":["publicKey"],"description":"Wallet public key response payload."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/wallets/signer-check":{"post":{"tags":["Wallets"],"summary":"Check signer via simulated memo transaction","operationId":"checkWalletSigner","description":"Signs a server-authored memo message with the wallet selected by an authenticated API key or Clerk JWT, verifies the signature, and simulates the transaction. Nothing is broadcast and no sponsorship is spent. The wallet is the only readonly signer and the request cannot supply memo text.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"walletId":{"type":"string","minLength":1}},"description":"walletId is a Provider wallet ID. When omitted for an API key, its authenticated signing-wallet selection is used: the configured preference, otherwise the first resolved binding. Clerk-authenticated dashboard requests must provide walletId. Ambiguous Provider IDs are rejected; the check uses the resolved exact custody wallet record.","example":{"walletId":"privy_wallet_123"}}}}},"responses":{"200":{"description":"Signer check verified in simulation","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"walletId":{"type":"string","minLength":1,"description":"Resolved signing wallet ID.","example":"privy_wallet_123"},"walletAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Resolved signer address used for the check message.","example":"So11111111111111111111111111111111111111112"},"feePayer":{"type":"string","minLength":32,"maxLength":44,"description":"Funded fee payer address used in the simulated message; nothing is spent from it.","example":"So11111111111111111111111111111111111111112"},"memo":{"type":"string","description":"Server-generated memo text in the simulated check message.","example":"SDP signer check 123e4567-e89b-42d3-a456-426614174000"},"signature":{"type":"string","description":"The custody wallet's Ed25519 signature over the check message, base58. Verified server-side and exercised in RPC simulation only — the check never broadcasts, so this signature does not exist on chain.","example":"sig_example"},"simulated":{"type":"boolean","enum":[true],"description":"Always true: signer checks run in simulation and cannot spend sponsorship."},"checkedAt":{"type":"string","format":"date-time","description":"Timestamp recorded after the simulation succeeded.","example":"2026-02-20T00:00:00.000Z"}},"required":["walletId","walletAddress","feePayer","memo","signature","simulated","checkedAt"],"description":"Signer check response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"429":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"502":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/wallets/{walletId}":{"get":{"tags":["Wallets"],"summary":"Get wallet by ID","operationId":"getWalletById","description":"Returns active wallet metadata, exact Config or Connection ownership, runtime execution admission, Provider, public key, and by default the current SOL balance. Set includeBalance=false for a metadata-only read.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Provider wallet ID — the `walletId` field returned by GET /v1/wallets.","example":"privy_wallet_123"},"required":true,"description":"Provider wallet ID — the `walletId` field returned by GET /v1/wallets.","name":"walletId","in":"path"},{"schema":{"type":"string","enum":["true","false"],"description":"Whether to resolve the current SOL balance. Defaults to true; false returns metadata without balance RPC or pricing calls.","example":"false"},"required":false,"description":"Whether to resolve the current SOL balance. Defaults to true; false returns metadata without balance RPC or pricing calls.","name":"includeBalance","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Wallet details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"wallet":{"type":"object","properties":{"id":{"type":"string","description":"Wallet record ID.","example":"cw_example"},"custodyConfigId":{"type":"string","description":"Owning custody configuration ID.","example":"cfg_example"},"custodyConnectionId":{"type":"string","description":"Owning Custody Connection ID.","example":"cconn_example"},"provider":{"type":"string","enum":["local","fireblocks","privy","coinbase_cdp","para","turnkey","dfns","ibm_haven","anchorage","utila"],"description":"Wallet custody provider.","example":"privy"},"isRuntimeExecutionAllowed":{"type":"boolean","description":"Whether SDP currently permits attempting runtime execution through this wallet's owner. This is request-time admission, not Provider health or a success guarantee.","example":true},"walletId":{"type":"string","minLength":1,"description":"Provider wallet ID.","example":"privy_wallet_123"},"publicKey":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"label":{"type":"string","nullable":true,"description":"Optional wallet label.","example":"Root Signing Wallet"},"purpose":{"type":"string","nullable":true,"enum":["root","mint_authority","freeze_authority","fee_payer","transfer","dvp_settlement_authority",null],"description":"Optional wallet purpose.","example":"root"},"status":{"type":"string","enum":["active","inactive"],"description":"Wallet status.","example":"active"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"balance":{"type":"object","properties":{"token":{"type":"string","enum":["SOL"],"description":"Balance token symbol.","example":"SOL"},"mint":{"type":"string","description":"Native SOL mint address.","example":"So11111111111111111111111111111111111111112"},"amount":{"type":"string","description":"Raw lamports balance as a string.","example":"123456789"},"uiAmount":{"type":"string","description":"Human-readable SOL balance.","example":"0.123456789"},"decimals":{"type":"number","enum":[9],"description":"Token decimals for SOL.","example":9}},"required":["token","mint","amount","uiAmount","decimals"],"description":"Current SOL balance for the wallet public key. Omitted when includeBalance=false."}},"required":["id","provider","isRuntimeExecutionAllowed","walletId","publicKey","label","purpose","status","createdAt"],"oneOf":[{"required":["custodyConfigId"],"not":{"required":["custodyConnectionId"]}},{"required":["custodyConnectionId"],"not":{"required":["custodyConfigId"]}}],"description":"Wallet details with provider and optional SOL balance.","example":{"id":"cw_example","custodyConfigId":"cfg_example","provider":"privy","isRuntimeExecutionAllowed":true,"walletId":"privy_wallet_123","publicKey":"So11111111111111111111111111111111111111112","label":"Root Signing Wallet","purpose":"root","status":"active","createdAt":"2025-01-01T00:00:00.000Z"}}},"required":["wallet"],"description":"Wallet details by ID response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"patch":{"tags":["Wallets"],"summary":"Update wallet","operationId":"updateWallet","description":"Updates the display label of an active wallet under its exact Config or Connection owner.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Provider wallet ID — the `walletId` field returned by GET /v1/wallets.","example":"privy_wallet_123"},"required":true,"description":"Provider wallet ID — the `walletId` field returned by GET /v1/wallets.","name":"walletId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","nullable":true,"maxLength":100,"description":"Optional wallet label. Set to null to clear the label.","example":"Treasury signer"}},"description":"Update wallet request body."}}}},"responses":{"200":{"description":"Wallet updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"wallet":{"type":"object","properties":{"id":{"type":"string","description":"Wallet record ID.","example":"cw_example"},"custodyConfigId":{"type":"string","description":"Owning custody configuration ID.","example":"cfg_example"},"custodyConnectionId":{"type":"string","description":"Owning Custody Connection ID.","example":"cconn_example"},"provider":{"type":"string","enum":["local","fireblocks","privy","coinbase_cdp","para","turnkey","dfns","ibm_haven","anchorage","utila"],"description":"Wallet signing provider.","example":"privy"},"isRuntimeExecutionAllowed":{"type":"boolean","description":"Whether SDP currently permits attempting runtime execution through this wallet's owner. This is request-time admission, not Provider health or a success guarantee.","example":true},"walletId":{"type":"string","minLength":1,"description":"Provider wallet ID.","example":"privy_wallet_123"},"publicKey":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"label":{"type":"string","nullable":true,"description":"Optional wallet label.","example":"Root Signing Wallet"},"purpose":{"type":"string","nullable":true,"enum":["root","mint_authority","freeze_authority","fee_payer","transfer","dvp_settlement_authority",null],"description":"Optional wallet purpose.","example":"root"},"status":{"type":"string","enum":["active","inactive"],"description":"Wallet status.","example":"active"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"balances":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string","description":"Tracked token symbol.","example":"USDC"},"mint":{"type":"string","minLength":32,"maxLength":44,"description":"Tracked token mint address.","example":"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU"},"amount":{"type":"string","description":"Raw token amount as a string.","example":"1250000"},"uiAmount":{"type":"string","description":"Human-readable token balance.","example":"1.25"},"decimals":{"type":"integer","minimum":0,"description":"Token decimals.","example":6},"usdPrice":{"type":"number","description":"Resolved USD price per token when available.","example":1},"usdValue":{"type":"number","description":"Resolved USD value of this balance when pricing is available.","example":125.5}},"required":["token","mint","amount","uiAmount","decimals"],"description":"Tracked fungible token balance."},"description":"Tracked token balances when requested and successfully observed. Omitted when the balance lookup is unavailable; an empty array is a successful zero-token result."}},"required":["id","isRuntimeExecutionAllowed","walletId","publicKey","label","purpose","status","createdAt"],"oneOf":[{"required":["custodyConfigId"],"not":{"required":["custodyConnectionId"]}},{"required":["custodyConnectionId"],"not":{"required":["custodyConfigId"]}}],"description":"Wallet details.","example":{"id":"cw_example","custodyConfigId":"cfg_example","provider":"privy","isRuntimeExecutionAllowed":true,"walletId":"privy_wallet_123","publicKey":"So11111111111111111111111111111111111111112","label":"Root Signing Wallet","purpose":"root","status":"active","createdAt":"2025-01-01T00:00:00.000Z"}}},"required":["wallet"],"description":"Created wallet response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/projects":{"get":{"tags":["Projects"],"summary":"List projects","operationId":"listProjects","description":"Lists projects in the organization.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"boolean","description":"Include archived resources in results.","example":false},"required":false,"description":"Include archived resources in results.","name":"includeArchived","in":"query"}],"responses":{"200":{"description":"Projects list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"name":{"type":"string","description":"Project name.","example":"Payments"},"slug":{"type":"string","description":"URL-friendly slug.","example":"payments"},"description":{"type":"string","nullable":true,"description":"Optional project description.","example":"Payments workflow"},"environment":{"type":"string","enum":["sandbox","beta","production"],"description":"Project environment.","example":"sandbox"},"settings":{"type":"object","nullable":true,"properties":{"webhookUrl":{"type":"string","format":"uri","description":"Webhook URL for event notifications.","example":"https://example.com/webhook"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Arbitrary metadata key/value pairs.","example":{"region":"us"}}},"additionalProperties":false,"description":"Project settings, or null when none have been set."},"status":{"type":"string","enum":["active","archived"],"description":"Project status.","example":"active"},"createdBy":{"type":"string","minLength":1,"description":"Identifier of the creator.","example":"usr_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","name","slug","description","environment","settings","status","createdBy","createdAt","updatedAt"],"description":"Project record."},"description":"Projects."}},"required":["projects"],"description":"List of projects."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/projects/{projectId}":{"get":{"tags":["Projects"],"summary":"Get project","operationId":"getProject","description":"Gets project details.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"required":true,"description":"Project identifier.","name":"projectId","in":"path"}],"responses":{"200":{"description":"Project","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"name":{"type":"string","description":"Project name.","example":"Payments"},"slug":{"type":"string","description":"URL-friendly slug.","example":"payments"},"description":{"type":"string","nullable":true,"description":"Optional project description.","example":"Payments workflow"},"environment":{"type":"string","enum":["sandbox","beta","production"],"description":"Project environment.","example":"sandbox"},"settings":{"type":"object","nullable":true,"properties":{"webhookUrl":{"type":"string","format":"uri","description":"Webhook URL for event notifications.","example":"https://example.com/webhook"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Arbitrary metadata key/value pairs.","example":{"region":"us"}}},"additionalProperties":false,"description":"Project settings, or null when none have been set."},"status":{"type":"string","enum":["active","archived"],"description":"Project status.","example":"active"},"createdBy":{"type":"string","minLength":1,"description":"Identifier of the creator.","example":"usr_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","name","slug","description","environment","settings","status","createdBy","createdAt","updatedAt"],"description":"Project details."}},"required":["project"],"description":"Project response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"patch":{"tags":["Projects"],"summary":"Update project","operationId":"updateProject","description":"Updates project attributes.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"required":true,"description":"Project identifier.","name":"projectId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Updated project name.","example":"Payments Updated"},"description":{"type":"string","nullable":true,"maxLength":500,"description":"Updated description. Use null to clear.","example":"Updated project description."},"settings":{"type":"object","nullable":true,"properties":{"webhookUrl":{"type":"string","format":"uri"},"metadata":{"type":"object","additionalProperties":{"type":"string"}}},"additionalProperties":false,"description":"Updated project settings. Use null to clear.","example":{"webhookUrl":"https://example.com/webhook"}}},"description":"Update project request body."}}}},"responses":{"200":{"description":"Project updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"name":{"type":"string","description":"Project name.","example":"Payments"},"slug":{"type":"string","description":"URL-friendly slug.","example":"payments"},"description":{"type":"string","nullable":true,"description":"Optional project description.","example":"Payments workflow"},"environment":{"type":"string","enum":["sandbox","beta","production"],"description":"Project environment.","example":"sandbox"},"settings":{"type":"object","nullable":true,"properties":{"webhookUrl":{"type":"string","format":"uri","description":"Webhook URL for event notifications.","example":"https://example.com/webhook"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Arbitrary metadata key/value pairs.","example":{"region":"us"}}},"additionalProperties":false,"description":"Project settings, or null when none have been set."},"status":{"type":"string","enum":["active","archived"],"description":"Project status.","example":"active"},"createdBy":{"type":"string","minLength":1,"description":"Identifier of the creator.","example":"usr_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","name","slug","description","environment","settings","status","createdBy","createdAt","updatedAt"],"description":"Project details."}},"required":["project"],"description":"Project response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/projects/{projectId}/provider-availability":{"get":{"tags":["Projects"],"summary":"Get project provider availability","operationId":"getProjectProviderAvailability","description":"Lists every provider the deployment knows across custody, compliance and ramps, with whether this project can use it, counting the deployment's provider credentials for the project's environment. The same rule gates every provider entry point, so a provider reported unavailable is refused there with 403, or 503 when the deployment does not hold its credentials. A project outside the caller's organization, or another project for a project-bound API key, returns 404.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"required":true,"description":"Project identifier.","name":"projectId","in":"path"}],"responses":{"200":{"description":"Project provider availability","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"projectId":{"type":"string"},"environment":{"type":"string","enum":["sandbox","production"]},"providers":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"family":{"type":"string","enum":["custody"]},"provider":{"type":"string","enum":["local","fireblocks","privy","coinbase_cdp","para","turnkey","dfns","ibm_haven","anchorage","utila"]},"modes":{"type":"array","items":{"type":"string","enum":["managed","byok"]}},"unavailableModes":{"type":"array","items":{"type":"object","properties":{"mode":{"type":"string","enum":["managed","byok"]},"reason":{"type":"string","enum":["custody_provider_not_in_release_channel","custody_mode_not_allowed","provider_not_entitled","provider_not_in_release_channel","provider_not_offered","provider_not_configured"]}},"required":["mode","reason"]}}},"required":["family","provider","modes","unavailableModes"]},{"oneOf":[{"type":"object","properties":{"family":{"type":"string","enum":["compliance"]},"provider":{"type":"string","enum":["range","elliptic","trm","chainalysis"]},"available":{"type":"boolean","enum":[true]}},"required":["family","provider","available"]},{"type":"object","properties":{"family":{"type":"string","enum":["compliance"]},"provider":{"type":"string","enum":["range","elliptic","trm","chainalysis"]},"available":{"type":"boolean","enum":[false]},"reason":{"type":"string","enum":["custody_provider_not_in_release_channel","custody_mode_not_allowed","provider_not_entitled","provider_not_in_release_channel","provider_not_offered","provider_not_configured"]}},"required":["family","provider","available","reason"]}]},{"oneOf":[{"type":"object","properties":{"family":{"type":"string","enum":["ramps"]},"provider":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe"]},"available":{"type":"boolean","enum":[true]}},"required":["family","provider","available"]},{"type":"object","properties":{"family":{"type":"string","enum":["ramps"]},"provider":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe"]},"available":{"type":"boolean","enum":[false]},"reason":{"type":"string","enum":["custody_provider_not_in_release_channel","custody_mode_not_allowed","provider_not_entitled","provider_not_in_release_channel","provider_not_offered","provider_not_configured"]}},"required":["family","provider","available","reason"]}]}]}}},"required":["projectId","environment","providers"],"description":"Every provider the deployment knows, with whether this project can use it, so an absent provider is never mistaken for an unavailable one. Custody entries list the custody modes the project can set the provider up in (empty when none) in `modes`, and each refused mode with the first failed check in `unavailableModes`; ramps and compliance entries carry `available`, plus `reason` naming the first failed check when unavailable. A provider is available only when the deployment's release channel includes it, SDP currently offers it, the organization is entitled to it, and the deployment holds its credentials for the project's environment; the release channel offers the same providers to Sandbox and Production projects. Custody `modes` include `managed` only in a Sandbox project whose deployment holds the provider's credentials; `byok` runs on the organization's own credentials and is the only mode a Production project can use.","example":{"projectId":"prj_example","environment":"production","providers":[{"family":"custody","provider":"privy","modes":["byok"],"unavailableModes":[{"mode":"managed","reason":"custody_mode_not_allowed"}]},{"family":"custody","provider":"fireblocks","modes":[],"unavailableModes":[{"mode":"managed","reason":"custody_mode_not_allowed"},{"mode":"byok","reason":"custody_provider_not_in_release_channel"}]},{"family":"compliance","provider":"range","available":true},{"family":"ramps","provider":"moonpay","available":false,"reason":"provider_not_entitled"}]}},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/projects/{projectId}/members":{"get":{"tags":["Projects"],"summary":"List project members","operationId":"listProjectMembers","description":"Lists members assigned to the project.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"required":true,"description":"Project identifier.","name":"projectId","in":"path"}],"responses":{"200":{"description":"Project members","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Project member identifier.","example":"pm_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"userId":{"type":"string","minLength":1,"description":"User identifier.","example":"usr_example"},"role":{"type":"string","enum":["admin","developer","viewer"],"description":"Project member role.","example":"developer"},"createdAt":{"type":"string","format":"date-time","description":"Membership creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"user":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"User identifier.","example":"usr_example"},"email":{"type":"string","format":"email","description":"User email.","example":"user@example.com"},"name":{"type":"string","nullable":true,"description":"User name.","example":"Example User"}},"required":["id","email","name"],"description":"User details for the project member."}},"required":["id","projectId","userId","role","createdAt","user"],"description":"Project member record with user details."},"description":"Project members."}},"required":["members"],"description":"List of project members."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"post":{"tags":["Projects"],"summary":"Add project member","operationId":"addProjectMember","description":"Adds an organization member to the project.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"required":true,"description":"Project identifier.","name":"projectId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User identifier to add to the project.","example":"usr_example"},"role":{"type":"string","enum":["admin","developer","viewer"],"description":"Role for the project member.","example":"developer"}},"required":["userId"],"description":"Add project member request body."}}}},"responses":{"201":{"description":"Project member added","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"member":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Project member identifier.","example":"pm_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"userId":{"type":"string","minLength":1,"description":"User identifier.","example":"usr_example"},"role":{"type":"string","enum":["admin","developer","viewer"],"description":"Project member role.","example":"developer"},"createdAt":{"type":"string","format":"date-time","description":"Membership creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"user":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"User identifier.","example":"usr_example"},"email":{"type":"string","format":"email","description":"User email.","example":"user@example.com"},"name":{"type":"string","nullable":true,"description":"User name.","example":"Example User"}},"required":["id","email","name"],"description":"User details for the project member."}},"required":["id","projectId","userId","role","createdAt","user"],"description":"Project member details."}},"required":["member"],"description":"Project member response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/projects/{projectId}/members/{memberId}":{"patch":{"tags":["Projects"],"summary":"Update project member","operationId":"updateProjectMember","description":"Updates a project member role.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"required":true,"description":"Project identifier.","name":"projectId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Member identifier.","example":"mem_example"},"required":true,"description":"Member identifier.","name":"memberId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["admin","developer","viewer"],"description":"Updated project member role.","example":"admin"}},"required":["role"],"description":"Update project member request body."}}}},"responses":{"204":{"description":"Project member updated"},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"delete":{"tags":["Projects"],"summary":"Remove project member","operationId":"removeProjectMember","description":"Removes a member from the project.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"required":true,"description":"Project identifier.","name":"projectId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Member identifier.","example":"mem_example"},"required":true,"description":"Member identifier.","name":"memberId","in":"path"}],"responses":{"204":{"description":"Project member removed"},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/projects/{projectId}/api-keys":{"get":{"tags":["Projects"],"summary":"List project API keys","operationId":"listProjectApiKeys","description":"Lists API keys scoped to the project.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"required":true,"description":"Project identifier.","name":"projectId","in":"path"}],"responses":{"200":{"description":"Project API keys","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiKeys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"API key identifier.","example":"key_example"},"name":{"type":"string","description":"API key name.","example":"Primary Key"},"keyPrefix":{"type":"string","description":"API key prefix for display.","example":"sk_test_abc"},"role":{"type":"string","enum":["api_admin","api_developer","api_readonly"],"description":"API key role.","example":"api_developer"},"environment":{"type":"string","enum":["sandbox","production"],"description":"API key environment.","example":"sandbox"},"status":{"type":"string","enum":["active","revoked","expired","deactivated"],"description":"API key status.","example":"active"},"walletScope":{"type":"string","enum":["all","selected"],"description":"Whether the key can use all wallets in scope or only explicitly selected wallets.","example":"selected"},"signingWalletId":{"type":"string","nullable":true,"description":"Default custody wallet bound to this API key for signing.","example":"privy_wallet_123"},"signingWalletIds":{"type":"array","items":{"type":"string"},"description":"All custody wallet IDs bound to this API key.","example":["privy_wallet_123","dfns_wallet_456"]},"walletBindings":{"type":"array","items":{"type":"object","properties":{"walletId":{"type":"string","description":"Custody wallet ID attached to the API key.","example":"privy_wallet_123"},"permissions":{"type":"array","items":{"type":"string","enum":["tokens:read","tokens:write","tokens:admin","payments:read","payments:write","earn:read","earn:write","counterparties:read","counterparties:write","wallets:read","wallets:write","compliance:read","compliance:write","webhooks:read","webhooks:write","transactions:read","transactions:write","audit:read","org:read","org:write","org:admin","api-keys:read","api-keys:write","projects:read","projects:write","projects:admin","project-members:read","project-members:write","sessions:read","sessions:write","custody:read","custody:write","custody:admin","*"],"description":"Permission granted to the API key.","example":"tokens:write"},"description":"Permissions allowed when this wallet is selected.","example":["payments:write","tokens:write"]}},"required":["walletId","permissions"],"description":"Wallet-level permission binding for an API key."},"description":"Wallet bindings and wallet-level permission sets for this API key."},"allowedOperations":{"type":"array","items":{"type":"string","enum":["privacy","payment","ramp","issuance","program","payment_transfer_execute","payment_transfer_batch_execute","recurring_payment_create","recurring_payment_update","recurring_payment_collection","ramp_onramp_quote","ramp_offramp_quote","issuance_allowlist_add_execute","issuance_allowlist_remove_execute","issuance_burn_execute","issuance_deploy_execute","issuance_force_burn_execute","issuance_freeze_execute","issuance_metadata_update_execute","issuance_mint_execute","issuance_pause_execute","issuance_seize_execute","issuance_unfreeze_execute","issuance_unpause_execute","issuance_update_authority_execute","dvp_fund","dvp_settle","earn_vault_deposit","earn_vault_withdrawal","earn_program_withdrawal","rings_shield","rings_transfer_registered","rings_transfer_anonymous","rings_withdraw","rings_merge","rings_timelock_create","rings_timelock_settle","rings_zone_create","rings_ring_exit","rings_ring_entry"],"description":"An operation family (privacy, payment, ramp, issuance, program) or a single operation type. A family entry covers every type in it.","example":"payment"},"description":"Operation families and types this key may perform on the wallets it can access. An empty list places no restriction.","example":["payment","ramp_offramp_quote"]},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time","description":"Timestamp of the last key usage.","example":"2025-01-10T12:00:00.000Z"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Expiration timestamp, if set.","example":"2025-12-31T00:00:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","name","keyPrefix","role","environment","status","walletScope","signingWalletId","signingWalletIds","walletBindings","allowedOperations","lastUsedAt","expiresAt","createdAt"],"description":"API key list item."},"description":"Project API keys."}},"required":["apiKeys"],"description":"List of project API keys."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"post":{"tags":["Projects"],"summary":"Create project API key","operationId":"createProjectApiKey","description":"Creates an API key scoped to the project. The full key is returned once.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"required":true,"description":"Project identifier.","name":"projectId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Friendly name for the API key.","example":"Primary Key"},"description":{"type":"string","maxLength":500,"description":"Optional key description.","example":"Used by backend service."},"role":{"type":"string","enum":["api_admin","api_developer","api_readonly"],"description":"Role assigned to this API key.","example":"api_developer"},"permissions":{"type":"array","items":{"type":"string","enum":["tokens:read","tokens:write","tokens:admin","payments:read","payments:write","earn:read","earn:write","counterparties:read","counterparties:write","wallets:read","wallets:write","compliance:read","compliance:write","webhooks:read","webhooks:write","transactions:read","transactions:write","audit:read","org:read","org:write","org:admin","api-keys:read","api-keys:write","projects:read","projects:write","projects:admin","project-members:read","project-members:write","sessions:read","sessions:write","custody:read","custody:write","custody:admin","*"]},"description":"Optional explicit permission set. Requires admin access.","example":["tokens:read","tokens:write"]},"walletScope":{"type":"string","enum":["all","selected"],"description":"Explicit wallet access mode. Use 'all' to allow every wallet in scope or 'selected' to bind specific wallets.","example":"selected"},"allowedIps":{"type":"array","items":{"type":"string"},"description":"Optional list of IPv4/IPv6 addresses or CIDR ranges allowed to use the key.","example":["203.0.113.0/24"]},"allowedOperations":{"type":"array","items":{"type":"string","enum":["privacy","payment","ramp","issuance","program","payment_transfer_execute","payment_transfer_batch_execute","recurring_payment_create","recurring_payment_update","recurring_payment_collection","ramp_onramp_quote","ramp_offramp_quote","issuance_allowlist_add_execute","issuance_allowlist_remove_execute","issuance_burn_execute","issuance_deploy_execute","issuance_force_burn_execute","issuance_freeze_execute","issuance_metadata_update_execute","issuance_mint_execute","issuance_pause_execute","issuance_seize_execute","issuance_unfreeze_execute","issuance_unpause_execute","issuance_update_authority_execute","dvp_fund","dvp_settle","earn_vault_deposit","earn_vault_withdrawal","earn_program_withdrawal","rings_shield","rings_transfer_registered","rings_transfer_anonymous","rings_withdraw","rings_merge","rings_timelock_create","rings_timelock_settle","rings_zone_create","rings_ring_exit","rings_ring_entry"]},"maxItems":40,"description":"Optional operation families and types the key may perform. Omit or pass an empty list for no restriction. A key cannot grant operations outside its own list.","example":["payment","ramp"]},"expiresAt":{"type":"string","format":"date-time","description":"Optional expiration timestamp.","example":"2025-12-31T00:00:00.000Z"},"signingWalletId":{"type":"string","minLength":1,"description":"Optional default custody wallet ID to bind this key to.","example":"privy_wallet_123"},"signingWalletIds":{"type":"array","items":{"type":"string","minLength":1},"description":"Optional list of custody wallet IDs to bind to this key. The first wallet becomes default unless signingWalletId is explicitly set.","example":["privy_wallet_123","dfns_wallet_456"]},"walletBindings":{"type":"array","items":{"type":"object","properties":{"walletId":{"type":"string","minLength":1},"permissions":{"type":"array","items":{"type":"string","enum":["tokens:read","tokens:write","tokens:admin","payments:read","payments:write","earn:read","earn:write","counterparties:read","counterparties:write","wallets:read","wallets:write","compliance:read","compliance:write","webhooks:read","webhooks:write","transactions:read","transactions:write","audit:read","org:read","org:write","org:admin","api-keys:read","api-keys:write","projects:read","projects:write","projects:admin","project-members:read","project-members:write","sessions:read","sessions:write","custody:read","custody:write","custody:admin","*"]}}},"required":["walletId"]},"description":"Optional wallet-level permission bindings. Use this to attach multiple wallets with scoped permissions."},"provisionWallet":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["local","fireblocks","privy","coinbase_cdp","para","turnkey","dfns","ibm_haven","anchorage","utila"],"description":"Provider whose Managed config owns the new wallet. A project holds one active config per provider.","example":"privy"}},"required":["provider"],"not":{"required":["connectionId"]}},{"type":"object","properties":{"connectionId":{"type":"string","minLength":1,"description":"Custody Connection (BYOK) that owns the new wallet.","example":"cconn_123"}},"required":["connectionId"],"not":{"required":["provider"]}}],"description":"Provision a new wallet for this key under exactly one provider account: { provider } for the project's Managed config for that provider, or { connectionId } for a Custody Connection.","example":{"connectionId":"cconn_123"}},"walletLabel":{"type":"string","maxLength":100,"description":"Optional label for a provisioned wallet.","example":"Mint authority wallet"},"walletPurpose":{"type":"string","enum":["root","mint_authority","freeze_authority","fee_payer","transfer"],"description":"Optional purpose for a provisioned wallet.","example":"mint_authority"}},"required":["name","walletScope"],"description":"Create API key request body.","example":{"name":"Primary Key","role":"api_developer","walletScope":"selected","provisionWallet":{"connectionId":"cconn_123"},"walletLabel":"Mint authority wallet","walletPurpose":"mint_authority"}}}}},"responses":{"201":{"description":"Project API key created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiKey":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"API key identifier.","example":"key_example"},"name":{"type":"string","description":"API key name.","example":"Primary Key"},"key":{"type":"string","description":"Full API key. Only returned once.","example":"sk_test_example"},"keyPrefix":{"type":"string","description":"API key prefix for display.","example":"sk_test_abc"},"role":{"type":"string","enum":["api_admin","api_developer","api_readonly"],"description":"API key role.","example":"api_developer"},"environment":{"type":"string","enum":["sandbox","production"],"description":"API key environment.","example":"sandbox"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Expiration timestamp, if set.","example":"2025-12-31T00:00:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","name","key","keyPrefix","role","environment","expiresAt","createdAt"],"description":"API key details."}},"required":["apiKey"],"description":"API key create response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"503":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/templates":{"get":{"tags":["Issuance"],"summary":"List token templates","operationId":"listTokenTemplates","description":"Returns all available token templates with their default configuration and supported extensions.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Template list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"templates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["stablecoin","arcade","tokenized-security","custom","rwa"],"description":"Token template identifier.","example":"stablecoin"},"name":{"type":"string","description":"Human-readable template name.","example":"Stablecoin"},"description":{"type":"string","description":"Template description and use case.","example":"USD-backed stablecoins with compliance controls and privacy features"},"decimals":{"type":"integer","description":"Default decimals for the template.","example":6},"maxDecimals":{"type":"integer","description":"Maximum allowed decimals for this template.","example":18},"requiresAllowlist":{"type":"boolean","description":"Whether allowlists are required for this template by default.","example":true},"allowlistOverridable":{"type":"boolean","description":"Whether allowlist enforcement can be disabled by request.","example":true},"requiredExtensions":{"type":"array","items":{"type":"string","enum":["transferFee","interestBearing","permanentDelegate","pausable","nonTransferable","defaultAccountState","scaledUiAmount","transferHook"],"description":"Token-2022 extension name.","example":"transferFee"},"description":"Required Token-2022 extensions for this template.","example":["permanentDelegate","pausable"]},"availableExtensions":{"type":"array","items":{"type":"string","enum":["transferFee","interestBearing","permanentDelegate","pausable","nonTransferable","defaultAccountState","scaledUiAmount","transferHook"],"description":"Token-2022 extension name.","example":"transferFee"},"description":"Extensions that can be configured for this template.","example":["scaledUiAmount","interestBearing"]},"defaultExtensions":{"type":"object","additionalProperties":{"nullable":true},"description":"Default extension values used by this template.","example":{"defaultAccountState":"initialized"}}},"required":["id","name","decimals","maxDecimals","requiresAllowlist","allowlistOverridable","requiredExtensions","availableExtensions","defaultExtensions"],"description":"Token template information."},"description":"List of available token templates."}},"required":["templates"],"description":"List templates response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/templates/{templateId}":{"get":{"tags":["Issuance"],"summary":"Get token template","operationId":"getTokenTemplate","description":"Returns details for a specific token template including default decimals, required extensions, and available overrides.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Template identifier.","example":"stablecoin"},"required":true,"description":"Template identifier.","name":"templateId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Template details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"template":{"type":"object","properties":{"id":{"type":"string","enum":["stablecoin","arcade","tokenized-security","custom","rwa"],"description":"Token template identifier.","example":"stablecoin"},"name":{"type":"string","description":"Human-readable template name.","example":"Stablecoin"},"description":{"type":"string","description":"Template description and use case.","example":"USD-backed stablecoins with compliance controls and privacy features"},"decimals":{"type":"integer","description":"Default decimals for the template.","example":6},"maxDecimals":{"type":"integer","description":"Maximum allowed decimals for this template.","example":18},"requiresAllowlist":{"type":"boolean","description":"Whether allowlists are required for this template by default.","example":true},"allowlistOverridable":{"type":"boolean","description":"Whether allowlist enforcement can be disabled by request.","example":true},"requiredExtensions":{"type":"array","items":{"type":"string","enum":["transferFee","interestBearing","permanentDelegate","pausable","nonTransferable","defaultAccountState","scaledUiAmount","transferHook"],"description":"Token-2022 extension name.","example":"transferFee"},"description":"Required Token-2022 extensions for this template.","example":["permanentDelegate","pausable"]},"availableExtensions":{"type":"array","items":{"type":"string","enum":["transferFee","interestBearing","permanentDelegate","pausable","nonTransferable","defaultAccountState","scaledUiAmount","transferHook"],"description":"Token-2022 extension name.","example":"transferFee"},"description":"Extensions that can be configured for this template.","example":["scaledUiAmount","interestBearing"]},"defaultExtensions":{"type":"object","additionalProperties":{"nullable":true},"description":"Default extension values used by this template.","example":{"defaultAccountState":"initialized"}}},"required":["id","name","decimals","maxDecimals","requiresAllowlist","allowlistOverridable","requiredExtensions","availableExtensions","defaultExtensions"],"description":"Template details."}},"required":["template"],"description":"Token template response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens":{"post":{"tags":["Issuance"],"summary":"Create token","operationId":"createToken","description":"Creates a token record that can later be deployed to Solana.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Token name.","example":"Example Token"},"symbol":{"type":"string","minLength":1,"maxLength":10,"pattern":"^[A-Za-z0-9]+(?:\\.[A-Za-z0-9]+)*$","description":"Ticker symbol.","example":"EXM"},"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID for direct deployment. A draft may defer selection until deploy.","example":"cwlt_example"},"decimals":{"type":"integer","minimum":0,"maximum":18,"description":"Token decimals.","example":6},"description":{"type":"string","maxLength":500,"description":"Token description.","example":"Example token description."},"uri":{"type":"string","maxLength":512,"format":"uri","description":"Metadata URI passed to on-chain token metadata (points to off-chain JSON).","example":"https://example.com/metadata.json"},"imageUrl":{"type":"string","maxLength":512,"format":"uri","description":"Token image URL.","example":"https://example.com/token.png"},"maxSupply":{"type":"string","description":"Maximum supply as a string (UI units).","example":"1000000"},"template":{"type":"string","enum":["stablecoin","arcade","tokenized-security","custom"],"description":"Token template preset. Defaults to 'custom' if not specified.","example":"stablecoin"},"overrides":{"type":"object","properties":{"extensions":{"type":"object","properties":{"transferFee":{"anyOf":[{"type":"boolean","enum":[false]},{"type":"object","properties":{"basisPoints":{"type":"integer","minimum":0,"maximum":10000,"description":"Transfer fee in basis points.","example":50},"maxFee":{"type":"string","description":"Maximum fee in UI units.","example":"0.5"},"transferFeeConfigAuthority":{"type":"string","description":"Authority to configure transfer fees. Defaults to platform authority.","example":"So11111111111111111111111111111111111111112"},"withdrawWithheldAuthority":{"type":"string","description":"Authority to withdraw withheld fees. Defaults to platform authority.","example":"So11111111111111111111111111111111111111112"}},"required":["basisPoints","maxFee"]}],"description":"Transfer fee configuration or false to disable."},"interestBearing":{"anyOf":[{"type":"boolean","enum":[false]},{"type":"object","properties":{"rate":{"type":"number","description":"Interest rate in percent.","example":2.5},"rateAuthority":{"type":"string","description":"Authority that can update the rate. Defaults to platform authority.","example":"So11111111111111111111111111111111111111112"}},"required":["rate"]}],"description":"Interest-bearing configuration or false to disable."},"permanentDelegate":{"anyOf":[{"type":"boolean","enum":[false]},{"type":"string"}],"description":"Permanent delegate authority address, or false to disable.","example":"So11111111111111111111111111111111111111112"},"pausable":{"anyOf":[{"type":"boolean","enum":[false]},{"type":"object","properties":{"authority":{"type":"string","description":"Authority that can pause/resume transfers. Defaults to platform authority.","example":"So11111111111111111111111111111111111111112"}}}],"description":"Pausable configuration or false to disable."},"nonTransferable":{"type":"boolean","description":"Enable/disable non-transferable.","example":false},"defaultAccountState":{"type":"string","enum":["initialized","frozen"],"description":"Override default account state.","example":"frozen"},"scaledUiAmount":{"anyOf":[{"type":"boolean","enum":[false]},{"type":"object","properties":{"authority":{"type":"string","description":"Authority that can update scaled UI parameters. Defaults to platform authority.","example":"So11111111111111111111111111111111111111112"},"multiplier":{"type":"number","description":"Current UI multiplier.","example":1},"newMultiplier":{"type":"number","description":"Scheduled multiplier.","example":2},"newMultiplierEffectiveTimestamp":{"type":"integer","description":"Unix timestamp (seconds) when the new multiplier takes effect.","example":1735689600}},"required":["multiplier"]}],"description":"Scaled UI amount configuration or false to disable."},"transferHook":{"anyOf":[{"type":"boolean","enum":[false]},{"type":"object","properties":{"programId":{"type":"string","description":"Transfer hook program id.","example":"So11111111111111111111111111111111111111112"},"authority":{"type":"string","description":"Authority that can update the hook program. Defaults to platform authority.","example":"So11111111111111111111111111111111111111112"}},"required":["programId"]}],"description":"Transfer hook configuration or false to disable."}},"description":"Override template extension configuration."},"requiresAllowlist":{"type":"boolean","description":"Override allowlist requirement (if template allows).","example":true}},"description":"Template overrides to customize defaults.","example":{"extensions":{"transferFee":{"basisPoints":50,"maxFee":"0.5"}}}},"requiresAllowlist":{"type":"boolean","description":"Require allowlist checks for transfers.","example":true},"isMintable":{"type":"boolean","description":"Allow minting after creation.","example":true},"isFreezable":{"type":"boolean","description":"Allow freezing token accounts.","example":true}},"required":["name","symbol"],"additionalProperties":false,"description":"Create token request body."}}}},"responses":{"201":{"description":"Token created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"token":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"signingCustodyWalletId":{"type":"string","nullable":true,"minLength":1,"description":"Exact deployment wallet selected for a pending token, or historical deployment attribution after deployment. This is not the current signer for later authority operations.","example":"cwlt_example"},"mintAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint address once deployed.","example":"So11111111111111111111111111111111111111112"},"mintAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint authority address, if set.","example":"So11111111111111111111111111111111111111112"},"freezeAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Freeze authority address, if set.","example":"So11111111111111111111111111111111111111112"},"ablListAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain allowlist/blocklist address, if enabled.","example":"So11111111111111111111111111111111111111112"},"name":{"type":"string","description":"Token name.","example":"Example Token"},"symbol":{"type":"string","description":"Token symbol.","example":"EXM"},"decimals":{"type":"integer","description":"Token decimals.","example":9},"description":{"type":"string","nullable":true,"description":"Token description.","example":"Example token description."},"uri":{"type":"string","nullable":true,"description":"Metadata URI passed to on-chain token metadata (points to off-chain JSON).","example":"https://example.com/metadata.json"},"imageUrl":{"type":"string","nullable":true,"description":"Token image URL.","example":"https://example.com/token.png"},"template":{"type":"string","enum":["stablecoin","arcade","tokenized-security","custom","rwa"],"description":"Token template identifier.","example":"stablecoin"},"extensions":{"type":"object","nullable":true,"properties":{"transferFee":{"type":"object","properties":{"basisPoints":{"type":"integer","minimum":0,"maximum":10000,"description":"Transfer fee in basis points (0-10000).","example":25},"maxFee":{"type":"string","description":"Maximum fee in UI units.","example":"0.5"},"transferFeeConfigAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority to configure transfer fees.","example":"So11111111111111111111111111111111111111112"},"withdrawWithheldAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority to withdraw withheld fees.","example":"So11111111111111111111111111111111111111112"}},"required":["basisPoints","maxFee","transferFeeConfigAuthority","withdrawWithheldAuthority"],"description":"Transfer fee configuration."},"interestBearing":{"type":"object","properties":{"rate":{"type":"number","description":"Interest rate in percent.","example":2.5},"rateAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update the rate.","example":"So11111111111111111111111111111111111111112"}},"required":["rate","rateAuthority"],"description":"Interest-bearing configuration."},"permanentDelegate":{"type":"string","minLength":32,"maxLength":44,"description":"Permanent delegate address.","example":"So11111111111111111111111111111111111111112"},"pausable":{"type":"object","properties":{"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can pause/resume transfers.","example":"So11111111111111111111111111111111111111112"}},"description":"Pausable configuration."},"nonTransferable":{"type":"boolean","description":"Mark token as non-transferable.","example":false},"defaultAccountState":{"type":"string","enum":["initialized","frozen"],"description":"Default account state.","example":"initialized"},"scaledUiAmount":{"type":"object","properties":{"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update scaled UI parameters.","example":"So11111111111111111111111111111111111111112"},"multiplier":{"type":"number","description":"Current UI multiplier.","example":1},"newMultiplier":{"type":"number","description":"Scheduled multiplier.","example":2},"newMultiplierEffectiveTimestamp":{"type":"integer","description":"Unix timestamp (seconds) when the new multiplier takes effect.","example":1735689600}},"required":["multiplier","newMultiplier","newMultiplierEffectiveTimestamp"],"description":"Scaled UI amount configuration."},"transferHook":{"type":"object","properties":{"programId":{"type":"string","minLength":32,"maxLength":44,"description":"Transfer hook program id.","example":"So11111111111111111111111111111111111111112"},"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update the transfer hook program.","example":"So11111111111111111111111111111111111111112"}},"required":["programId"],"description":"Transfer hook configuration."}},"additionalProperties":false,"description":"Token-2022 extensions configuration."},"totalSupply":{"type":"string","description":"Cached total supply in UI units (stored to avoid frequent RPC reads). Use POST /v1/issuance/tokens/{tokenId}/supply/refresh to force an on-chain refresh.","example":"1000000"},"totalSupplyUpdatedAt":{"type":"string","nullable":true,"format":"date-time","description":"Timestamp when supply was last refreshed.","example":null},"maxSupply":{"type":"string","nullable":true,"description":"Maximum supply in UI units, if capped.","example":"10000000"},"isMintable":{"type":"boolean","description":"Whether additional minting is allowed.","example":true},"isFreezable":{"type":"boolean","description":"Whether freeze authority is enabled.","example":true},"requiresAllowlist":{"type":"boolean","description":"Whether transfers require allowlist approval.","example":false},"status":{"type":"string","enum":["pending","active","paused","revoked"],"description":"Token lifecycle status.","example":"active"},"deployedAt":{"type":"string","nullable":true,"format":"date-time","description":"Deployment timestamp, if deployed.","example":"2025-01-05T00:00:00.000Z"},"createdBy":{"type":"string","description":"Actor identifier that created the token.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","projectId","organizationId","signingCustodyWalletId","mintAddress","mintAuthority","freezeAuthority","ablListAddress","name","symbol","decimals","description","uri","imageUrl","template","extensions","totalSupply","totalSupplyUpdatedAt","maxSupply","isMintable","isFreezable","requiresAllowlist","status","deployedAt","createdBy","createdAt","updatedAt"],"description":"Token details."},"allowlistAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live on-chain list authority. Returned only by GET token with includeAllowlistAuthority=true; null when no on-chain list is configured. This is not the token freeze authority or a signer authorization.","example":"So11111111111111111111111111111111111111112"},"freezeAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live freeze-operation authority. Returned only by GET token with includeFreezeAuthority=true. For Token ACL mints this is the mint-config controller rather than the mint's program PDA freeze authority.","example":"So11111111111111111111111111111111111111112"},"metadataAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Metadata authority, returned only by GET token with includeMetadataAuthority=true. Read live on-chain when the token has a mint; otherwise the stored metadata authority or stored mint authority. Null when unavailable. RPC failure returns 502 without falling back to stored authority. This read does not authorize signing or change the token.","example":"So11111111111111111111111111111111111111112"},"pauseAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live on-chain pausable authority. Returned only by GET token with includePauseAuthority=true; null when the mint has no pausable authority.","example":"So11111111111111111111111111111111111111112"}},"required":["token"],"description":"Token response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"get":{"tags":["Issuance"],"summary":"List tokens","operationId":"listTokens","description":"Lists tokens for the current project or organization. Supports contains-style search, filtering and sorting; `meta.total` always reflects the active filters. Ordering carries an id tiebreaker, so paging is stable across tokens that share a timestamp or name.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":1000000,"default":1,"description":"Page number (1-based).","example":1},"required":false,"description":"Page number (1-based).","name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (max 100).","example":50},"required":false,"description":"Items per page (max 100).","name":"pageSize","in":"query"},{"schema":{"type":"string","maxLength":100,"description":"Contains-style, case-insensitive match over name, symbol, mint address and token id. LIKE wildcards are matched literally. A blank value is treated as no search filter.","example":"usdc"},"required":false,"description":"Contains-style, case-insensitive match over name, symbol, mint address and token id. LIKE wildcards are matched literally. A blank value is treated as no search filter.","name":"search","in":"query"},{"schema":{"type":"string","enum":["pending","active","paused","revoked"],"description":"Filter by the stored lifecycle column.","example":"active"},"required":false,"description":"Filter by the stored lifecycle column.","name":"status","in":"query"},{"schema":{"type":"string","enum":["draft","active","paused"],"description":"Filter by derived lifecycle state: draft until the token has a mint, paused when the mint is paused, active otherwise.","example":"active"},"required":false,"description":"Filter by derived lifecycle state: draft until the token has a mint, paused when the mint is paused, active otherwise.","name":"deploymentStatus","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Exact-match template id. Use GET /v1/issuance/tokens/facets for the ids present in the project (older tokens may hold legacy ids).","example":"stablecoin"},"required":false,"description":"Exact-match template id. Use GET /v1/issuance/tokens/facets for the ids present in the project (older tokens may hold legacy ids).","name":"template","in":"query"},{"schema":{"type":"string","format":"date-time","description":"Inclusive lower bound on creation time (ISO 8601).","example":"2026-01-01T00:00:00.000Z"},"required":false,"description":"Inclusive lower bound on creation time (ISO 8601).","name":"createdAfter","in":"query"},{"schema":{"type":"string","format":"date-time","description":"Inclusive upper bound on creation time (ISO 8601).","example":"2026-06-30T23:59:59.999Z"},"required":false,"description":"Inclusive upper bound on creation time (ISO 8601).","name":"createdBefore","in":"query"},{"schema":{"type":"string","enum":["createdAt","name"],"default":"createdAt","description":"Field used to sort the token list.","example":"createdAt"},"required":false,"description":"Field used to sort the token list.","name":"sortBy","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Sort direction.","example":"desc"},"required":false,"description":"Sort direction.","name":"sortDirection","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Token list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"signingCustodyWalletId":{"type":"string","nullable":true,"minLength":1,"description":"Exact deployment wallet selected for a pending token, or historical deployment attribution after deployment. This is not the current signer for later authority operations.","example":"cwlt_example"},"mintAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint address once deployed.","example":"So11111111111111111111111111111111111111112"},"mintAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint authority address, if set.","example":"So11111111111111111111111111111111111111112"},"freezeAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Freeze authority address, if set.","example":"So11111111111111111111111111111111111111112"},"ablListAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain allowlist/blocklist address, if enabled.","example":"So11111111111111111111111111111111111111112"},"name":{"type":"string","description":"Token name.","example":"Example Token"},"symbol":{"type":"string","description":"Token symbol.","example":"EXM"},"decimals":{"type":"integer","description":"Token decimals.","example":9},"description":{"type":"string","nullable":true,"description":"Token description.","example":"Example token description."},"uri":{"type":"string","nullable":true,"description":"Metadata URI passed to on-chain token metadata (points to off-chain JSON).","example":"https://example.com/metadata.json"},"imageUrl":{"type":"string","nullable":true,"description":"Token image URL.","example":"https://example.com/token.png"},"template":{"type":"string","enum":["stablecoin","arcade","tokenized-security","custom","rwa"],"description":"Token template identifier.","example":"stablecoin"},"extensions":{"type":"object","nullable":true,"properties":{"transferFee":{"type":"object","properties":{"basisPoints":{"type":"integer","minimum":0,"maximum":10000,"description":"Transfer fee in basis points (0-10000).","example":25},"maxFee":{"type":"string","description":"Maximum fee in UI units.","example":"0.5"},"transferFeeConfigAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority to configure transfer fees.","example":"So11111111111111111111111111111111111111112"},"withdrawWithheldAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority to withdraw withheld fees.","example":"So11111111111111111111111111111111111111112"}},"required":["basisPoints","maxFee","transferFeeConfigAuthority","withdrawWithheldAuthority"],"description":"Transfer fee configuration."},"interestBearing":{"type":"object","properties":{"rate":{"type":"number","description":"Interest rate in percent.","example":2.5},"rateAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update the rate.","example":"So11111111111111111111111111111111111111112"}},"required":["rate","rateAuthority"],"description":"Interest-bearing configuration."},"permanentDelegate":{"type":"string","minLength":32,"maxLength":44,"description":"Permanent delegate address.","example":"So11111111111111111111111111111111111111112"},"pausable":{"type":"object","properties":{"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can pause/resume transfers.","example":"So11111111111111111111111111111111111111112"}},"description":"Pausable configuration."},"nonTransferable":{"type":"boolean","description":"Mark token as non-transferable.","example":false},"defaultAccountState":{"type":"string","enum":["initialized","frozen"],"description":"Default account state.","example":"initialized"},"scaledUiAmount":{"type":"object","properties":{"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update scaled UI parameters.","example":"So11111111111111111111111111111111111111112"},"multiplier":{"type":"number","description":"Current UI multiplier.","example":1},"newMultiplier":{"type":"number","description":"Scheduled multiplier.","example":2},"newMultiplierEffectiveTimestamp":{"type":"integer","description":"Unix timestamp (seconds) when the new multiplier takes effect.","example":1735689600}},"required":["multiplier","newMultiplier","newMultiplierEffectiveTimestamp"],"description":"Scaled UI amount configuration."},"transferHook":{"type":"object","properties":{"programId":{"type":"string","minLength":32,"maxLength":44,"description":"Transfer hook program id.","example":"So11111111111111111111111111111111111111112"},"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update the transfer hook program.","example":"So11111111111111111111111111111111111111112"}},"required":["programId"],"description":"Transfer hook configuration."}},"additionalProperties":false,"description":"Token-2022 extensions configuration."},"totalSupply":{"type":"string","description":"Cached total supply in UI units (stored to avoid frequent RPC reads). Use POST /v1/issuance/tokens/{tokenId}/supply/refresh to force an on-chain refresh.","example":"1000000"},"totalSupplyUpdatedAt":{"type":"string","nullable":true,"format":"date-time","description":"Timestamp when supply was last refreshed.","example":null},"maxSupply":{"type":"string","nullable":true,"description":"Maximum supply in UI units, if capped.","example":"10000000"},"isMintable":{"type":"boolean","description":"Whether additional minting is allowed.","example":true},"isFreezable":{"type":"boolean","description":"Whether freeze authority is enabled.","example":true},"requiresAllowlist":{"type":"boolean","description":"Whether transfers require allowlist approval.","example":false},"status":{"type":"string","enum":["pending","active","paused","revoked"],"description":"Token lifecycle status.","example":"active"},"deployedAt":{"type":"string","nullable":true,"format":"date-time","description":"Deployment timestamp, if deployed.","example":"2025-01-05T00:00:00.000Z"},"createdBy":{"type":"string","description":"Actor identifier that created the token.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","projectId","organizationId","signingCustodyWalletId","mintAddress","mintAuthority","freezeAuthority","ablListAddress","name","symbol","decimals","description","uri","imageUrl","template","extensions","totalSupply","totalSupplyUpdatedAt","maxSupply","isMintable","isFreezable","requiresAllowlist","status","deployedAt","createdBy","createdAt","updatedAt"],"description":"Token record."}},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"description":"Total items."},"page":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Current page number."},"pageSize":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Items per page."},"hasMore":{"type":"boolean","description":"Whether more pages exist."},"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}},"required":["total","page","pageSize","hasMore","requestId"],"description":"Pagination metadata."}},"required":["data","meta"],"description":"Standard paginated response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/facets":{"get":{"tags":["Issuance"],"summary":"List token filter facets","operationId":"listTokenFacets","description":"Returns the filter choices available for the project's token list — template ids in use, counts per lifecycle state, and the unfiltered total. Deliberately unaffected by list filters, so a client can offer the full set of options while showing a filtered page.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Token filter facets","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"templates":{"type":"array","items":{"type":"object","properties":{"template":{"type":"string","example":"stablecoin"},"count":{"type":"integer","example":12}},"required":["template","count"]},"description":"Template ids present in the project with their token counts. Includes legacy ids still stored on older tokens."},"deploymentStatuses":{"type":"object","properties":{"draft":{"type":"integer","example":3},"active":{"type":"integer","example":8},"paused":{"type":"integer","example":1}},"required":["draft","active","paused"],"description":"Token counts per derived lifecycle state (draft until deployed, paused when the mint is paused, active otherwise)."},"total":{"type":"integer","description":"Total tokens in the project, unfiltered — distinguishes an empty project from an over-filtered list.","example":12}},"required":["templates","deploymentStatuses","total"]},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/transactions":{"get":{"tags":["Issuance"],"summary":"List issuance transactions","operationId":"listIssuanceTransactions","description":"Lists issuance transactions across tokens for the current organization or project. Selected-wallet API keys are scoped to their token-readable wallet bindings when no wallet selector is supplied. Use repeated type query parameters, for example type=burn&type=force_burn, to request multiple transaction types. custodyWalletId and walletId cannot be combined.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Filter to transactions where this exact SDP wallet's address participated. This is participant history, not a signer-only filter.","example":"cwlt_example"},"required":false,"description":"Filter to transactions where this exact SDP wallet's address participated. This is participant history, not a signer-only filter.","name":"custodyWalletId","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Legacy Provider wallet ID filter. Cannot be combined with custodyWalletId.","example":"privy_wallet_123"},"required":false,"description":"Legacy Provider wallet ID filter. Cannot be combined with custodyWalletId.","name":"walletId","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"],"description":"Filter by token transaction type.","example":"burn"},"description":"Filter by transaction type. Repeat this query parameter for multiple values, for example type=burn&type=force_burn.","example":["burn","force_burn"]},"required":false,"description":"Filter by transaction type. Repeat this query parameter for multiple values, for example type=burn&type=force_burn.","name":"type","in":"query"},{"schema":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"],"description":"Filter by token transaction status.","example":"confirmed"},"required":false,"description":"Filter by token transaction status.","name":"status","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Page number (1-based).","example":1},"required":false,"description":"Page number (1-based).","name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Number of items per page.","example":50},"required":false,"description":"Number of items per page.","name":"pageSize","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Issuance transaction list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"token":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"name":{"type":"string","description":"Token name.","example":"Example Token"},"symbol":{"type":"string","description":"Token symbol.","example":"EXM"},"mintAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint address once deployed.","example":null}},"required":["id","name","symbol","mintAddress"],"description":"Token metadata for this transaction."},"transaction":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token transaction identifier.","example":"ttx_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"type":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"],"description":"Transaction type.","example":"mint"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"],"description":"Transaction status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature.","example":"sig_example"},"idempotencyKey":{"type":"string","description":"Idempotency key used for this request.","example":"idem_example_12345"},"idempotencyFingerprint":{"type":"string","description":"Request fingerprint used to validate idempotent retries.","example":"4f2d9c7a5e6f1c..."},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"AQID"},"params":{"type":"object","additionalProperties":{"nullable":true},"description":"Operation parameters captured for audit."},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedByKeyId":{"type":"string","nullable":true,"minLength":1,"description":"API key that initiated the transaction.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","tokenId","organizationId","type","status","signature","serializedTx","params","slot","blockTime","fee","error","initiatedByKeyId","createdAt","updatedAt"],"description":"Token transaction record."}},"required":["token","transaction"],"description":"Cross-token transaction list item."}},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"description":"Total items."},"page":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Current page number."},"pageSize":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Items per page."},"hasMore":{"type":"boolean","description":"Whether more pages exist."},"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}},"required":["total","page","pageSize","hasMore","requestId"],"description":"Pagination metadata."}},"required":["data","meta"],"description":"Standard paginated response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}":{"get":{"tags":["Issuance"],"summary":"Get token","operationId":"getToken","description":"Gets token details with optional read-only authority lookups for wallet selection.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","enum":["true","false"],"description":"Opt in to a read-only RPC lookup of the current on-chain list authority for wallet selection. Ordinary token reads do not perform this lookup.","example":"true"},"required":false,"description":"Opt in to a read-only RPC lookup of the current on-chain list authority for wallet selection. Ordinary token reads do not perform this lookup.","name":"includeAllowlistAuthority","in":"query"},{"schema":{"type":"string","enum":["true","false"],"description":"Opt in to a read-only lookup of the authority that controls freeze operations. Token ACL mints return the live mint-config controller.","example":"true"},"required":false,"description":"Opt in to a read-only lookup of the authority that controls freeze operations. Token ACL mints return the live mint-config controller.","name":"includeFreezeAuthority","in":"query"},{"schema":{"type":"string","enum":["true","false"],"description":"Opt in to a read-only lookup of the current metadata authority for wallet selection. Tokens with a mint use live chain state; tokens without a mint use the stored metadata authority, falling back to stored mint authority, without RPC. Ordinary token reads do not perform this lookup.","example":"true"},"required":false,"description":"Opt in to a read-only lookup of the current metadata authority for wallet selection. Tokens with a mint use live chain state; tokens without a mint use the stored metadata authority, falling back to stored mint authority, without RPC. Ordinary token reads do not perform this lookup.","name":"includeMetadataAuthority","in":"query"},{"schema":{"type":"string","enum":["true","false"],"description":"Opt in to a read-only lookup of the live Token-2022 pausable authority for wallet selection.","example":"true"},"required":false,"description":"Opt in to a read-only lookup of the live Token-2022 pausable authority for wallet selection.","name":"includePauseAuthority","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Token","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"token":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"signingCustodyWalletId":{"type":"string","nullable":true,"minLength":1,"description":"Exact deployment wallet selected for a pending token, or historical deployment attribution after deployment. This is not the current signer for later authority operations.","example":"cwlt_example"},"mintAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint address once deployed.","example":"So11111111111111111111111111111111111111112"},"mintAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint authority address, if set.","example":"So11111111111111111111111111111111111111112"},"freezeAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Freeze authority address, if set.","example":"So11111111111111111111111111111111111111112"},"ablListAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain allowlist/blocklist address, if enabled.","example":"So11111111111111111111111111111111111111112"},"name":{"type":"string","description":"Token name.","example":"Example Token"},"symbol":{"type":"string","description":"Token symbol.","example":"EXM"},"decimals":{"type":"integer","description":"Token decimals.","example":9},"description":{"type":"string","nullable":true,"description":"Token description.","example":"Example token description."},"uri":{"type":"string","nullable":true,"description":"Metadata URI passed to on-chain token metadata (points to off-chain JSON).","example":"https://example.com/metadata.json"},"imageUrl":{"type":"string","nullable":true,"description":"Token image URL.","example":"https://example.com/token.png"},"template":{"type":"string","enum":["stablecoin","arcade","tokenized-security","custom","rwa"],"description":"Token template identifier.","example":"stablecoin"},"extensions":{"type":"object","nullable":true,"properties":{"transferFee":{"type":"object","properties":{"basisPoints":{"type":"integer","minimum":0,"maximum":10000,"description":"Transfer fee in basis points (0-10000).","example":25},"maxFee":{"type":"string","description":"Maximum fee in UI units.","example":"0.5"},"transferFeeConfigAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority to configure transfer fees.","example":"So11111111111111111111111111111111111111112"},"withdrawWithheldAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority to withdraw withheld fees.","example":"So11111111111111111111111111111111111111112"}},"required":["basisPoints","maxFee","transferFeeConfigAuthority","withdrawWithheldAuthority"],"description":"Transfer fee configuration."},"interestBearing":{"type":"object","properties":{"rate":{"type":"number","description":"Interest rate in percent.","example":2.5},"rateAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update the rate.","example":"So11111111111111111111111111111111111111112"}},"required":["rate","rateAuthority"],"description":"Interest-bearing configuration."},"permanentDelegate":{"type":"string","minLength":32,"maxLength":44,"description":"Permanent delegate address.","example":"So11111111111111111111111111111111111111112"},"pausable":{"type":"object","properties":{"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can pause/resume transfers.","example":"So11111111111111111111111111111111111111112"}},"description":"Pausable configuration."},"nonTransferable":{"type":"boolean","description":"Mark token as non-transferable.","example":false},"defaultAccountState":{"type":"string","enum":["initialized","frozen"],"description":"Default account state.","example":"initialized"},"scaledUiAmount":{"type":"object","properties":{"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update scaled UI parameters.","example":"So11111111111111111111111111111111111111112"},"multiplier":{"type":"number","description":"Current UI multiplier.","example":1},"newMultiplier":{"type":"number","description":"Scheduled multiplier.","example":2},"newMultiplierEffectiveTimestamp":{"type":"integer","description":"Unix timestamp (seconds) when the new multiplier takes effect.","example":1735689600}},"required":["multiplier","newMultiplier","newMultiplierEffectiveTimestamp"],"description":"Scaled UI amount configuration."},"transferHook":{"type":"object","properties":{"programId":{"type":"string","minLength":32,"maxLength":44,"description":"Transfer hook program id.","example":"So11111111111111111111111111111111111111112"},"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update the transfer hook program.","example":"So11111111111111111111111111111111111111112"}},"required":["programId"],"description":"Transfer hook configuration."}},"additionalProperties":false,"description":"Token-2022 extensions configuration."},"totalSupply":{"type":"string","description":"Cached total supply in UI units (stored to avoid frequent RPC reads). Use POST /v1/issuance/tokens/{tokenId}/supply/refresh to force an on-chain refresh.","example":"1000000"},"totalSupplyUpdatedAt":{"type":"string","nullable":true,"format":"date-time","description":"Timestamp when supply was last refreshed.","example":null},"maxSupply":{"type":"string","nullable":true,"description":"Maximum supply in UI units, if capped.","example":"10000000"},"isMintable":{"type":"boolean","description":"Whether additional minting is allowed.","example":true},"isFreezable":{"type":"boolean","description":"Whether freeze authority is enabled.","example":true},"requiresAllowlist":{"type":"boolean","description":"Whether transfers require allowlist approval.","example":false},"status":{"type":"string","enum":["pending","active","paused","revoked"],"description":"Token lifecycle status.","example":"active"},"deployedAt":{"type":"string","nullable":true,"format":"date-time","description":"Deployment timestamp, if deployed.","example":"2025-01-05T00:00:00.000Z"},"createdBy":{"type":"string","description":"Actor identifier that created the token.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","projectId","organizationId","signingCustodyWalletId","mintAddress","mintAuthority","freezeAuthority","ablListAddress","name","symbol","decimals","description","uri","imageUrl","template","extensions","totalSupply","totalSupplyUpdatedAt","maxSupply","isMintable","isFreezable","requiresAllowlist","status","deployedAt","createdBy","createdAt","updatedAt"],"description":"Token details."},"allowlistAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live on-chain list authority. Returned only by GET token with includeAllowlistAuthority=true; null when no on-chain list is configured. This is not the token freeze authority or a signer authorization.","example":"So11111111111111111111111111111111111111112"},"freezeAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live freeze-operation authority. Returned only by GET token with includeFreezeAuthority=true. For Token ACL mints this is the mint-config controller rather than the mint's program PDA freeze authority.","example":"So11111111111111111111111111111111111111112"},"metadataAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Metadata authority, returned only by GET token with includeMetadataAuthority=true. Read live on-chain when the token has a mint; otherwise the stored metadata authority or stored mint authority. Null when unavailable. RPC failure returns 502 without falling back to stored authority. This read does not authorize signing or change the token.","example":"So11111111111111111111111111111111111111112"},"pauseAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live on-chain pausable authority. Returned only by GET token with includePauseAuthority=true; null when the mint has no pausable authority.","example":"So11111111111111111111111111111111111111112"}},"required":["token"],"description":"Token response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"502":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"patch":{"tags":["Issuance"],"summary":"Update token","operationId":"updateToken","description":"Updates stored token fields. For deployed tokens, metadata fields are also written on-chain through the current metadata authority.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID. On an undeployed pending draft, updates the deployment wallet. After deployment, selects the signer only for this on-chain metadata update and does not change deployment attribution. A request containing only this field after deployment returns 400; include the token changes to apply. Database-only edits need no signer. For on-chain metadata updates, the selected wallet must control the current metadata authority; omission requires exactly one matching in-scope custody record, otherwise returns 409.","example":"cwlt_example"},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Updated token name. For deployed tokens, this updates on-chain Token-2022 metadata using the current metadata authority.","example":"Example Token Updated"},"symbol":{"type":"string","minLength":1,"maxLength":10,"pattern":"^[A-Za-z0-9]+(?:\\.[A-Za-z0-9]+)*$"},"decimals":{"type":"integer","minimum":0,"maximum":18},"description":{"type":"string","nullable":true,"maxLength":500,"description":"Updated token description. For deployed tokens, this writes the on-chain `description` metadata field. Use null to clear the displayed value.","example":"Updated token description."},"uri":{"type":"string","nullable":true,"maxLength":512,"format":"uri","description":"Updated metadata URI. For deployed tokens, this updates the on-chain Token-2022 metadata URI using the current metadata authority. Use null to clear.","example":"https://example.com/metadata.json"},"imageUrl":{"type":"string","nullable":true,"maxLength":512,"format":"uri","description":"Updated image URL. For deployed tokens, this writes the on-chain `image` metadata field. Use null to clear the displayed value.","example":"https://example.com/token.png"},"requiresAllowlist":{"type":"boolean","description":"Whether transfers are restricted to allowlisted accounts. Only accepted while the token is undeployed (pending, no mint address); returns 400 after deployment.","example":true},"maxSupply":{"type":"string","nullable":true,"description":"Updated maximum supply as a string (UI units); null removes the cap. Enforced by SDP at mint time while it holds the mint authority, so it is rejected with 400 once the supply is locked on-chain (mint authority revoked), and cannot be set below the already-minted supply.","example":"1000000"}},"description":"Update token request body."}}}},"responses":{"200":{"description":"Token updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"token":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"signingCustodyWalletId":{"type":"string","nullable":true,"minLength":1,"description":"Exact deployment wallet selected for a pending token, or historical deployment attribution after deployment. This is not the current signer for later authority operations.","example":"cwlt_example"},"mintAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint address once deployed.","example":"So11111111111111111111111111111111111111112"},"mintAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint authority address, if set.","example":"So11111111111111111111111111111111111111112"},"freezeAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Freeze authority address, if set.","example":"So11111111111111111111111111111111111111112"},"ablListAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain allowlist/blocklist address, if enabled.","example":"So11111111111111111111111111111111111111112"},"name":{"type":"string","description":"Token name.","example":"Example Token"},"symbol":{"type":"string","description":"Token symbol.","example":"EXM"},"decimals":{"type":"integer","description":"Token decimals.","example":9},"description":{"type":"string","nullable":true,"description":"Token description.","example":"Example token description."},"uri":{"type":"string","nullable":true,"description":"Metadata URI passed to on-chain token metadata (points to off-chain JSON).","example":"https://example.com/metadata.json"},"imageUrl":{"type":"string","nullable":true,"description":"Token image URL.","example":"https://example.com/token.png"},"template":{"type":"string","enum":["stablecoin","arcade","tokenized-security","custom","rwa"],"description":"Token template identifier.","example":"stablecoin"},"extensions":{"type":"object","nullable":true,"properties":{"transferFee":{"type":"object","properties":{"basisPoints":{"type":"integer","minimum":0,"maximum":10000,"description":"Transfer fee in basis points (0-10000).","example":25},"maxFee":{"type":"string","description":"Maximum fee in UI units.","example":"0.5"},"transferFeeConfigAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority to configure transfer fees.","example":"So11111111111111111111111111111111111111112"},"withdrawWithheldAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority to withdraw withheld fees.","example":"So11111111111111111111111111111111111111112"}},"required":["basisPoints","maxFee","transferFeeConfigAuthority","withdrawWithheldAuthority"],"description":"Transfer fee configuration."},"interestBearing":{"type":"object","properties":{"rate":{"type":"number","description":"Interest rate in percent.","example":2.5},"rateAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update the rate.","example":"So11111111111111111111111111111111111111112"}},"required":["rate","rateAuthority"],"description":"Interest-bearing configuration."},"permanentDelegate":{"type":"string","minLength":32,"maxLength":44,"description":"Permanent delegate address.","example":"So11111111111111111111111111111111111111112"},"pausable":{"type":"object","properties":{"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can pause/resume transfers.","example":"So11111111111111111111111111111111111111112"}},"description":"Pausable configuration."},"nonTransferable":{"type":"boolean","description":"Mark token as non-transferable.","example":false},"defaultAccountState":{"type":"string","enum":["initialized","frozen"],"description":"Default account state.","example":"initialized"},"scaledUiAmount":{"type":"object","properties":{"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update scaled UI parameters.","example":"So11111111111111111111111111111111111111112"},"multiplier":{"type":"number","description":"Current UI multiplier.","example":1},"newMultiplier":{"type":"number","description":"Scheduled multiplier.","example":2},"newMultiplierEffectiveTimestamp":{"type":"integer","description":"Unix timestamp (seconds) when the new multiplier takes effect.","example":1735689600}},"required":["multiplier","newMultiplier","newMultiplierEffectiveTimestamp"],"description":"Scaled UI amount configuration."},"transferHook":{"type":"object","properties":{"programId":{"type":"string","minLength":32,"maxLength":44,"description":"Transfer hook program id.","example":"So11111111111111111111111111111111111111112"},"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update the transfer hook program.","example":"So11111111111111111111111111111111111111112"}},"required":["programId"],"description":"Transfer hook configuration."}},"additionalProperties":false,"description":"Token-2022 extensions configuration."},"totalSupply":{"type":"string","description":"Cached total supply in UI units (stored to avoid frequent RPC reads). Use POST /v1/issuance/tokens/{tokenId}/supply/refresh to force an on-chain refresh.","example":"1000000"},"totalSupplyUpdatedAt":{"type":"string","nullable":true,"format":"date-time","description":"Timestamp when supply was last refreshed.","example":null},"maxSupply":{"type":"string","nullable":true,"description":"Maximum supply in UI units, if capped.","example":"10000000"},"isMintable":{"type":"boolean","description":"Whether additional minting is allowed.","example":true},"isFreezable":{"type":"boolean","description":"Whether freeze authority is enabled.","example":true},"requiresAllowlist":{"type":"boolean","description":"Whether transfers require allowlist approval.","example":false},"status":{"type":"string","enum":["pending","active","paused","revoked"],"description":"Token lifecycle status.","example":"active"},"deployedAt":{"type":"string","nullable":true,"format":"date-time","description":"Deployment timestamp, if deployed.","example":"2025-01-05T00:00:00.000Z"},"createdBy":{"type":"string","description":"Actor identifier that created the token.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","projectId","organizationId","signingCustodyWalletId","mintAddress","mintAuthority","freezeAuthority","ablListAddress","name","symbol","decimals","description","uri","imageUrl","template","extensions","totalSupply","totalSupplyUpdatedAt","maxSupply","isMintable","isFreezable","requiresAllowlist","status","deployedAt","createdBy","createdAt","updatedAt"],"description":"Token details."},"allowlistAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live on-chain list authority. Returned only by GET token with includeAllowlistAuthority=true; null when no on-chain list is configured. This is not the token freeze authority or a signer authorization.","example":"So11111111111111111111111111111111111111112"},"freezeAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live freeze-operation authority. Returned only by GET token with includeFreezeAuthority=true. For Token ACL mints this is the mint-config controller rather than the mint's program PDA freeze authority.","example":"So11111111111111111111111111111111111111112"},"metadataAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Metadata authority, returned only by GET token with includeMetadataAuthority=true. Read live on-chain when the token has a mint; otherwise the stored metadata authority or stored mint authority. Null when unavailable. RPC failure returns 502 without falling back to stored authority. This read does not authorize signing or change the token.","example":"So11111111111111111111111111111111111111112"},"pauseAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live on-chain pausable authority. Returned only by GET token with includePauseAuthority=true; null when the mint has no pausable authority.","example":"So11111111111111111111111111111111111111112"}},"required":["token"],"description":"Token response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/metadata.json":{"get":{"tags":["Issuance"],"summary":"Get public token metadata JSON","operationId":"getTokenMetadataJson","description":"Public, unauthenticated endpoint serving the SDP-hosted Token-2022 / Metaplex fungible-compatible metadata JSON for a deployed token. This is the URL burned into the on-chain MetadataPointer when the issuer doesn't supply their own URI. Only deployed (on-chain) tokens are served; pending drafts return 404.","parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"}],"responses":{"200":{"description":"Token metadata JSON","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenMetadataJson"}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/supply/refresh":{"post":{"tags":["Issuance"],"summary":"Refresh cached token supply","operationId":"refreshTokenSupply","description":"Fetches the current on-chain supply and refreshes the cached totalSupply value.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Token supply refreshed","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"token":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"signingCustodyWalletId":{"type":"string","nullable":true,"minLength":1,"description":"Exact deployment wallet selected for a pending token, or historical deployment attribution after deployment. This is not the current signer for later authority operations.","example":"cwlt_example"},"mintAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint address once deployed.","example":"So11111111111111111111111111111111111111112"},"mintAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint authority address, if set.","example":"So11111111111111111111111111111111111111112"},"freezeAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Freeze authority address, if set.","example":"So11111111111111111111111111111111111111112"},"ablListAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain allowlist/blocklist address, if enabled.","example":"So11111111111111111111111111111111111111112"},"name":{"type":"string","description":"Token name.","example":"Example Token"},"symbol":{"type":"string","description":"Token symbol.","example":"EXM"},"decimals":{"type":"integer","description":"Token decimals.","example":9},"description":{"type":"string","nullable":true,"description":"Token description.","example":"Example token description."},"uri":{"type":"string","nullable":true,"description":"Metadata URI passed to on-chain token metadata (points to off-chain JSON).","example":"https://example.com/metadata.json"},"imageUrl":{"type":"string","nullable":true,"description":"Token image URL.","example":"https://example.com/token.png"},"template":{"type":"string","enum":["stablecoin","arcade","tokenized-security","custom","rwa"],"description":"Token template identifier.","example":"stablecoin"},"extensions":{"type":"object","nullable":true,"properties":{"transferFee":{"type":"object","properties":{"basisPoints":{"type":"integer","minimum":0,"maximum":10000,"description":"Transfer fee in basis points (0-10000).","example":25},"maxFee":{"type":"string","description":"Maximum fee in UI units.","example":"0.5"},"transferFeeConfigAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority to configure transfer fees.","example":"So11111111111111111111111111111111111111112"},"withdrawWithheldAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority to withdraw withheld fees.","example":"So11111111111111111111111111111111111111112"}},"required":["basisPoints","maxFee","transferFeeConfigAuthority","withdrawWithheldAuthority"],"description":"Transfer fee configuration."},"interestBearing":{"type":"object","properties":{"rate":{"type":"number","description":"Interest rate in percent.","example":2.5},"rateAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update the rate.","example":"So11111111111111111111111111111111111111112"}},"required":["rate","rateAuthority"],"description":"Interest-bearing configuration."},"permanentDelegate":{"type":"string","minLength":32,"maxLength":44,"description":"Permanent delegate address.","example":"So11111111111111111111111111111111111111112"},"pausable":{"type":"object","properties":{"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can pause/resume transfers.","example":"So11111111111111111111111111111111111111112"}},"description":"Pausable configuration."},"nonTransferable":{"type":"boolean","description":"Mark token as non-transferable.","example":false},"defaultAccountState":{"type":"string","enum":["initialized","frozen"],"description":"Default account state.","example":"initialized"},"scaledUiAmount":{"type":"object","properties":{"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update scaled UI parameters.","example":"So11111111111111111111111111111111111111112"},"multiplier":{"type":"number","description":"Current UI multiplier.","example":1},"newMultiplier":{"type":"number","description":"Scheduled multiplier.","example":2},"newMultiplierEffectiveTimestamp":{"type":"integer","description":"Unix timestamp (seconds) when the new multiplier takes effect.","example":1735689600}},"required":["multiplier","newMultiplier","newMultiplierEffectiveTimestamp"],"description":"Scaled UI amount configuration."},"transferHook":{"type":"object","properties":{"programId":{"type":"string","minLength":32,"maxLength":44,"description":"Transfer hook program id.","example":"So11111111111111111111111111111111111111112"},"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update the transfer hook program.","example":"So11111111111111111111111111111111111111112"}},"required":["programId"],"description":"Transfer hook configuration."}},"additionalProperties":false,"description":"Token-2022 extensions configuration."},"totalSupply":{"type":"string","description":"Cached total supply in UI units (stored to avoid frequent RPC reads). Use POST /v1/issuance/tokens/{tokenId}/supply/refresh to force an on-chain refresh.","example":"1000000"},"totalSupplyUpdatedAt":{"type":"string","nullable":true,"format":"date-time","description":"Timestamp when supply was last refreshed.","example":null},"maxSupply":{"type":"string","nullable":true,"description":"Maximum supply in UI units, if capped.","example":"10000000"},"isMintable":{"type":"boolean","description":"Whether additional minting is allowed.","example":true},"isFreezable":{"type":"boolean","description":"Whether freeze authority is enabled.","example":true},"requiresAllowlist":{"type":"boolean","description":"Whether transfers require allowlist approval.","example":false},"status":{"type":"string","enum":["pending","active","paused","revoked"],"description":"Token lifecycle status.","example":"active"},"deployedAt":{"type":"string","nullable":true,"format":"date-time","description":"Deployment timestamp, if deployed.","example":"2025-01-05T00:00:00.000Z"},"createdBy":{"type":"string","description":"Actor identifier that created the token.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","projectId","organizationId","signingCustodyWalletId","mintAddress","mintAuthority","freezeAuthority","ablListAddress","name","symbol","decimals","description","uri","imageUrl","template","extensions","totalSupply","totalSupplyUpdatedAt","maxSupply","isMintable","isFreezable","requiresAllowlist","status","deployedAt","createdBy","createdAt","updatedAt"],"description":"Token details."},"allowlistAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live on-chain list authority. Returned only by GET token with includeAllowlistAuthority=true; null when no on-chain list is configured. This is not the token freeze authority or a signer authorization.","example":"So11111111111111111111111111111111111111112"},"freezeAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live freeze-operation authority. Returned only by GET token with includeFreezeAuthority=true. For Token ACL mints this is the mint-config controller rather than the mint's program PDA freeze authority.","example":"So11111111111111111111111111111111111111112"},"metadataAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Metadata authority, returned only by GET token with includeMetadataAuthority=true. Read live on-chain when the token has a mint; otherwise the stored metadata authority or stored mint authority. Null when unavailable. RPC failure returns 502 without falling back to stored authority. This read does not authorize signing or change the token.","example":"So11111111111111111111111111111111111111112"},"pauseAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live on-chain pausable authority. Returned only by GET token with includePauseAuthority=true; null when the mint has no pausable authority.","example":"So11111111111111111111111111111111111111112"}},"required":["token"],"description":"Token response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"502":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/transactions":{"get":{"tags":["Issuance"],"summary":"List token transactions","operationId":"listTokenTransactions","description":"Lists token transactions for an issued token.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"],"description":"Filter by token transaction type.","example":"burn"},"required":false,"description":"Filter by token transaction type.","name":"type","in":"query"},{"schema":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"],"description":"Filter by token transaction status.","example":"confirmed"},"required":false,"description":"Filter by token transaction status.","name":"status","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Page number (1-based).","example":1},"required":false,"description":"Page number (1-based).","name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Number of items per page.","example":50},"required":false,"description":"Number of items per page.","name":"pageSize","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Token transactions","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token transaction identifier.","example":"ttx_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"type":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"],"description":"Transaction type.","example":"mint"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"],"description":"Transaction status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature.","example":"sig_example"},"idempotencyKey":{"type":"string","description":"Idempotency key used for this request.","example":"idem_example_12345"},"idempotencyFingerprint":{"type":"string","description":"Request fingerprint used to validate idempotent retries.","example":"4f2d9c7a5e6f1c..."},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"AQID"},"params":{"type":"object","additionalProperties":{"nullable":true},"description":"Operation parameters captured for audit."},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedByKeyId":{"type":"string","nullable":true,"minLength":1,"description":"API key that initiated the transaction.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","tokenId","organizationId","type","status","signature","serializedTx","params","slot","blockTime","fee","error","initiatedByKeyId","createdAt","updatedAt"],"description":"Token transaction record."}},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"description":"Total items."},"page":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Current page number."},"pageSize":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Items per page."},"hasMore":{"type":"boolean","description":"Whether more pages exist."},"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}},"required":["total","page","pageSize","hasMore","requestId"],"description":"Pagination metadata."}},"required":["data","meta"],"description":"Standard paginated response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/audit":{"get":{"tags":["Issuance"],"summary":"Get asset audit history","operationId":"getAssetAuditHistory","description":"Returns the aggregated audit history for an issued token: events logged against the token and its child resources (transactions, allowlist entries, frozen accounts), newest first. Supports filtering by action type.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","description":"Filter by audit action."},"required":false,"description":"Filter by audit action.","name":"action","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Page number (1-based).","example":1},"required":false,"description":"Page number (1-based).","name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Number of items per page.","example":50},"required":false,"description":"Number of items per page.","name":"pageSize","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Asset audit history","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"action":{"type":"string","example":"freeze"},"resourceType":{"type":"string","example":"frozen_account"},"resourceId":{"type":"string","nullable":true},"actorType":{"type":"string","enum":["user","api_key","system"],"example":"user"},"actorLabel":{"type":"string","example":"Jordan Lee"},"status":{"type":"string","enum":["success","failure"],"example":"success"},"createdAt":{"type":"string","example":"2026-07-19T12:00:00.000Z"},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}}},"required":["id","action","resourceType","resourceId","actorType","actorLabel","status","createdAt","metadata"],"description":"A single audit event scoped to an asset."}},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"description":"Total items."},"page":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Current page number."},"pageSize":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Items per page."},"hasMore":{"type":"boolean","description":"Whether more pages exist."},"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}},"required":["total","page","pageSize","hasMore","requestId"],"description":"Pagination metadata."}},"required":["data","meta"],"description":"Standard paginated response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/deploy":{"post":{"tags":["Issuance"],"summary":"Deploy token","operationId":"deployToken","description":"Deploys the token to Solana using custody signing.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"},{"schema":{"type":"string","pattern":"^[\\x20-\\x7e]{1,255}$","description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","example":"idempotency_example_12345"},"required":false,"description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID. Overrides the wallet selected on the pending draft for this direct deployment.","example":"cwlt_example"},"authorityCustodyWalletIds":{"type":"object","properties":{"metadata":{"type":"string","minLength":1},"freeze":{"type":"string","minLength":1},"permanentDelegate":{"type":"string","minLength":1}},"additionalProperties":false,"description":"Optional exact SDP Wallet IDs for initial metadata, freeze, and permanent-delegate authorities. Omitted roles retain their template defaults. The deployment wallet holds mint authority. Freeze and permanentDelegate require the corresponding token capability. Each selected wallet must be in scope with tokens:write permission; the metadata wallet signs any metadata URI follow-up.","example":{"metadata":"cwlt_metadata","freeze":"cwlt_freeze","permanentDelegate":"cwlt_recovery"}},"feePayment":{"type":"string","enum":["sponsored","wallet"],"default":"sponsored","description":"How the deployment transaction fee is paid.","example":"sponsored"}},"additionalProperties":false,"description":"Direct token deployment request body."}}}},"responses":{"200":{"description":"Token deployed","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"token":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"signingCustodyWalletId":{"type":"string","nullable":true,"minLength":1,"description":"Exact deployment wallet selected for a pending token, or historical deployment attribution after deployment. This is not the current signer for later authority operations.","example":"cwlt_example"},"mintAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint address once deployed.","example":"So11111111111111111111111111111111111111112"},"mintAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint authority address, if set.","example":"So11111111111111111111111111111111111111112"},"freezeAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Freeze authority address, if set.","example":"So11111111111111111111111111111111111111112"},"ablListAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain allowlist/blocklist address, if enabled.","example":"So11111111111111111111111111111111111111112"},"name":{"type":"string","description":"Token name.","example":"Example Token"},"symbol":{"type":"string","description":"Token symbol.","example":"EXM"},"decimals":{"type":"integer","description":"Token decimals.","example":9},"description":{"type":"string","nullable":true,"description":"Token description.","example":"Example token description."},"uri":{"type":"string","nullable":true,"description":"Metadata URI passed to on-chain token metadata (points to off-chain JSON).","example":"https://example.com/metadata.json"},"imageUrl":{"type":"string","nullable":true,"description":"Token image URL.","example":"https://example.com/token.png"},"template":{"type":"string","enum":["stablecoin","arcade","tokenized-security","custom","rwa"],"description":"Token template identifier.","example":"stablecoin"},"extensions":{"type":"object","nullable":true,"properties":{"transferFee":{"type":"object","properties":{"basisPoints":{"type":"integer","minimum":0,"maximum":10000,"description":"Transfer fee in basis points (0-10000).","example":25},"maxFee":{"type":"string","description":"Maximum fee in UI units.","example":"0.5"},"transferFeeConfigAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority to configure transfer fees.","example":"So11111111111111111111111111111111111111112"},"withdrawWithheldAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority to withdraw withheld fees.","example":"So11111111111111111111111111111111111111112"}},"required":["basisPoints","maxFee","transferFeeConfigAuthority","withdrawWithheldAuthority"],"description":"Transfer fee configuration."},"interestBearing":{"type":"object","properties":{"rate":{"type":"number","description":"Interest rate in percent.","example":2.5},"rateAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update the rate.","example":"So11111111111111111111111111111111111111112"}},"required":["rate","rateAuthority"],"description":"Interest-bearing configuration."},"permanentDelegate":{"type":"string","minLength":32,"maxLength":44,"description":"Permanent delegate address.","example":"So11111111111111111111111111111111111111112"},"pausable":{"type":"object","properties":{"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can pause/resume transfers.","example":"So11111111111111111111111111111111111111112"}},"description":"Pausable configuration."},"nonTransferable":{"type":"boolean","description":"Mark token as non-transferable.","example":false},"defaultAccountState":{"type":"string","enum":["initialized","frozen"],"description":"Default account state.","example":"initialized"},"scaledUiAmount":{"type":"object","properties":{"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update scaled UI parameters.","example":"So11111111111111111111111111111111111111112"},"multiplier":{"type":"number","description":"Current UI multiplier.","example":1},"newMultiplier":{"type":"number","description":"Scheduled multiplier.","example":2},"newMultiplierEffectiveTimestamp":{"type":"integer","description":"Unix timestamp (seconds) when the new multiplier takes effect.","example":1735689600}},"required":["multiplier","newMultiplier","newMultiplierEffectiveTimestamp"],"description":"Scaled UI amount configuration."},"transferHook":{"type":"object","properties":{"programId":{"type":"string","minLength":32,"maxLength":44,"description":"Transfer hook program id.","example":"So11111111111111111111111111111111111111112"},"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update the transfer hook program.","example":"So11111111111111111111111111111111111111112"}},"required":["programId"],"description":"Transfer hook configuration."}},"additionalProperties":false,"description":"Token-2022 extensions configuration."},"totalSupply":{"type":"string","description":"Cached total supply in UI units (stored to avoid frequent RPC reads). Use POST /v1/issuance/tokens/{tokenId}/supply/refresh to force an on-chain refresh.","example":"1000000"},"totalSupplyUpdatedAt":{"type":"string","nullable":true,"format":"date-time","description":"Timestamp when supply was last refreshed.","example":null},"maxSupply":{"type":"string","nullable":true,"description":"Maximum supply in UI units, if capped.","example":"10000000"},"isMintable":{"type":"boolean","description":"Whether additional minting is allowed.","example":true},"isFreezable":{"type":"boolean","description":"Whether freeze authority is enabled.","example":true},"requiresAllowlist":{"type":"boolean","description":"Whether transfers require allowlist approval.","example":false},"status":{"type":"string","enum":["pending","active","paused","revoked"],"description":"Token lifecycle status.","example":"active"},"deployedAt":{"type":"string","nullable":true,"format":"date-time","description":"Deployment timestamp, if deployed.","example":"2025-01-05T00:00:00.000Z"},"createdBy":{"type":"string","description":"Actor identifier that created the token.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","projectId","organizationId","signingCustodyWalletId","mintAddress","mintAuthority","freezeAuthority","ablListAddress","name","symbol","decimals","description","uri","imageUrl","template","extensions","totalSupply","totalSupplyUpdatedAt","maxSupply","isMintable","isFreezable","requiresAllowlist","status","deployedAt","createdBy","createdAt","updatedAt"],"description":"Token details."},"allowlistAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live on-chain list authority. Returned only by GET token with includeAllowlistAuthority=true; null when no on-chain list is configured. This is not the token freeze authority or a signer authorization.","example":"So11111111111111111111111111111111111111112"},"freezeAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live freeze-operation authority. Returned only by GET token with includeFreezeAuthority=true. For Token ACL mints this is the mint-config controller rather than the mint's program PDA freeze authority.","example":"So11111111111111111111111111111111111111112"},"metadataAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Metadata authority, returned only by GET token with includeMetadataAuthority=true. Read live on-chain when the token has a mint; otherwise the stored metadata authority or stored mint authority. Null when unavailable. RPC failure returns 502 without falling back to stored authority. This read does not authorize signing or change the token.","example":"So11111111111111111111111111111111111111112"},"pauseAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live on-chain pausable authority. Returned only by GET token with includePauseAuthority=true; null when the mint has no pausable authority.","example":"So11111111111111111111111111111111111111112"}},"required":["token"],"description":"Token response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"502":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/deploy/prepare":{"post":{"tags":["Issuance"],"summary":"Prepare token deploy transaction","operationId":"prepareDeployToken","description":"Builds an unsigned deploy transaction for client-side signing. A signing wallet is required: the body's `signingWalletId`, else the token's `signingWalletId`, else the API key's preferred or sole wallet binding. The request is rejected with 400 when none resolves, or when the key has several bindings and no preferred one. The resolved wallet is pinned on the token for deploy/confirm and prepare-metadata.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Prepared deploy transaction","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transaction":{"type":"object","properties":{"serialized":{"type":"string","minLength":1,"description":"Base64-encoded unsigned transaction.","example":"AQID"},"blockhash":{"type":"string","description":"Blockhash for the transaction.","example":"blockhash_example"},"lastValidBlockHeight":{"type":"string","description":"Last valid block height.","example":"123456"}},"required":["serialized","blockhash","lastValidBlockHeight"],"description":"Prepared transaction for deploying the token."},"mint":{"type":"string","minLength":32,"maxLength":44,"description":"Mint address that will be created.","example":"So11111111111111111111111111111111111111112"},"listAddress":{"type":"string","minLength":32,"maxLength":44,"description":"On-chain ABL list-config address, present only for allowlist/blocklist tokens with on-chain access control enabled.","example":"So11111111111111111111111111111111111111112"},"metadataUriFollowUp":{"type":"object","properties":{"required":{"type":"boolean","enum":[true]},"uri":{"type":"string","format":"uri"}},"required":["required","uri"],"description":"Present when the inline metadata URI overflowed the create transaction's packet limit. The create tx was prepared with an empty URI; after confirming the deploy, the client must call POST /deploy/prepare-metadata and submit the returned follow-up transaction to set this URI on-chain."},"simulation":{"type":"object","properties":{"success":{"type":"boolean","description":"Simulation success flag.","example":true},"logs":{"type":"array","items":{"type":"string"},"description":"Simulation logs, if any.","example":["Program log: success"]},"unitsConsumed":{"anyOf":[{"type":"number"},{"type":"string"},{"nullable":true}],"description":"Compute units consumed.","example":20000},"error":{"type":"string","nullable":true,"description":"Simulation error, if any.","example":"Insufficient funds"}},"required":["success","logs","unitsConsumed","error"],"description":"Optional transaction simulation results."}},"required":["transaction","mint"],"description":"Prepare deploy response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"502":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/deploy/confirm":{"post":{"tags":["Issuance"],"summary":"Confirm non-custodial deploy","operationId":"confirmDeploy","description":"Records the mint after the client signs and submits a prepared (non-custodial) deploy transaction. Verifies the transaction landed on-chain, then marks the token deployed.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signature":{"type":"string","description":"Signature of the confirmed create transaction the client submitted.","example":"5x...signature"},"mint":{"type":"string","description":"Mint address returned by deploy/prepare and created by the submitted tx.","example":"So11111111111111111111111111111111111111112"},"listAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Accepted for backward compatibility but ignored: the server re-derives the ABL list-config PDA deterministically from the mint authority and mint.","example":"So11111111111111111111111111111111111111112"},"signingWalletId":{"type":"string","minLength":1,"description":"Accepted for backward compatibility but ignored: the server uses the signing wallet pinned during deploy/prepare (or resolved from the API key), so the authority can't be changed at confirm time.","example":"privy_wallet_123"}},"required":["signature","mint"],"description":"Confirm non-custodial deploy request body."}}}},"responses":{"200":{"description":"Token deployed","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"token":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"signingCustodyWalletId":{"type":"string","nullable":true,"minLength":1,"description":"Exact deployment wallet selected for a pending token, or historical deployment attribution after deployment. This is not the current signer for later authority operations.","example":"cwlt_example"},"mintAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint address once deployed.","example":"So11111111111111111111111111111111111111112"},"mintAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint authority address, if set.","example":"So11111111111111111111111111111111111111112"},"freezeAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Freeze authority address, if set.","example":"So11111111111111111111111111111111111111112"},"ablListAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain allowlist/blocklist address, if enabled.","example":"So11111111111111111111111111111111111111112"},"name":{"type":"string","description":"Token name.","example":"Example Token"},"symbol":{"type":"string","description":"Token symbol.","example":"EXM"},"decimals":{"type":"integer","description":"Token decimals.","example":9},"description":{"type":"string","nullable":true,"description":"Token description.","example":"Example token description."},"uri":{"type":"string","nullable":true,"description":"Metadata URI passed to on-chain token metadata (points to off-chain JSON).","example":"https://example.com/metadata.json"},"imageUrl":{"type":"string","nullable":true,"description":"Token image URL.","example":"https://example.com/token.png"},"template":{"type":"string","enum":["stablecoin","arcade","tokenized-security","custom","rwa"],"description":"Token template identifier.","example":"stablecoin"},"extensions":{"type":"object","nullable":true,"properties":{"transferFee":{"type":"object","properties":{"basisPoints":{"type":"integer","minimum":0,"maximum":10000,"description":"Transfer fee in basis points (0-10000).","example":25},"maxFee":{"type":"string","description":"Maximum fee in UI units.","example":"0.5"},"transferFeeConfigAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority to configure transfer fees.","example":"So11111111111111111111111111111111111111112"},"withdrawWithheldAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority to withdraw withheld fees.","example":"So11111111111111111111111111111111111111112"}},"required":["basisPoints","maxFee","transferFeeConfigAuthority","withdrawWithheldAuthority"],"description":"Transfer fee configuration."},"interestBearing":{"type":"object","properties":{"rate":{"type":"number","description":"Interest rate in percent.","example":2.5},"rateAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update the rate.","example":"So11111111111111111111111111111111111111112"}},"required":["rate","rateAuthority"],"description":"Interest-bearing configuration."},"permanentDelegate":{"type":"string","minLength":32,"maxLength":44,"description":"Permanent delegate address.","example":"So11111111111111111111111111111111111111112"},"pausable":{"type":"object","properties":{"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can pause/resume transfers.","example":"So11111111111111111111111111111111111111112"}},"description":"Pausable configuration."},"nonTransferable":{"type":"boolean","description":"Mark token as non-transferable.","example":false},"defaultAccountState":{"type":"string","enum":["initialized","frozen"],"description":"Default account state.","example":"initialized"},"scaledUiAmount":{"type":"object","properties":{"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update scaled UI parameters.","example":"So11111111111111111111111111111111111111112"},"multiplier":{"type":"number","description":"Current UI multiplier.","example":1},"newMultiplier":{"type":"number","description":"Scheduled multiplier.","example":2},"newMultiplierEffectiveTimestamp":{"type":"integer","description":"Unix timestamp (seconds) when the new multiplier takes effect.","example":1735689600}},"required":["multiplier","newMultiplier","newMultiplierEffectiveTimestamp"],"description":"Scaled UI amount configuration."},"transferHook":{"type":"object","properties":{"programId":{"type":"string","minLength":32,"maxLength":44,"description":"Transfer hook program id.","example":"So11111111111111111111111111111111111111112"},"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update the transfer hook program.","example":"So11111111111111111111111111111111111111112"}},"required":["programId"],"description":"Transfer hook configuration."}},"additionalProperties":false,"description":"Token-2022 extensions configuration."},"totalSupply":{"type":"string","description":"Cached total supply in UI units (stored to avoid frequent RPC reads). Use POST /v1/issuance/tokens/{tokenId}/supply/refresh to force an on-chain refresh.","example":"1000000"},"totalSupplyUpdatedAt":{"type":"string","nullable":true,"format":"date-time","description":"Timestamp when supply was last refreshed.","example":null},"maxSupply":{"type":"string","nullable":true,"description":"Maximum supply in UI units, if capped.","example":"10000000"},"isMintable":{"type":"boolean","description":"Whether additional minting is allowed.","example":true},"isFreezable":{"type":"boolean","description":"Whether freeze authority is enabled.","example":true},"requiresAllowlist":{"type":"boolean","description":"Whether transfers require allowlist approval.","example":false},"status":{"type":"string","enum":["pending","active","paused","revoked"],"description":"Token lifecycle status.","example":"active"},"deployedAt":{"type":"string","nullable":true,"format":"date-time","description":"Deployment timestamp, if deployed.","example":"2025-01-05T00:00:00.000Z"},"createdBy":{"type":"string","description":"Actor identifier that created the token.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","projectId","organizationId","signingCustodyWalletId","mintAddress","mintAuthority","freezeAuthority","ablListAddress","name","symbol","decimals","description","uri","imageUrl","template","extensions","totalSupply","totalSupplyUpdatedAt","maxSupply","isMintable","isFreezable","requiresAllowlist","status","deployedAt","createdBy","createdAt","updatedAt"],"description":"Token details."},"allowlistAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live on-chain list authority. Returned only by GET token with includeAllowlistAuthority=true; null when no on-chain list is configured. This is not the token freeze authority or a signer authorization.","example":"So11111111111111111111111111111111111111112"},"freezeAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live freeze-operation authority. Returned only by GET token with includeFreezeAuthority=true. For Token ACL mints this is the mint-config controller rather than the mint's program PDA freeze authority.","example":"So11111111111111111111111111111111111111112"},"metadataAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Metadata authority, returned only by GET token with includeMetadataAuthority=true. Read live on-chain when the token has a mint; otherwise the stored metadata authority or stored mint authority. Null when unavailable. RPC failure returns 502 without falling back to stored authority. This read does not authorize signing or change the token.","example":"So11111111111111111111111111111111111111112"},"pauseAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Live on-chain pausable authority. Returned only by GET token with includePauseAuthority=true; null when the mint has no pausable authority.","example":"So11111111111111111111111111111111111111112"}},"required":["token"],"description":"Token response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"502":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/deploy/prepare-metadata":{"post":{"tags":["Issuance"],"summary":"Prepare metadata-URI follow-up transaction","operationId":"prepareDeployMetadata","description":"Follow-up step for the non-custodial deploy flow. When prepareDeploy returns `metadataUriFollowUp.required` (the inline URI overflowed the create transaction), the client calls this after deploy/confirm to fetch an unsigned transaction that sets the metadata URI on-chain. Signs with the wallet pinned on the token at deploy/prepare (a body `signingWalletId` is ignored), else the API key's preferred or sole wallet binding; the request is rejected with 400 when none resolves. Returns a null transaction when the on-chain URI already matches.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Prepared metadata-URI follow-up transaction (or no-op)","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transaction":{"type":"object","nullable":true,"properties":{"serialized":{"type":"string","minLength":1,"description":"Base64-encoded unsigned transaction.","example":"AQID"},"blockhash":{"type":"string","description":"Blockhash for the transaction.","example":"blockhash_example"},"lastValidBlockHeight":{"type":"string","description":"Last valid block height.","example":"123456"}},"required":["serialized","blockhash","lastValidBlockHeight"],"description":"Prepared metadata-URI update transaction for client signing, or null when the on-chain URI already matches (nothing to sign)."},"uri":{"type":"string","format":"uri","description":"The metadata URI the follow-up transaction sets on-chain.","example":"https://api.example.com/v1/issuance/tokens/tok_123/metadata.json"},"simulation":{"type":"object","properties":{"success":{"type":"boolean","description":"Simulation success flag.","example":true},"logs":{"type":"array","items":{"type":"string"},"description":"Simulation logs, if any.","example":["Program log: success"]},"unitsConsumed":{"anyOf":[{"type":"number"},{"type":"string"},{"nullable":true}],"description":"Compute units consumed.","example":20000},"error":{"type":"string","nullable":true,"description":"Simulation error, if any.","example":"Insufficient funds"}},"required":["success","logs","unitsConsumed","error"],"description":"Optional transaction simulation results."}},"required":["transaction","uri"],"description":"Prepare deploy-metadata follow-up response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"502":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/mint/prepare":{"post":{"tags":["Issuance"],"summary":"Prepare mint transaction","operationId":"prepareMint","description":"Builds an unsigned mint transaction for client-side signing. The authority wallet is the fee payer: it signs the transaction and pays the network fee and the rent for a new destination token account; SDP does not sponsor prepared transactions.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID. When supplied, it must control the current mint authority.","example":"cwlt_example"},"mint":{"type":"object","properties":{"destination":{"type":"string","minLength":32,"maxLength":44,"description":"Destination wallet address to receive minted tokens.","example":"So11111111111111111111111111111111111111112"},"amount":{"type":"string","description":"Token amount in UI units (decimal string). Human-readable value such as \"1\" or \"1.5\". SDP converts to on-chain base units using the token's decimals field.","example":"1000"},"memo":{"type":"string","maxLength":100,"description":"Optional on-chain memo.","example":"Payout"}},"required":["destination","amount"],"description":"Mint operation details."},"options":{"type":"object","properties":{"priorityFee":{"anyOf":[{"type":"string","enum":["none","low","medium","high"]},{"type":"integer","minimum":0}]},"simulate":{"type":"boolean"}},"description":"Mint execution options.","example":{"priorityFee":"low","simulate":true}}},"required":["mint"],"additionalProperties":false,"description":"Mint request body."}}}},"responses":{"200":{"description":"Prepared mint","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transaction":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token transaction identifier.","example":"ttx_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"type":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"],"description":"Transaction type.","example":"mint"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"],"description":"Transaction status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature.","example":"sig_example"},"idempotencyKey":{"type":"string","description":"Idempotency key used for this request.","example":"idem_example_12345"},"idempotencyFingerprint":{"type":"string","description":"Request fingerprint used to validate idempotent retries.","example":"4f2d9c7a5e6f1c..."},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"AQID"},"params":{"type":"object","additionalProperties":{"nullable":true},"description":"Operation parameters captured for audit."},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedByKeyId":{"type":"string","nullable":true,"minLength":1,"description":"API key that initiated the transaction.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","tokenId","organizationId","type","status","signature","serializedTx","params","slot","blockTime","fee","error","initiatedByKeyId","createdAt","updatedAt"],"description":"Mint transaction record."},"preparedTransaction":{"type":"object","properties":{"serialized":{"type":"string","minLength":1,"description":"Base64-encoded unsigned transaction.","example":"AQID"},"blockhash":{"type":"string","description":"Blockhash for the transaction.","example":"blockhash_example"},"lastValidBlockHeight":{"type":"string","description":"Last valid block height.","example":"123456"}},"required":["serialized","blockhash","lastValidBlockHeight"],"description":"Prepared transaction for minting."},"tokenAccount":{"type":"string","minLength":32,"maxLength":44,"description":"Destination token account address.","example":"So11111111111111111111111111111111111111112"},"simulation":{"type":"object","properties":{"success":{"type":"boolean","description":"Simulation success flag.","example":true},"logs":{"type":"array","items":{"type":"string"},"description":"Simulation logs, if any.","example":["Program log: success"]},"unitsConsumed":{"anyOf":[{"type":"number"},{"type":"string"},{"nullable":true}],"description":"Compute units consumed.","example":20000},"error":{"type":"string","nullable":true,"description":"Simulation error, if any.","example":"Insufficient funds"}},"required":["success","logs","unitsConsumed","error"],"description":"Optional transaction simulation results."}},"required":["transaction","preparedTransaction","tokenAccount"],"description":"Prepare mint response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/mint":{"post":{"tags":["Issuance"],"summary":"Execute mint","operationId":"executeMint","description":"Mints tokens using custody signing and submission.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"},{"schema":{"type":"string","pattern":"^[\\x20-\\x7e]{1,255}$","description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","example":"idempotency_example_12345"},"required":false,"description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID. When supplied, it must control the current mint authority.","example":"cwlt_example"},"mint":{"type":"object","properties":{"destination":{"type":"string","minLength":32,"maxLength":44,"description":"Destination wallet address to receive minted tokens.","example":"So11111111111111111111111111111111111111112"},"amount":{"type":"string","description":"Token amount in UI units (decimal string). Human-readable value such as \"1\" or \"1.5\". SDP converts to on-chain base units using the token's decimals field.","example":"1000"},"memo":{"type":"string","maxLength":100,"description":"Optional on-chain memo.","example":"Payout"}},"required":["destination","amount"],"description":"Mint operation details."},"options":{"type":"object","properties":{"priorityFee":{"anyOf":[{"type":"string","enum":["none","low","medium","high"]},{"type":"integer","minimum":0}]},"simulate":{"type":"boolean"}},"description":"Mint execution options.","example":{"priorityFee":"low","simulate":true}}},"required":["mint"],"additionalProperties":false,"description":"Mint request body."}}}},"responses":{"200":{"description":"Mint executed","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transaction":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token transaction identifier.","example":"ttx_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"type":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"],"description":"Transaction type.","example":"mint"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"],"description":"Transaction status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature.","example":"sig_example"},"idempotencyKey":{"type":"string","description":"Idempotency key used for this request.","example":"idem_example_12345"},"idempotencyFingerprint":{"type":"string","description":"Request fingerprint used to validate idempotent retries.","example":"4f2d9c7a5e6f1c..."},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"AQID"},"params":{"type":"object","additionalProperties":{"nullable":true},"description":"Operation parameters captured for audit."},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedByKeyId":{"type":"string","nullable":true,"minLength":1,"description":"API key that initiated the transaction.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","tokenId","organizationId","type","status","signature","serializedTx","params","slot","blockTime","fee","error","initiatedByKeyId","createdAt","updatedAt"],"description":"Mint transaction record."},"tokenAccount":{"type":"string","minLength":32,"maxLength":44,"description":"Destination token account address.","example":"So11111111111111111111111111111111111111112"}},"required":["transaction","tokenAccount"],"description":"Execute mint response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/burn/prepare":{"post":{"tags":["Issuance"],"summary":"Prepare burn transaction","operationId":"prepareBurn","description":"Builds an unsigned burn transaction for client-side signing. The authority wallet is the fee payer: it signs the transaction and pays the network fee; SDP does not sponsor prepared transactions.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Exact SDP Wallet ID that owns the source tokens and signs this burn.","example":"cwlt_example"},"burn":{"type":"object","properties":{"source":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet or token account to burn from.","example":"So11111111111111111111111111111111111111112"},"amount":{"type":"string","description":"Token amount in UI units (decimal string). Human-readable value such as \"1\" or \"1.5\". SDP converts to on-chain base units using the token's decimals field.","example":"1000"},"memo":{"type":"string","maxLength":100,"description":"Optional on-chain memo.","example":"Correction"}},"required":["source","amount"],"description":"Burn operation details."},"options":{"type":"object","properties":{"priorityFee":{"anyOf":[{"type":"string","enum":["none","low","medium","high"]},{"type":"integer","minimum":0}]},"simulate":{"type":"boolean"}},"description":"Burn execution options.","example":{"priorityFee":"low","simulate":true}}},"required":["signingCustodyWalletId","burn"],"additionalProperties":false,"description":"Burn request body."}}}},"responses":{"200":{"description":"Prepared burn","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transaction":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token transaction identifier.","example":"ttx_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"type":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"],"description":"Transaction type.","example":"mint"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"],"description":"Transaction status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature.","example":"sig_example"},"idempotencyKey":{"type":"string","description":"Idempotency key used for this request.","example":"idem_example_12345"},"idempotencyFingerprint":{"type":"string","description":"Request fingerprint used to validate idempotent retries.","example":"4f2d9c7a5e6f1c..."},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"AQID"},"params":{"type":"object","additionalProperties":{"nullable":true},"description":"Operation parameters captured for audit."},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedByKeyId":{"type":"string","nullable":true,"minLength":1,"description":"API key that initiated the transaction.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","tokenId","organizationId","type","status","signature","serializedTx","params","slot","blockTime","fee","error","initiatedByKeyId","createdAt","updatedAt"],"description":"Burn transaction record."},"preparedTransaction":{"type":"object","properties":{"serialized":{"type":"string","minLength":1,"description":"Base64-encoded unsigned transaction.","example":"AQID"},"blockhash":{"type":"string","description":"Blockhash for the transaction.","example":"blockhash_example"},"lastValidBlockHeight":{"type":"string","description":"Last valid block height.","example":"123456"}},"required":["serialized","blockhash","lastValidBlockHeight"],"description":"Prepared transaction for burning."},"simulation":{"type":"object","properties":{"success":{"type":"boolean","description":"Simulation success flag.","example":true},"logs":{"type":"array","items":{"type":"string"},"description":"Simulation logs, if any.","example":["Program log: success"]},"unitsConsumed":{"anyOf":[{"type":"number"},{"type":"string"},{"nullable":true}],"description":"Compute units consumed.","example":20000},"error":{"type":"string","nullable":true,"description":"Simulation error, if any.","example":"Insufficient funds"}},"required":["success","logs","unitsConsumed","error"],"description":"Optional transaction simulation results."}},"required":["transaction","preparedTransaction"],"description":"Prepare burn response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/burn":{"post":{"tags":["Issuance"],"summary":"Execute burn","operationId":"executeBurn","description":"Burns tokens using custody signing and submission.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"},{"schema":{"type":"string","pattern":"^[\\x20-\\x7e]{1,255}$","description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","example":"idempotency_example_12345"},"required":false,"description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Exact SDP Wallet ID that owns the source tokens and signs this burn.","example":"cwlt_example"},"burn":{"type":"object","properties":{"source":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet or token account to burn from.","example":"So11111111111111111111111111111111111111112"},"amount":{"type":"string","description":"Token amount in UI units (decimal string). Human-readable value such as \"1\" or \"1.5\". SDP converts to on-chain base units using the token's decimals field.","example":"1000"},"memo":{"type":"string","maxLength":100,"description":"Optional on-chain memo.","example":"Correction"}},"required":["source","amount"],"description":"Burn operation details."},"options":{"type":"object","properties":{"priorityFee":{"anyOf":[{"type":"string","enum":["none","low","medium","high"]},{"type":"integer","minimum":0}]},"simulate":{"type":"boolean"}},"description":"Burn execution options.","example":{"priorityFee":"low","simulate":true}}},"required":["signingCustodyWalletId","burn"],"additionalProperties":false,"description":"Burn request body."}}}},"responses":{"200":{"description":"Burn executed","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transaction":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token transaction identifier.","example":"ttx_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"type":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"],"description":"Transaction type.","example":"mint"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"],"description":"Transaction status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature.","example":"sig_example"},"idempotencyKey":{"type":"string","description":"Idempotency key used for this request.","example":"idem_example_12345"},"idempotencyFingerprint":{"type":"string","description":"Request fingerprint used to validate idempotent retries.","example":"4f2d9c7a5e6f1c..."},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"AQID"},"params":{"type":"object","additionalProperties":{"nullable":true},"description":"Operation parameters captured for audit."},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedByKeyId":{"type":"string","nullable":true,"minLength":1,"description":"API key that initiated the transaction.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","tokenId","organizationId","type","status","signature","serializedTx","params","slot","blockTime","fee","error","initiatedByKeyId","createdAt","updatedAt"],"description":"Burn transaction record."}},"required":["transaction"],"description":"Execute burn response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/seize/prepare":{"post":{"tags":["Issuance"],"summary":"Prepare seize transaction","operationId":"prepareSeize","description":"Builds an unsigned force transfer transaction for client-side signing.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID. When supplied, it must control the current permanent delegate authority.","example":"cwlt_example"},"seize":{"type":"object","properties":{"source":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet or token account to seize from.","example":"So11111111111111111111111111111111111111112"},"destination":{"type":"string","minLength":32,"maxLength":44,"description":"Destination wallet or token account to receive seized tokens.","example":"So11111111111111111111111111111111111111112"},"amount":{"type":"string","description":"Token amount in UI units (decimal string). Human-readable value such as \"1\" or \"1.5\". SDP converts to on-chain base units using the token's decimals field.","example":"250"},"delegateAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Optional delegate authority address for the seizure.","example":"So11111111111111111111111111111111111111112"},"memo":{"type":"string","maxLength":100,"description":"Optional on-chain memo.","example":"Compliance seizure"}},"required":["source","destination","amount"],"description":"Forced transfer details."},"options":{"type":"object","properties":{"priorityFee":{"anyOf":[{"type":"string","enum":["none","low","medium","high"]},{"type":"integer","minimum":0}]},"simulate":{"type":"boolean"}},"description":"Seize execution options.","example":{"priorityFee":"low","simulate":true}}},"required":["seize"],"additionalProperties":false,"description":"Seize (force transfer) request body."}}}},"responses":{"200":{"description":"Prepared seize","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transaction":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token transaction identifier.","example":"ttx_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"type":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"],"description":"Transaction type.","example":"mint"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"],"description":"Transaction status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature.","example":"sig_example"},"idempotencyKey":{"type":"string","description":"Idempotency key used for this request.","example":"idem_example_12345"},"idempotencyFingerprint":{"type":"string","description":"Request fingerprint used to validate idempotent retries.","example":"4f2d9c7a5e6f1c..."},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"AQID"},"params":{"type":"object","additionalProperties":{"nullable":true},"description":"Operation parameters captured for audit."},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedByKeyId":{"type":"string","nullable":true,"minLength":1,"description":"API key that initiated the transaction.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","tokenId","organizationId","type","status","signature","serializedTx","params","slot","blockTime","fee","error","initiatedByKeyId","createdAt","updatedAt"],"description":"Seize transaction record."},"preparedTransaction":{"type":"object","properties":{"serialized":{"type":"string","minLength":1,"description":"Base64-encoded unsigned transaction.","example":"AQID"},"blockhash":{"type":"string","description":"Blockhash for the transaction.","example":"blockhash_example"},"lastValidBlockHeight":{"type":"string","description":"Last valid block height.","example":"123456"}},"required":["serialized","blockhash","lastValidBlockHeight"],"description":"Prepared transaction for seizure."},"simulation":{"type":"object","properties":{"success":{"type":"boolean","description":"Simulation success flag.","example":true},"logs":{"type":"array","items":{"type":"string"},"description":"Simulation logs, if any.","example":["Program log: success"]},"unitsConsumed":{"anyOf":[{"type":"number"},{"type":"string"},{"nullable":true}],"description":"Compute units consumed.","example":20000},"error":{"type":"string","nullable":true,"description":"Simulation error, if any.","example":"Insufficient funds"}},"required":["success","logs","unitsConsumed","error"],"description":"Optional transaction simulation results."}},"required":["transaction","preparedTransaction"],"description":"Prepare seize response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/seize":{"post":{"tags":["Issuance"],"summary":"Execute seize","operationId":"executeSeize","description":"Forces a transfer using permanent delegate authority.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"},{"schema":{"type":"string","pattern":"^[\\x20-\\x7e]{1,255}$","description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","example":"idempotency_example_12345"},"required":false,"description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID. When supplied, it must control the current permanent delegate authority.","example":"cwlt_example"},"seize":{"type":"object","properties":{"source":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet or token account to seize from.","example":"So11111111111111111111111111111111111111112"},"destination":{"type":"string","minLength":32,"maxLength":44,"description":"Destination wallet or token account to receive seized tokens.","example":"So11111111111111111111111111111111111111112"},"amount":{"type":"string","description":"Token amount in UI units (decimal string). Human-readable value such as \"1\" or \"1.5\". SDP converts to on-chain base units using the token's decimals field.","example":"250"},"delegateAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Optional delegate authority address for the seizure.","example":"So11111111111111111111111111111111111111112"},"memo":{"type":"string","maxLength":100,"description":"Optional on-chain memo.","example":"Compliance seizure"}},"required":["source","destination","amount"],"description":"Forced transfer details."},"options":{"type":"object","properties":{"priorityFee":{"anyOf":[{"type":"string","enum":["none","low","medium","high"]},{"type":"integer","minimum":0}]},"simulate":{"type":"boolean"}},"description":"Seize execution options.","example":{"priorityFee":"low","simulate":true}}},"required":["seize"],"additionalProperties":false,"description":"Seize (force transfer) request body."}}}},"responses":{"200":{"description":"Seize executed","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transaction":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token transaction identifier.","example":"ttx_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"type":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"],"description":"Transaction type.","example":"mint"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"],"description":"Transaction status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature.","example":"sig_example"},"idempotencyKey":{"type":"string","description":"Idempotency key used for this request.","example":"idem_example_12345"},"idempotencyFingerprint":{"type":"string","description":"Request fingerprint used to validate idempotent retries.","example":"4f2d9c7a5e6f1c..."},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"AQID"},"params":{"type":"object","additionalProperties":{"nullable":true},"description":"Operation parameters captured for audit."},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedByKeyId":{"type":"string","nullable":true,"minLength":1,"description":"API key that initiated the transaction.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","tokenId","organizationId","type","status","signature","serializedTx","params","slot","blockTime","fee","error","initiatedByKeyId","createdAt","updatedAt"],"description":"Seize transaction record."}},"required":["transaction"],"description":"Execute seize response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/force-burn/prepare":{"post":{"tags":["Issuance"],"summary":"Prepare force burn transaction","operationId":"prepareForceBurn","description":"Builds an unsigned force burn transaction for client-side signing.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID. When supplied, it must control the current permanent delegate authority.","example":"cwlt_example"},"forceBurn":{"type":"object","properties":{"source":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet or token account to force-burn from.","example":"So11111111111111111111111111111111111111112"},"amount":{"type":"string","description":"Token amount in UI units (decimal string). Human-readable value such as \"1\" or \"1.5\". SDP converts to on-chain base units using the token's decimals field.","example":"250"},"delegateAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Optional delegate authority address for the force burn.","example":"So11111111111111111111111111111111111111112"},"memo":{"type":"string","maxLength":100,"description":"Optional on-chain memo.","example":"Compliance burn"}},"required":["source","amount"],"description":"Forced burn details."},"options":{"type":"object","properties":{"priorityFee":{"anyOf":[{"type":"string","enum":["none","low","medium","high"]},{"type":"integer","minimum":0}]},"simulate":{"type":"boolean"}},"description":"Force burn execution options.","example":{"priorityFee":"low","simulate":true}}},"required":["forceBurn"],"additionalProperties":false,"description":"Force burn request body."}}}},"responses":{"200":{"description":"Prepared force burn","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transaction":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token transaction identifier.","example":"ttx_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"type":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"],"description":"Transaction type.","example":"mint"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"],"description":"Transaction status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature.","example":"sig_example"},"idempotencyKey":{"type":"string","description":"Idempotency key used for this request.","example":"idem_example_12345"},"idempotencyFingerprint":{"type":"string","description":"Request fingerprint used to validate idempotent retries.","example":"4f2d9c7a5e6f1c..."},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"AQID"},"params":{"type":"object","additionalProperties":{"nullable":true},"description":"Operation parameters captured for audit."},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedByKeyId":{"type":"string","nullable":true,"minLength":1,"description":"API key that initiated the transaction.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","tokenId","organizationId","type","status","signature","serializedTx","params","slot","blockTime","fee","error","initiatedByKeyId","createdAt","updatedAt"],"description":"Force burn transaction record."},"preparedTransaction":{"type":"object","properties":{"serialized":{"type":"string","minLength":1,"description":"Base64-encoded unsigned transaction.","example":"AQID"},"blockhash":{"type":"string","description":"Blockhash for the transaction.","example":"blockhash_example"},"lastValidBlockHeight":{"type":"string","description":"Last valid block height.","example":"123456"}},"required":["serialized","blockhash","lastValidBlockHeight"],"description":"Prepared transaction for force burn."},"simulation":{"type":"object","properties":{"success":{"type":"boolean","description":"Simulation success flag.","example":true},"logs":{"type":"array","items":{"type":"string"},"description":"Simulation logs, if any.","example":["Program log: success"]},"unitsConsumed":{"anyOf":[{"type":"number"},{"type":"string"},{"nullable":true}],"description":"Compute units consumed.","example":20000},"error":{"type":"string","nullable":true,"description":"Simulation error, if any.","example":"Insufficient funds"}},"required":["success","logs","unitsConsumed","error"],"description":"Optional transaction simulation results."}},"required":["transaction","preparedTransaction"],"description":"Prepare force burn response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/force-burn":{"post":{"tags":["Issuance"],"summary":"Execute force burn","operationId":"executeForceBurn","description":"Burns tokens using permanent delegate authority.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"},{"schema":{"type":"string","pattern":"^[\\x20-\\x7e]{1,255}$","description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","example":"idempotency_example_12345"},"required":false,"description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID. When supplied, it must control the current permanent delegate authority.","example":"cwlt_example"},"forceBurn":{"type":"object","properties":{"source":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet or token account to force-burn from.","example":"So11111111111111111111111111111111111111112"},"amount":{"type":"string","description":"Token amount in UI units (decimal string). Human-readable value such as \"1\" or \"1.5\". SDP converts to on-chain base units using the token's decimals field.","example":"250"},"delegateAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Optional delegate authority address for the force burn.","example":"So11111111111111111111111111111111111111112"},"memo":{"type":"string","maxLength":100,"description":"Optional on-chain memo.","example":"Compliance burn"}},"required":["source","amount"],"description":"Forced burn details."},"options":{"type":"object","properties":{"priorityFee":{"anyOf":[{"type":"string","enum":["none","low","medium","high"]},{"type":"integer","minimum":0}]},"simulate":{"type":"boolean"}},"description":"Force burn execution options.","example":{"priorityFee":"low","simulate":true}}},"required":["forceBurn"],"additionalProperties":false,"description":"Force burn request body."}}}},"responses":{"200":{"description":"Force burn executed","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transaction":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token transaction identifier.","example":"ttx_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"type":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"],"description":"Transaction type.","example":"mint"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"],"description":"Transaction status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature.","example":"sig_example"},"idempotencyKey":{"type":"string","description":"Idempotency key used for this request.","example":"idem_example_12345"},"idempotencyFingerprint":{"type":"string","description":"Request fingerprint used to validate idempotent retries.","example":"4f2d9c7a5e6f1c..."},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"AQID"},"params":{"type":"object","additionalProperties":{"nullable":true},"description":"Operation parameters captured for audit."},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedByKeyId":{"type":"string","nullable":true,"minLength":1,"description":"API key that initiated the transaction.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","tokenId","organizationId","type","status","signature","serializedTx","params","slot","blockTime","fee","error","initiatedByKeyId","createdAt","updatedAt"],"description":"Force burn transaction record."}},"required":["transaction"],"description":"Execute force burn response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/authority/prepare":{"post":{"tags":["Issuance"],"summary":"Prepare authority update","operationId":"prepareUpdateAuthority","description":"Builds an unsigned authority update transaction for client-side signing.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID. When supplied, it must control the authority being changed.","example":"cwlt_example"},"authority":{"type":"object","properties":{"role":{"type":"string","enum":["mint","freeze","permanentDelegate","metadata"]},"currentAuthority":{"type":"string","minLength":32,"maxLength":44},"newAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44}},"required":["role","newAuthority"],"description":"Authority update details.","example":{"role":"mint","newAuthority":"So11111111111111111111111111111111111111112"}},"options":{"type":"object","properties":{"priorityFee":{"anyOf":[{"type":"string","enum":["none","low","medium","high"]},{"type":"integer","minimum":0}]},"simulate":{"type":"boolean"}},"description":"Authority update options.","example":{"priorityFee":"low","simulate":true}}},"required":["authority"],"additionalProperties":false,"description":"Update authority request body."}}}},"responses":{"200":{"description":"Prepared authority update","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transaction":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token transaction identifier.","example":"ttx_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"type":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"],"description":"Transaction type.","example":"mint"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"],"description":"Transaction status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature.","example":"sig_example"},"idempotencyKey":{"type":"string","description":"Idempotency key used for this request.","example":"idem_example_12345"},"idempotencyFingerprint":{"type":"string","description":"Request fingerprint used to validate idempotent retries.","example":"4f2d9c7a5e6f1c..."},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"AQID"},"params":{"type":"object","additionalProperties":{"nullable":true},"description":"Operation parameters captured for audit."},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedByKeyId":{"type":"string","nullable":true,"minLength":1,"description":"API key that initiated the transaction.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","tokenId","organizationId","type","status","signature","serializedTx","params","slot","blockTime","fee","error","initiatedByKeyId","createdAt","updatedAt"],"description":"Authority update transaction record."},"preparedTransaction":{"type":"object","properties":{"serialized":{"type":"string","minLength":1,"description":"Base64-encoded unsigned transaction.","example":"AQID"},"blockhash":{"type":"string","description":"Blockhash for the transaction.","example":"blockhash_example"},"lastValidBlockHeight":{"type":"string","description":"Last valid block height.","example":"123456"}},"required":["serialized","blockhash","lastValidBlockHeight"],"description":"Prepared transaction for authority update."},"simulation":{"type":"object","properties":{"success":{"type":"boolean","description":"Simulation success flag.","example":true},"logs":{"type":"array","items":{"type":"string"},"description":"Simulation logs, if any.","example":["Program log: success"]},"unitsConsumed":{"anyOf":[{"type":"number"},{"type":"string"},{"nullable":true}],"description":"Compute units consumed.","example":20000},"error":{"type":"string","nullable":true,"description":"Simulation error, if any.","example":"Insufficient funds"}},"required":["success","logs","unitsConsumed","error"],"description":"Optional transaction simulation results."}},"required":["transaction","preparedTransaction"],"description":"Prepare authority update response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/authority":{"post":{"tags":["Issuance"],"summary":"Execute authority update","operationId":"executeUpdateAuthority","description":"Updates token authorities using custody signing.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"},{"schema":{"type":"string","pattern":"^[\\x20-\\x7e]{1,255}$","description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","example":"idempotency_example_12345"},"required":false,"description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID. When supplied, it must control the authority being changed.","example":"cwlt_example"},"authority":{"type":"object","properties":{"role":{"type":"string","enum":["mint","freeze","permanentDelegate","metadata"]},"currentAuthority":{"type":"string","minLength":32,"maxLength":44},"newAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44}},"required":["role","newAuthority"],"description":"Authority update details.","example":{"role":"mint","newAuthority":"So11111111111111111111111111111111111111112"}},"options":{"type":"object","properties":{"priorityFee":{"anyOf":[{"type":"string","enum":["none","low","medium","high"]},{"type":"integer","minimum":0}]},"simulate":{"type":"boolean"}},"description":"Authority update options.","example":{"priorityFee":"low","simulate":true}}},"required":["authority"],"additionalProperties":false,"description":"Update authority request body."}}}},"responses":{"200":{"description":"Authority updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transaction":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token transaction identifier.","example":"ttx_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"type":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"],"description":"Transaction type.","example":"mint"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"],"description":"Transaction status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature.","example":"sig_example"},"idempotencyKey":{"type":"string","description":"Idempotency key used for this request.","example":"idem_example_12345"},"idempotencyFingerprint":{"type":"string","description":"Request fingerprint used to validate idempotent retries.","example":"4f2d9c7a5e6f1c..."},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"AQID"},"params":{"type":"object","additionalProperties":{"nullable":true},"description":"Operation parameters captured for audit."},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedByKeyId":{"type":"string","nullable":true,"minLength":1,"description":"API key that initiated the transaction.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","tokenId","organizationId","type","status","signature","serializedTx","params","slot","blockTime","fee","error","initiatedByKeyId","createdAt","updatedAt"],"description":"Authority update transaction record."}},"required":["transaction"],"description":"Execute authority update response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/pause":{"post":{"tags":["Issuance"],"summary":"Pause token transfers","operationId":"pauseToken","description":"Pauses transfers for a token using the pause authority.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"},{"schema":{"type":"string","pattern":"^[\\x20-\\x7e]{1,255}$","description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","example":"idempotency_example_12345"},"required":false,"description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID controlling the current pause authority. Omission requires exactly one matching in-scope custody record; multiple matches return 409. Replay must retain the original wallet.","example":"cwlt_example"},"options":{"type":"object","properties":{"priorityFee":{"anyOf":[{"type":"string","enum":["none","low","medium","high"]},{"type":"integer","minimum":0}]},"simulate":{"type":"boolean"}},"description":"Pause/unpause options.","example":{"priorityFee":"low","simulate":true}}},"description":"Pause token request body."}}}},"responses":{"200":{"description":"Token paused","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transaction":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token transaction identifier.","example":"ttx_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"type":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"],"description":"Transaction type.","example":"mint"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"],"description":"Transaction status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature.","example":"sig_example"},"idempotencyKey":{"type":"string","description":"Idempotency key used for this request.","example":"idem_example_12345"},"idempotencyFingerprint":{"type":"string","description":"Request fingerprint used to validate idempotent retries.","example":"4f2d9c7a5e6f1c..."},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"AQID"},"params":{"type":"object","additionalProperties":{"nullable":true},"description":"Operation parameters captured for audit."},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedByKeyId":{"type":"string","nullable":true,"minLength":1,"description":"API key that initiated the transaction.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","tokenId","organizationId","type","status","signature","serializedTx","params","slot","blockTime","fee","error","initiatedByKeyId","createdAt","updatedAt"],"description":"Pause transaction record."}},"required":["transaction"],"description":"Execute pause response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/unpause":{"post":{"tags":["Issuance"],"summary":"Unpause token transfers","operationId":"unpauseToken","description":"Resumes transfers for a token using the pause authority.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"},{"schema":{"type":"string","pattern":"^[\\x20-\\x7e]{1,255}$","description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","example":"idempotency_example_12345"},"required":false,"description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID controlling the current pause authority. Omission requires exactly one matching in-scope custody record; multiple matches return 409. Replay must retain the original wallet.","example":"cwlt_example"},"options":{"type":"object","properties":{"priorityFee":{"anyOf":[{"type":"string","enum":["none","low","medium","high"]},{"type":"integer","minimum":0}]},"simulate":{"type":"boolean"}},"description":"Pause/unpause options.","example":{"priorityFee":"low","simulate":true}}},"description":"Pause token request body."}}}},"responses":{"200":{"description":"Token unpaused","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transaction":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token transaction identifier.","example":"ttx_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"type":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"],"description":"Transaction type.","example":"mint"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"],"description":"Transaction status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature.","example":"sig_example"},"idempotencyKey":{"type":"string","description":"Idempotency key used for this request.","example":"idem_example_12345"},"idempotencyFingerprint":{"type":"string","description":"Request fingerprint used to validate idempotent retries.","example":"4f2d9c7a5e6f1c..."},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"AQID"},"params":{"type":"object","additionalProperties":{"nullable":true},"description":"Operation parameters captured for audit."},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedByKeyId":{"type":"string","nullable":true,"minLength":1,"description":"API key that initiated the transaction.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","tokenId","organizationId","type","status","signature","serializedTx","params","slot","blockTime","fee","error","initiatedByKeyId","createdAt","updatedAt"],"description":"Unpause transaction record."}},"required":["transaction"],"description":"Execute unpause response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/freeze":{"post":{"tags":["Issuance"],"summary":"Freeze account","operationId":"freezeAccount","description":"Freezes a token account to prevent transfers.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"},{"schema":{"type":"string","pattern":"^[\\x20-\\x7e]{1,255}$","description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","example":"idempotency_example_12345"},"required":false,"description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Wallet or token account address to freeze. SDP resolves the associated token account automatically when a wallet address is provided.","example":"So11111111111111111111111111111111111111112"},"reason":{"type":"string","maxLength":500,"description":"Optional reason for freezing.","example":"Compliance hold"},"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID. When supplied, it must control the current freeze authority.","example":"cwlt_example"}},"required":["accountAddress"],"additionalProperties":false,"description":"Freeze account request body."}}}},"responses":{"201":{"description":"Account frozen","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"frozenAccount":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Frozen account identifier.","example":"frz_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"accountAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Wallet address associated with the frozen token holdings for this mint. SDP resolves the underlying token account automatically.","example":"So11111111111111111111111111111111111111112"},"reason":{"type":"string","nullable":true,"description":"Reason for freezing, if provided.","example":"Compliance hold"},"frozenAt":{"type":"string","format":"date-time","description":"Timestamp when the account was frozen.","example":"2025-01-05T00:00:00.000Z"},"frozenBy":{"type":"string","description":"Actor identifier that froze the account.","example":"key_example"},"unfrozenAt":{"type":"string","nullable":true,"format":"date-time","description":"Timestamp when the account was unfrozen, if applicable.","example":"2025-01-10T00:00:00.000Z"},"unfrozenBy":{"type":"string","nullable":true,"description":"Actor identifier that unfroze the account."},"signature":{"type":"string","description":"Solana transaction signature for the latest freeze/unfreeze.","example":"sig_example"}},"required":["id","tokenId","accountAddress","reason","frozenAt","frozenBy","unfrozenAt","unfrozenBy"],"description":"Frozen account details."}},"required":["frozenAccount"],"description":"Frozen account response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/unfreeze":{"post":{"tags":["Issuance"],"summary":"Unfreeze account","operationId":"unfreezeAccount","description":"Unfreezes a token account so it can be used again.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"},{"schema":{"type":"string","pattern":"^[\\x20-\\x7e]{1,255}$","description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","example":"idempotency_example_12345"},"required":false,"description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Wallet or token account address to unfreeze. SDP resolves the associated token account automatically when a wallet address is provided.","example":"So11111111111111111111111111111111111111112"},"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID. When supplied, it must control the current freeze authority.","example":"cwlt_example"}},"required":["accountAddress"],"additionalProperties":false,"description":"Unfreeze account request body."}}}},"responses":{"200":{"description":"Account unfrozen","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"frozenAccount":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Frozen account identifier.","example":"frz_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"accountAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Wallet address associated with the frozen token holdings for this mint. SDP resolves the underlying token account automatically.","example":"So11111111111111111111111111111111111111112"},"reason":{"type":"string","nullable":true,"description":"Reason for freezing, if provided.","example":"Compliance hold"},"frozenAt":{"type":"string","format":"date-time","description":"Timestamp when the account was frozen.","example":"2025-01-05T00:00:00.000Z"},"frozenBy":{"type":"string","description":"Actor identifier that froze the account.","example":"key_example"},"unfrozenAt":{"type":"string","nullable":true,"format":"date-time","description":"Timestamp when the account was unfrozen, if applicable.","example":"2025-01-10T00:00:00.000Z"},"unfrozenBy":{"type":"string","nullable":true,"description":"Actor identifier that unfroze the account."},"signature":{"type":"string","description":"Solana transaction signature for the latest freeze/unfreeze.","example":"sig_example"}},"required":["id","tokenId","accountAddress","reason","frozenAt","frozenBy","unfrozenAt","unfrozenBy"],"description":"Frozen account details."}},"required":["frozenAccount"],"description":"Frozen account response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/frozen":{"get":{"tags":["Issuance"],"summary":"List frozen accounts","operationId":"listFrozenAccounts","description":"Lists frozen accounts for a token.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Page number (1-based).","example":1},"required":false,"description":"Page number (1-based).","name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Number of items per page.","example":50},"required":false,"description":"Number of items per page.","name":"pageSize","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Frozen accounts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Frozen account identifier.","example":"frz_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"accountAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Wallet address associated with the frozen token holdings for this mint. SDP resolves the underlying token account automatically.","example":"So11111111111111111111111111111111111111112"},"reason":{"type":"string","nullable":true,"description":"Reason for freezing, if provided.","example":"Compliance hold"},"frozenAt":{"type":"string","format":"date-time","description":"Timestamp when the account was frozen.","example":"2025-01-05T00:00:00.000Z"},"frozenBy":{"type":"string","description":"Actor identifier that froze the account.","example":"key_example"},"unfrozenAt":{"type":"string","nullable":true,"format":"date-time","description":"Timestamp when the account was unfrozen, if applicable.","example":"2025-01-10T00:00:00.000Z"},"unfrozenBy":{"type":"string","nullable":true,"description":"Actor identifier that unfroze the account."},"signature":{"type":"string","description":"Solana transaction signature for the latest freeze/unfreeze.","example":"sig_example"}},"required":["id","tokenId","accountAddress","reason","frozenAt","frozenBy","unfrozenAt","unfrozenBy"],"description":"Frozen account record."}},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"description":"Total items."},"page":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Current page number."},"pageSize":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Items per page."},"hasMore":{"type":"boolean","description":"Whether more pages exist."},"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}},"required":["total","page","pageSize","hasMore","requestId"],"description":"Pagination metadata."}},"required":["data","meta"],"description":"Standard paginated response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/allowlist":{"get":{"tags":["Issuance"],"summary":"List token allowlist","operationId":"listTokenAllowlist","description":"Lists allowlist entries for a token.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Page number (1-based).","example":1},"required":false,"description":"Page number (1-based).","name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Number of items per page.","example":50},"required":false,"description":"Number of items per page.","name":"pageSize","in":"query"},{"schema":{"type":"string","description":"Contains-style search over the entry address and label. A blank value is treated as no search filter.","example":"So1"},"required":false,"description":"Contains-style search over the entry address and label. A blank value is treated as no search filter.","name":"search","in":"query"},{"schema":{"type":"string","description":"Filter to entries with this exact label (values come from the labels endpoint).","example":"Treasury"},"required":false,"description":"Filter to entries with this exact label (values come from the labels endpoint).","name":"label","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Allowlist entries","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token allowlist entry identifier.","example":"tal_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"address":{"type":"string","minLength":32,"maxLength":44,"description":"Allowlisted wallet address.","example":"So11111111111111111111111111111111111111112"},"label":{"type":"string","nullable":true,"description":"Optional label for the address.","example":"Treasury"},"status":{"type":"string","enum":["active","revoked"],"description":"Allowlist entry status.","example":"active"},"addedBy":{"type":"string","description":"Actor identifier that added the entry.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"revokedAt":{"type":"string","nullable":true,"format":"date-time","description":"Revocation timestamp, if revoked.","example":"2025-02-01T00:00:00.000Z"}},"required":["id","tokenId","address","label","status","addedBy","createdAt","revokedAt"],"description":"Token allowlist entry."}},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"description":"Total items."},"page":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Current page number."},"pageSize":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Items per page."},"hasMore":{"type":"boolean","description":"Whether more pages exist."},"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}},"required":["total","page","pageSize","hasMore","requestId"],"description":"Pagination metadata."}},"required":["data","meta"],"description":"Standard paginated response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"post":{"tags":["Issuance"],"summary":"Add token allowlist entry","operationId":"addTokenAllowlistEntry","description":"Adds an allowlist entry for a token.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID controlling the live list authority. Omission requires exactly one matching in-scope custody record; multiple matches return 409. Database-only lists do not require a signer.","example":"cwlt_example"},"address":{"type":"string","minLength":32,"maxLength":44,"description":"Wallet address to allowlist.","example":"So11111111111111111111111111111111111111112"},"label":{"type":"string","maxLength":100,"description":"Optional label for the allowlist entry.","example":"Treasury"}},"required":["address"],"description":"Add token allowlist entry request body."}}}},"responses":{"201":{"description":"Allowlist entry added","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"entry":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token allowlist entry identifier.","example":"tal_example"},"tokenId":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"address":{"type":"string","minLength":32,"maxLength":44,"description":"Allowlisted wallet address.","example":"So11111111111111111111111111111111111111112"},"label":{"type":"string","nullable":true,"description":"Optional label for the address.","example":"Treasury"},"status":{"type":"string","enum":["active","revoked"],"description":"Allowlist entry status.","example":"active"},"addedBy":{"type":"string","description":"Actor identifier that added the entry.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"revokedAt":{"type":"string","nullable":true,"format":"date-time","description":"Revocation timestamp, if revoked.","example":"2025-02-01T00:00:00.000Z"}},"required":["id","tokenId","address","label","status","addedBy","createdAt","revokedAt"],"description":"Token allowlist entry."}},"required":["entry"],"description":"Token allowlist entry response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/allowlist/labels":{"get":{"tags":["Issuance"],"summary":"List token allowlist labels","operationId":"listTokenAllowlistLabels","description":"Lists the distinct labels used across a token's active control-list entries, for building a label filter.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Distinct allowlist labels","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"labels":{"type":"array","items":{"type":"string"},"description":"Distinct labels used across the token's active control-list entries.","example":["Treasury","Market maker"]},"total":{"type":"integer","description":"Total active control-list entries (unfiltered), for the summary count.","example":42}},"required":["labels","total"]},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/allowlist/{entryId}":{"delete":{"tags":["Issuance"],"summary":"Remove token allowlist entry","operationId":"removeTokenAllowlistEntry","description":"Removes an allowlist entry from a token.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Allowlist entry identifier.","example":"al_example"},"required":true,"description":"Allowlist entry identifier.","name":"entryId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID controlling the live list authority. Omission requires exactly one matching in-scope custody record; multiple matches return 409. Database-only lists do not require a signer.","example":"cwlt_example"},"required":false,"description":"Optional exact SDP Wallet ID controlling the live list authority. Omission requires exactly one matching in-scope custody record; multiple matches return 409. Database-only lists do not require a signer.","name":"signingCustodyWalletId","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"204":{"description":"Allowlist entry removed"},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/tokens/{tokenId}/holders":{"get":{"tags":["Issuance"],"summary":"List verified holders","operationId":"listHolders","description":"Returns the wallets enrolled for this asset (KYC identity + enrollment state).","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Enrolled holders","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HoldersResponse"}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"post":{"tags":["Issuance"],"summary":"Enroll a verified holder","operationId":"enrollHolder","description":"Registers a wallet for this asset (upserts its KYC identity + an active enrollment).","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollHolderRequest"}}}},"responses":{"201":{"description":"Holder enrolled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HolderResponse"}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/wallets/{walletId}/balances":{"get":{"tags":["Payments"],"summary":"Get wallet balances","operationId":"getPaymentWalletBalances","description":"Retrieves balances for a custody wallet. If any SOL or SPL balance read fails, returns 503 instead of partial or zero balances. Optional minimumSlot requires confirmed account state at or after that Solana slot; the response acknowledges the bound in data.balanceReadContext.minimumSlot. Wallet lifecycle and provisioning are managed through /v1/wallets.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Provider wallet ID — the `walletId` field returned by GET /v1/wallets. The wallet record `id` and the public key are not accepted.","example":"privy_wallet_123"},"required":true,"description":"Provider wallet ID — the `walletId` field returned by GET /v1/wallets. The wallet record `id` and the public key are not accepted.","name":"walletId","in":"path"},{"schema":{"type":"string","pattern":"^(0|[1-9]\\d*)$"},"required":false,"name":"minimumSlot","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Wallet balances","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"walletBalances":{"type":"object","properties":{"walletId":{"type":"string","minLength":1,"description":"Provider wallet ID — the `walletId` field returned by GET /v1/wallets.","example":"privy_wallet_123"},"address":{"type":"string","minLength":32,"maxLength":44,"description":"Wallet address.","example":"So11111111111111111111111111111111111111112"},"balances":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string","description":"Token symbol or mint address.","example":"USDC"},"mint":{"type":"string","minLength":32,"maxLength":44,"description":"Token mint address.","example":"So11111111111111111111111111111111111111112"},"amount":{"type":"string","description":"Raw amount in smallest units.","example":"100000000"},"uiAmount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"decimals":{"type":"integer","description":"Token decimals.","example":6},"usdPrice":{"type":"number","description":"Resolved USD price per token when available.","example":1},"usdValue":{"type":"number","description":"Resolved USD value of this balance when pricing is available.","example":100},"confidential":{"type":"boolean","description":"Confidential balance flag (when applicable).","example":false}},"required":["token","mint","amount","uiAmount","decimals"],"description":"Token balance details."},"description":"Token balances."}},"required":["walletId","address","balances"],"description":"Wallet balances details."},"balanceReadContext":{"type":"object","properties":{"minimumSlot":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["minimumSlot"]}},"required":["walletBalances"],"description":"Wallet balances response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"503":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/transfers":{"post":{"tags":["Payments"],"summary":"Execute transfer (custody)","operationId":"createPaymentTransfer","description":"Executes an on-chain transfer using the exact SDP Wallet ID (`id` from `/v1/wallets`) and server-side custody signing. Supply an Idempotency-Key to retry safely: an identical exact-wallet request returns the original transfer, while reusing the key for a different request returns 409. A 200 may return a processing transfer with its signature when broadcast or confirmation is still being reconciled; do not create a replacement transfer for that payment.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"},{"schema":{"type":"string","pattern":"^[\\x20-\\x7e]{1,255}$","description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","example":"idempotency_example_12345"},"required":false,"description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"description":"Project identifier for the transfer context.","example":"prj_example"},"transferId":{"type":"string","minLength":1,"description":"Existing off-ramp transfer to use for the on-chain crypto deposit. The transfer must still be awaiting payment and must not already contain on-chain submission data."},"sourceCustodyWalletId":{"type":"string","minLength":1,"description":"Exact SDP Wallet ID (`id` from `GET /v1/wallets`).","example":"cwlt_example"},"destination":{"type":"string","description":"Destination wallet address.","example":"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"},"token":{"type":"string","description":"Token to transfer. Pass `SOL` for the native token, a well-known token symbol (e.g. `USDC`) resolved to the configured cluster's mint, or a base58 SPL mint address. Custom tokens must be specified by their on-chain mint.","example":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"memo":{"type":"string","maxLength":256,"description":"Optional memo for the transfer."}},"required":["sourceCustodyWalletId","destination","token","amount"],"additionalProperties":false,"description":"Create transfer request payload for a custody-managed source wallet. This endpoint does not provision wallets.","example":{"projectId":"prj_example","sourceCustodyWalletId":"cwlt_example","destination":"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU","token":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"100.00"}}}}},"responses":{"200":{"description":"Transfer executed","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transfer":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Transfer identifier (SDP record ID, not the on-chain signature).","example":"xfr_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"custodyWalletId":{"type":"string","nullable":true,"description":"Exact SDP Wallet ID associated with the persisted transfer, or null for unresolved legacy and observed rows.","example":"cwlt_example"},"providerWalletId":{"type":"string","minLength":1,"description":"Provider wallet ID retained as evidence; not an execution selector.","example":"privy_wallet_123"},"projectId":{"type":"string","minLength":1,"description":"Project identifier for the transfer.","example":"prj_example"},"type":{"type":"string","enum":["transfer","transfer_batch","onramp","offramp"],"description":"Transfer type.","example":"transfer"},"kind":{"type":"string","enum":["pay","confidential_pay","batch_pay","recurring_pay","deposit","request_deposit","onramp","offramp"],"description":"Dashboard transaction kind derived from the transfer type and originating Payments resource."},"direction":{"type":"string","enum":["inbound","outbound"],"description":"Transfer direction.","example":"outbound"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed","awaiting_payment","settling","completed","canceled","expired"],"description":"Transfer status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature (tx id/hash).","example":"sig_example"},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"base64_tx_example"},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedBy":{"type":"object","properties":{"type":{"type":"string","enum":["api_key","user","system"],"description":"Initiator type.","example":"api_key"},"id":{"type":"string","description":"Initiator identifier if applicable."},"display":{"type":"string","description":"Human-friendly label for the initiator."}},"required":["type"],"description":"Initiator that triggered the transfer."},"source":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet address.","example":"So11111111111111111111111111111111111111112"},"destination":{"type":"string","minLength":32,"maxLength":44,"description":"Destination wallet address.","example":"So11111111111111111111111111111111111111112"},"memo":{"type":"string","maxLength":256,"description":"Optional memo for the transfer."},"rampsMemo":{"type":"object","additionalProperties":{"type":"string","minLength":1,"maxLength":256},"description":"Free-form key-value memo for offchain reconciliation of ramp transfers. At most 20 entries.","example":{"invoice":"INV-123","po":"PO-9"}},"token":{"type":"string","description":"Token symbol or mint address."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"provider":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe","hercle","mural"],"description":"Ramp provider for on-ramp and off-ramp transfer records. A retired provider's records keep its id.","example":"moonpay"},"counterpartyId":{"type":"string","description":"Counterparty tied to the transfer record, when available.","example":"cpty_example"},"counterpartyDisplayName":{"type":"string","description":"Current display name of the counterparty tied to the transfer.","example":"Acme Studio"},"providerReference":{"type":"string","description":"Provider quote or transaction reference used for ramp correlation. For BVNK on-ramp transfers this is the provider payout id (uuid) once the payout exists, and the field is omitted before a payout was created.","example":"ramp_quote_example"},"deliveryMode":{"type":"string","enum":["hosted","manual_instructions","session_widget"],"description":"Ramp delivery mode. Hosted flows require the customer to complete a provider-hosted UI; manual instructions require the customer to fund displayed instructions; session widgets use a provider SDK session.","example":"session_widget"},"fiatCurrency":{"type":"string","description":"Fiat currency for the ramp leg.","example":"USD"},"fiatAmount":{"type":"string","description":"Fiat amount for the ramp leg when known.","example":"100.00"},"settlement":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["moonpay"]},"status":{"type":"string","enum":["completed","failed"]},"transactionId":{"type":"string","description":"MoonPay transaction id."},"baseCurrencyCode":{"type":"string","description":"Fiat currency paid."},"baseCurrencyAmount":{"type":"number","description":"Fiat amount paid."},"quoteCurrencyCode":{"type":"string","description":"Crypto currency purchased."},"quoteCurrencyAmount":{"type":"number","description":"Crypto amount purchased."},"feeAmount":{"type":"number","description":"Provider fee."},"extraFeeAmount":{"type":"number","description":"Extra provider fee."},"networkFeeAmount":{"type":"number","description":"Network fee."},"areFeesIncluded":{"type":"boolean","description":"Whether the fees are included in the paid amount."},"usdRate":{"type":"number","description":"USD exchange rate."},"cryptoTransactionId":{"type":"string","description":"On-chain transaction id."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","transactionId","baseCurrencyCode","baseCurrencyAmount","quoteCurrencyCode","quoteCurrencyAmount","feeAmount","extraFeeAmount","networkFeeAmount","areFeesIncluded","usdRate"],"description":"MoonPay on-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["lightspark"]},"status":{"type":"string","enum":["COMPLETED","FAILED","EXPIRED","REFUND_FAILED"]},"sentAmount":{"type":"object","properties":{"amount":{"type":"number"},"currencyCode":{"type":"string"},"decimals":{"type":"number"}},"required":["amount","currencyCode","decimals"],"description":"Amount sent from the payer."},"receivedAmount":{"type":"object","properties":{"amount":{"type":"number"},"currencyCode":{"type":"string"},"decimals":{"type":"number"}},"required":["amount","currencyCode","decimals"],"description":"Amount received by the payee."},"exchangeRate":{"type":"number","description":"Exchange rate."},"fees":{"type":"number","description":"Total fees."},"settledAt":{"type":"string","description":"Settlement timestamp."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","sentAmount","receivedAmount","exchangeRate","fees"],"description":"Lightspark off-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["coinbase"]},"status":{"type":"string","enum":["completed","failed"]},"paymentCurrency":{"type":"string","description":"Fiat currency paid."},"paymentSubtotal":{"type":"string","description":"Fiat subtotal."},"paymentTotal":{"type":"string","description":"Fiat total paid."},"purchaseCurrency":{"type":"string","description":"Crypto currency purchased."},"purchaseAmount":{"type":"string","description":"Crypto amount purchased."},"exchangeRate":{"type":"string","description":"Exchange rate."},"fees":{"type":"array","items":{"type":"object","properties":{"feeAmount":{"type":"string"},"feeCurrency":{"type":"string"},"feeType":{"type":"string"}},"required":["feeAmount","feeCurrency","feeType"]},"description":"Fee legs."},"txHash":{"type":"string","description":"On-chain transaction hash."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","paymentCurrency","paymentSubtotal","paymentTotal","purchaseCurrency","purchaseAmount","exchangeRate","fees"],"description":"Coinbase on-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"payinId":{"type":"string","description":"BVNK pay-in id (fiat leg)."},"payoutId":{"type":"string","description":"BVNK crypto payout uuid."},"receiptUrl":{"type":"string","description":"BVNK receipt/redirect url for the payout (sandbox receipt tracking)."},"fiatCurrency":{"type":"string","description":"Fiat currency."},"fiatAmount":{"type":"string","description":"Fiat amount, as a decimal string."},"cryptoCurrency":{"type":"string","description":"Crypto asset."},"cryptoAmount":{"type":"string","description":"Crypto amount to receive, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (`exchangeRate.rate` from the provider), as a decimal string."},"status":{"type":"string","enum":["PROCESSING"]}},"required":["provider","payinId","payoutId","receiptUrl","fiatCurrency","fiatAmount","cryptoCurrency","cryptoAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","status"],"description":"BVNK on-ramp settlement while the crypto payout is in flight."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"payinId":{"type":"string","description":"BVNK pay-in id (fiat leg)."},"payoutId":{"type":"string","description":"BVNK crypto payout uuid."},"receiptUrl":{"type":"string","description":"BVNK receipt/redirect url for the payout (sandbox receipt tracking)."},"fiatCurrency":{"type":"string","description":"Fiat currency."},"fiatAmount":{"type":"string","description":"Fiat amount, as a decimal string."},"cryptoCurrency":{"type":"string","description":"Crypto asset."},"cryptoAmount":{"type":"string","description":"Crypto amount to receive, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (`exchangeRate.rate` from the provider), as a decimal string."},"status":{"type":"string","enum":["COMPLETE"]},"txHash":{"type":"string","description":"On-chain transaction hash."},"cryptoAmountActual":{"type":"string","description":"Actual crypto delivered, as a decimal string."},"fiatAmountActual":{"type":"string","description":"Actual fiat debited, as a decimal string."},"feeAmountActual":{"type":"string","description":"Actual fee charged, as a decimal string."},"feeCurrencyActual":{"type":"string","description":"Actual fee currency."},"networkFeeAmountActual":{"type":"string","description":"Actual network fee charged, as a decimal string."},"networkFeeCurrencyActual":{"type":"string","description":"Actual network fee currency."},"exchangeRateActual":{"type":"string","description":"Actual exchange rate, as a decimal string."}},"required":["provider","payinId","payoutId","receiptUrl","fiatCurrency","fiatAmount","cryptoCurrency","cryptoAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","status","txHash","cryptoAmountActual","fiatAmountActual","feeAmountActual","feeCurrencyActual","networkFeeAmountActual","networkFeeCurrencyActual","exchangeRateActual"],"description":"BVNK on-ramp settlement once the crypto payout completed."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"kind":{"type":"string","enum":["offramp_channel"]},"status":{"type":"string","enum":["COMPLETE"]},"channelId":{"type":"string","description":"BVNK channel uuid the crypto was paid into."},"transactionId":{"type":"string","description":"BVNK channel transaction uuid (event `uuid`)."},"txHash":{"type":"string","description":"Deposit transaction hash (event `hash`)."},"depositAddress":{"type":"string","description":"Channel deposit address the crypto paid."},"cryptoCurrency":{"type":"string","description":"Crypto paid in (event `paidCurrency`)."},"cryptoAmount":{"type":"string","description":"Crypto paid in, as a decimal string."},"fiatCurrency":{"type":"string","description":"Fiat credited to the funding wallet (event `walletCurrency`)."},"fiatAmount":{"type":"string","description":"Fiat credited, as a decimal string."},"displayCurrency":{"type":"string","description":"Display currency (event `displayCurrency`)."},"displayAmount":{"type":"string","description":"Display amount, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency (event `networkFee.paidCurrency`)."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (event `exchangeRate.rate`), as a decimal string."},"sources":{"type":"array","items":{"type":"string"},"description":"Source wallet addresses that paid the channel."}},"required":["provider","kind","status","channelId","transactionId","txHash","depositAddress","cryptoCurrency","cryptoAmount","fiatCurrency","fiatAmount","displayCurrency","displayAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","sources"],"description":"BVNK off-ramp channel settlement economics."}],"description":"Provider-reported ramp settlement economics. BVNK on-ramp transfers carry the PROCESSING variant once the payout is created (create-time estimate plus the receipt url) and the COMPLETE variant once the crypto payout settles (delivery facts and actual amounts), so the dashboard can show the success screen and receipt tracking while the payout is still in flight."},"risk":{"type":"object","properties":{"provider":{"type":"string","description":"Risk scoring provider.","example":"trm"},"score":{"type":"string","description":"Provider-specific risk score.","example":"0.12"},"level":{"type":"string","enum":["low","medium","high","unknown"],"description":"Risk level classification.","example":"low"},"evaluatedAt":{"type":"string","format":"date-time","description":"Timestamp when risk was evaluated.","example":"2025-01-01T00:00:00.000Z"}},"required":["provider","score","level","evaluatedAt"],"description":"Optional risk evaluation for the transfer."},"moneygram":{"type":"object","properties":{"customerId":{"type":"string","description":"MoneyGram profile id for the counterparty; matches the MoneyGram customer_link provider account reference.","example":"mg_profile_example"},"transactionId":{"type":"string","description":"MoneyGram xRamps transaction identifier.","example":"mgi_tx_example"},"mgiTransactionId":{"type":"string","description":"MoneyGram-side transaction identifier used to correlate status webhooks.","example":"mgi_correlation_example"},"referenceNumber":{"type":"string","description":"Cash pickup reference number issued by MoneyGram.","example":"12345678"},"payoutAmount":{"type":"number","description":"Fiat payout amount reported by MoneyGram.","example":25},"payoutStatus":{"type":"string","description":"MoneyGram payout status.","example":"completed"},"cryptoTransferId":{"type":"string","description":"SDP transfer id for the on-chain USDC leg.","example":"xfr_moneygram_crypto_leg_example"},"solanaTxSignature":{"type":"string","description":"Solana transaction signature for the USDC transfer.","example":"sig_moneygram_usdc_transfer_example"},"lastWidgetError":{"type":"string","description":"Last MoneyGram widget error recorded for this transfer.","example":"Transaction cancelled by user"}},"description":"MoneyGram-specific details for MoneyGram ramp transfers."},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","custodyWalletId","providerWalletId","type","kind","direction","status","signature","serializedTx","slot","blockTime","fee","error","rampsMemo","createdAt","updatedAt"],"description":"Transfer details."}},"required":["transfer"],"description":"Transfer response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"503":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"get":{"tags":["Payments"],"summary":"List transfers","operationId":"listPaymentTransfers","description":"Lists persisted payment transfers for the authenticated scope. Set custodyWalletId to select one exact SDP wallet; observed address history is opt-in with includeObserved=true.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Filter persisted transfers by exact SDP Wallet ID.","example":"cwlt_example"},"required":false,"description":"Filter persisted transfers by exact SDP Wallet ID.","name":"custodyWalletId","in":"query"},{"schema":{"type":"string","maxLength":200,"description":"Search transfer ID, signature, provider reference, source or destination address, memo, counterparty ID, or counterparty display name. Use at least 3 non-whitespace characters; a blank value is treated as no search filter.","example":"xfr_example"},"required":false,"description":"Search transfer ID, signature, provider reference, source or destination address, memo, counterparty ID, or counterparty display name. Use at least 3 non-whitespace characters; a blank value is treated as no search filter.","name":"search","in":"query"},{"schema":{"type":"string","description":"Filter by token symbol or mint.","example":"USDC"},"required":false,"description":"Filter by token symbol or mint.","name":"token","in":"query"},{"schema":{"type":"string","enum":["inbound","outbound"],"description":"Filter by transfer direction.","example":"outbound"},"required":false,"description":"Filter by transfer direction.","name":"direction","in":"query"},{"schema":{"type":"string","description":"Filter by transfer status. Accepts a comma-separated list of statuses.","example":"completed,confirmed,finalized"},"required":false,"description":"Filter by transfer status. Accepts a comma-separated list of statuses.","name":"status","in":"query"},{"schema":{"type":"string","enum":["wallet","ramp"],"description":"Filter by wallet transfers or ramp transfers.","example":"ramp"},"required":false,"description":"Filter by wallet transfers or ramp transfers.","name":"category","in":"query"},{"schema":{"type":"string","description":"Filter by one or more comma-separated transfer types.","example":"transfer,transfer_batch"},"required":false,"description":"Filter by one or more comma-separated transfer types.","name":"type","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Filter transfers tied to a specific counterparty.","example":"cpty_example"},"required":false,"description":"Filter transfers tied to a specific counterparty.","name":"counterpartyId","in":"query"},{"schema":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe"],"description":"Filter ramp transfers by provider.","example":"lightspark"},"required":false,"description":"Filter ramp transfers by provider.","name":"provider","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Provider quote or transaction reference. Must be supplied with provider for exact ramp transfer lookup.","example":"Quote:019e979c-f660-5246-0000-c0588496b9ce"},"required":false,"description":"Provider quote or transaction reference. Must be supplied with provider for exact ramp transfer lookup.","name":"providerReference","in":"query"},{"schema":{"type":"string","format":"date-time","description":"Filter from timestamp.","example":"2025-01-01T00:00:00.000Z"},"required":false,"description":"Filter from timestamp.","name":"from","in":"query"},{"schema":{"type":"string","format":"date-time","description":"Filter to timestamp.","example":"2025-01-02T00:00:00.000Z"},"required":false,"description":"Filter to timestamp.","name":"to","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":false,"description":"When custodyWalletId is supplied, also include RPC-observed activity for that exact wallet row's address. Observed rows have custodyWalletId null.","example":false},"required":false,"description":"When custodyWalletId is supplied, also include RPC-observed activity for that exact wallet row's address. Observed rows have custodyWalletId null.","name":"includeObserved","in":"query"},{"schema":{"type":"string","enum":["createdAt","updatedAt","amount","status"],"default":"createdAt","description":"Field used to sort the transfer list.","example":"createdAt"},"required":false,"description":"Field used to sort the transfer list.","name":"sortBy","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Sort direction.","example":"desc"},"required":false,"description":"Sort direction.","name":"sortDirection","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"description":"Page number (1-based).","example":1},"required":false,"description":"Page number (1-based).","name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Items per page.","example":20},"required":false,"description":"Items per page.","name":"pageSize","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Transfer list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Transfer identifier (SDP record ID, not the on-chain signature).","example":"xfr_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"custodyWalletId":{"type":"string","nullable":true,"description":"Exact SDP Wallet ID associated with the persisted transfer, or null for unresolved legacy and observed rows.","example":"cwlt_example"},"providerWalletId":{"type":"string","minLength":1,"description":"Provider wallet ID retained as evidence; not an execution selector.","example":"privy_wallet_123"},"projectId":{"type":"string","minLength":1,"description":"Project identifier for the transfer.","example":"prj_example"},"type":{"type":"string","enum":["transfer","transfer_batch","onramp","offramp"],"description":"Transfer type.","example":"transfer"},"kind":{"type":"string","enum":["pay","confidential_pay","batch_pay","recurring_pay","deposit","request_deposit","onramp","offramp"],"description":"Dashboard transaction kind derived from the transfer type and originating Payments resource."},"direction":{"type":"string","enum":["inbound","outbound"],"description":"Transfer direction.","example":"outbound"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed","awaiting_payment","settling","completed","canceled","expired"],"description":"Transfer status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature (tx id/hash).","example":"sig_example"},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"base64_tx_example"},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedBy":{"type":"object","properties":{"type":{"type":"string","enum":["api_key","user","system"],"description":"Initiator type.","example":"api_key"},"id":{"type":"string","description":"Initiator identifier if applicable."},"display":{"type":"string","description":"Human-friendly label for the initiator."}},"required":["type"],"description":"Initiator that triggered the transfer."},"source":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet address.","example":"So11111111111111111111111111111111111111112"},"destination":{"type":"string","minLength":32,"maxLength":44,"description":"Destination wallet address.","example":"So11111111111111111111111111111111111111112"},"memo":{"type":"string","maxLength":256,"description":"Optional memo for the transfer."},"rampsMemo":{"type":"object","additionalProperties":{"type":"string","minLength":1,"maxLength":256},"description":"Free-form key-value memo for offchain reconciliation of ramp transfers. At most 20 entries.","example":{"invoice":"INV-123","po":"PO-9"}},"token":{"type":"string","description":"Token symbol or mint address."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"provider":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe","hercle","mural"],"description":"Ramp provider for on-ramp and off-ramp transfer records. A retired provider's records keep its id.","example":"moonpay"},"counterpartyId":{"type":"string","description":"Counterparty tied to the transfer record, when available.","example":"cpty_example"},"counterpartyDisplayName":{"type":"string","description":"Current display name of the counterparty tied to the transfer.","example":"Acme Studio"},"providerReference":{"type":"string","description":"Provider quote or transaction reference used for ramp correlation. For BVNK on-ramp transfers this is the provider payout id (uuid) once the payout exists, and the field is omitted before a payout was created.","example":"ramp_quote_example"},"deliveryMode":{"type":"string","enum":["hosted","manual_instructions","session_widget"],"description":"Ramp delivery mode. Hosted flows require the customer to complete a provider-hosted UI; manual instructions require the customer to fund displayed instructions; session widgets use a provider SDK session.","example":"session_widget"},"fiatCurrency":{"type":"string","description":"Fiat currency for the ramp leg.","example":"USD"},"fiatAmount":{"type":"string","description":"Fiat amount for the ramp leg when known.","example":"100.00"},"settlement":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["moonpay"]},"status":{"type":"string","enum":["completed","failed"]},"transactionId":{"type":"string","description":"MoonPay transaction id."},"baseCurrencyCode":{"type":"string","description":"Fiat currency paid."},"baseCurrencyAmount":{"type":"number","description":"Fiat amount paid."},"quoteCurrencyCode":{"type":"string","description":"Crypto currency purchased."},"quoteCurrencyAmount":{"type":"number","description":"Crypto amount purchased."},"feeAmount":{"type":"number","description":"Provider fee."},"extraFeeAmount":{"type":"number","description":"Extra provider fee."},"networkFeeAmount":{"type":"number","description":"Network fee."},"areFeesIncluded":{"type":"boolean","description":"Whether the fees are included in the paid amount."},"usdRate":{"type":"number","description":"USD exchange rate."},"cryptoTransactionId":{"type":"string","description":"On-chain transaction id."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","transactionId","baseCurrencyCode","baseCurrencyAmount","quoteCurrencyCode","quoteCurrencyAmount","feeAmount","extraFeeAmount","networkFeeAmount","areFeesIncluded","usdRate"],"description":"MoonPay on-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["lightspark"]},"status":{"type":"string","enum":["COMPLETED","FAILED","EXPIRED","REFUND_FAILED"]},"sentAmount":{"type":"object","properties":{"amount":{"type":"number"},"currencyCode":{"type":"string"},"decimals":{"type":"number"}},"required":["amount","currencyCode","decimals"],"description":"Amount sent from the payer."},"receivedAmount":{"type":"object","properties":{"amount":{"type":"number"},"currencyCode":{"type":"string"},"decimals":{"type":"number"}},"required":["amount","currencyCode","decimals"],"description":"Amount received by the payee."},"exchangeRate":{"type":"number","description":"Exchange rate."},"fees":{"type":"number","description":"Total fees."},"settledAt":{"type":"string","description":"Settlement timestamp."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","sentAmount","receivedAmount","exchangeRate","fees"],"description":"Lightspark off-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["coinbase"]},"status":{"type":"string","enum":["completed","failed"]},"paymentCurrency":{"type":"string","description":"Fiat currency paid."},"paymentSubtotal":{"type":"string","description":"Fiat subtotal."},"paymentTotal":{"type":"string","description":"Fiat total paid."},"purchaseCurrency":{"type":"string","description":"Crypto currency purchased."},"purchaseAmount":{"type":"string","description":"Crypto amount purchased."},"exchangeRate":{"type":"string","description":"Exchange rate."},"fees":{"type":"array","items":{"type":"object","properties":{"feeAmount":{"type":"string"},"feeCurrency":{"type":"string"},"feeType":{"type":"string"}},"required":["feeAmount","feeCurrency","feeType"]},"description":"Fee legs."},"txHash":{"type":"string","description":"On-chain transaction hash."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","paymentCurrency","paymentSubtotal","paymentTotal","purchaseCurrency","purchaseAmount","exchangeRate","fees"],"description":"Coinbase on-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"payinId":{"type":"string","description":"BVNK pay-in id (fiat leg)."},"payoutId":{"type":"string","description":"BVNK crypto payout uuid."},"receiptUrl":{"type":"string","description":"BVNK receipt/redirect url for the payout (sandbox receipt tracking)."},"fiatCurrency":{"type":"string","description":"Fiat currency."},"fiatAmount":{"type":"string","description":"Fiat amount, as a decimal string."},"cryptoCurrency":{"type":"string","description":"Crypto asset."},"cryptoAmount":{"type":"string","description":"Crypto amount to receive, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (`exchangeRate.rate` from the provider), as a decimal string."},"status":{"type":"string","enum":["PROCESSING"]}},"required":["provider","payinId","payoutId","receiptUrl","fiatCurrency","fiatAmount","cryptoCurrency","cryptoAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","status"],"description":"BVNK on-ramp settlement while the crypto payout is in flight."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"payinId":{"type":"string","description":"BVNK pay-in id (fiat leg)."},"payoutId":{"type":"string","description":"BVNK crypto payout uuid."},"receiptUrl":{"type":"string","description":"BVNK receipt/redirect url for the payout (sandbox receipt tracking)."},"fiatCurrency":{"type":"string","description":"Fiat currency."},"fiatAmount":{"type":"string","description":"Fiat amount, as a decimal string."},"cryptoCurrency":{"type":"string","description":"Crypto asset."},"cryptoAmount":{"type":"string","description":"Crypto amount to receive, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (`exchangeRate.rate` from the provider), as a decimal string."},"status":{"type":"string","enum":["COMPLETE"]},"txHash":{"type":"string","description":"On-chain transaction hash."},"cryptoAmountActual":{"type":"string","description":"Actual crypto delivered, as a decimal string."},"fiatAmountActual":{"type":"string","description":"Actual fiat debited, as a decimal string."},"feeAmountActual":{"type":"string","description":"Actual fee charged, as a decimal string."},"feeCurrencyActual":{"type":"string","description":"Actual fee currency."},"networkFeeAmountActual":{"type":"string","description":"Actual network fee charged, as a decimal string."},"networkFeeCurrencyActual":{"type":"string","description":"Actual network fee currency."},"exchangeRateActual":{"type":"string","description":"Actual exchange rate, as a decimal string."}},"required":["provider","payinId","payoutId","receiptUrl","fiatCurrency","fiatAmount","cryptoCurrency","cryptoAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","status","txHash","cryptoAmountActual","fiatAmountActual","feeAmountActual","feeCurrencyActual","networkFeeAmountActual","networkFeeCurrencyActual","exchangeRateActual"],"description":"BVNK on-ramp settlement once the crypto payout completed."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"kind":{"type":"string","enum":["offramp_channel"]},"status":{"type":"string","enum":["COMPLETE"]},"channelId":{"type":"string","description":"BVNK channel uuid the crypto was paid into."},"transactionId":{"type":"string","description":"BVNK channel transaction uuid (event `uuid`)."},"txHash":{"type":"string","description":"Deposit transaction hash (event `hash`)."},"depositAddress":{"type":"string","description":"Channel deposit address the crypto paid."},"cryptoCurrency":{"type":"string","description":"Crypto paid in (event `paidCurrency`)."},"cryptoAmount":{"type":"string","description":"Crypto paid in, as a decimal string."},"fiatCurrency":{"type":"string","description":"Fiat credited to the funding wallet (event `walletCurrency`)."},"fiatAmount":{"type":"string","description":"Fiat credited, as a decimal string."},"displayCurrency":{"type":"string","description":"Display currency (event `displayCurrency`)."},"displayAmount":{"type":"string","description":"Display amount, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency (event `networkFee.paidCurrency`)."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (event `exchangeRate.rate`), as a decimal string."},"sources":{"type":"array","items":{"type":"string"},"description":"Source wallet addresses that paid the channel."}},"required":["provider","kind","status","channelId","transactionId","txHash","depositAddress","cryptoCurrency","cryptoAmount","fiatCurrency","fiatAmount","displayCurrency","displayAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","sources"],"description":"BVNK off-ramp channel settlement economics."}],"description":"Provider-reported ramp settlement economics. BVNK on-ramp transfers carry the PROCESSING variant once the payout is created (create-time estimate plus the receipt url) and the COMPLETE variant once the crypto payout settles (delivery facts and actual amounts), so the dashboard can show the success screen and receipt tracking while the payout is still in flight."},"risk":{"type":"object","properties":{"provider":{"type":"string","description":"Risk scoring provider.","example":"trm"},"score":{"type":"string","description":"Provider-specific risk score.","example":"0.12"},"level":{"type":"string","enum":["low","medium","high","unknown"],"description":"Risk level classification.","example":"low"},"evaluatedAt":{"type":"string","format":"date-time","description":"Timestamp when risk was evaluated.","example":"2025-01-01T00:00:00.000Z"}},"required":["provider","score","level","evaluatedAt"],"description":"Optional risk evaluation for the transfer."},"moneygram":{"type":"object","properties":{"customerId":{"type":"string","description":"MoneyGram profile id for the counterparty; matches the MoneyGram customer_link provider account reference.","example":"mg_profile_example"},"transactionId":{"type":"string","description":"MoneyGram xRamps transaction identifier.","example":"mgi_tx_example"},"mgiTransactionId":{"type":"string","description":"MoneyGram-side transaction identifier used to correlate status webhooks.","example":"mgi_correlation_example"},"referenceNumber":{"type":"string","description":"Cash pickup reference number issued by MoneyGram.","example":"12345678"},"payoutAmount":{"type":"number","description":"Fiat payout amount reported by MoneyGram.","example":25},"payoutStatus":{"type":"string","description":"MoneyGram payout status.","example":"completed"},"cryptoTransferId":{"type":"string","description":"SDP transfer id for the on-chain USDC leg.","example":"xfr_moneygram_crypto_leg_example"},"solanaTxSignature":{"type":"string","description":"Solana transaction signature for the USDC transfer.","example":"sig_moneygram_usdc_transfer_example"},"lastWidgetError":{"type":"string","description":"Last MoneyGram widget error recorded for this transfer.","example":"Transaction cancelled by user"}},"description":"MoneyGram-specific details for MoneyGram ramp transfers."},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","custodyWalletId","providerWalletId","type","kind","direction","status","signature","serializedTx","slot","blockTime","fee","error","rampsMemo","createdAt","updatedAt"],"description":"Transfer transaction record."}},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"description":"Total items."},"page":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Current page number."},"pageSize":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Items per page."},"hasMore":{"type":"boolean","description":"Whether more pages exist."},"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}},"required":["total","page","pageSize","hasMore","requestId"],"description":"Pagination metadata."}},"required":["data","meta"],"description":"Standard paginated response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/transfers/{transferId}":{"get":{"tags":["Payments"],"summary":"Get transfer","operationId":"getPaymentTransfer","description":"Retrieves details for a specific transfer.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Transfer identifier (SDP record ID, not the on-chain signature).","example":"xfr_example"},"required":true,"description":"Transfer identifier (SDP record ID, not the on-chain signature).","name":"transferId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Transfer details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transfer":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Transfer identifier (SDP record ID, not the on-chain signature).","example":"xfr_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"custodyWalletId":{"type":"string","nullable":true,"description":"Exact SDP Wallet ID associated with the persisted transfer, or null for unresolved legacy and observed rows.","example":"cwlt_example"},"providerWalletId":{"type":"string","minLength":1,"description":"Provider wallet ID retained as evidence; not an execution selector.","example":"privy_wallet_123"},"projectId":{"type":"string","minLength":1,"description":"Project identifier for the transfer.","example":"prj_example"},"type":{"type":"string","enum":["transfer","transfer_batch","onramp","offramp"],"description":"Transfer type.","example":"transfer"},"kind":{"type":"string","enum":["pay","confidential_pay","batch_pay","recurring_pay","deposit","request_deposit","onramp","offramp"],"description":"Dashboard transaction kind derived from the transfer type and originating Payments resource."},"direction":{"type":"string","enum":["inbound","outbound"],"description":"Transfer direction.","example":"outbound"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed","awaiting_payment","settling","completed","canceled","expired"],"description":"Transfer status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature (tx id/hash).","example":"sig_example"},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"base64_tx_example"},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedBy":{"type":"object","properties":{"type":{"type":"string","enum":["api_key","user","system"],"description":"Initiator type.","example":"api_key"},"id":{"type":"string","description":"Initiator identifier if applicable."},"display":{"type":"string","description":"Human-friendly label for the initiator."}},"required":["type"],"description":"Initiator that triggered the transfer."},"source":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet address.","example":"So11111111111111111111111111111111111111112"},"destination":{"type":"string","minLength":32,"maxLength":44,"description":"Destination wallet address.","example":"So11111111111111111111111111111111111111112"},"memo":{"type":"string","maxLength":256,"description":"Optional memo for the transfer."},"rampsMemo":{"type":"object","additionalProperties":{"type":"string","minLength":1,"maxLength":256},"description":"Free-form key-value memo for offchain reconciliation of ramp transfers. At most 20 entries.","example":{"invoice":"INV-123","po":"PO-9"}},"token":{"type":"string","description":"Token symbol or mint address."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"provider":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe","hercle","mural"],"description":"Ramp provider for on-ramp and off-ramp transfer records. A retired provider's records keep its id.","example":"moonpay"},"counterpartyId":{"type":"string","description":"Counterparty tied to the transfer record, when available.","example":"cpty_example"},"counterpartyDisplayName":{"type":"string","description":"Current display name of the counterparty tied to the transfer.","example":"Acme Studio"},"providerReference":{"type":"string","description":"Provider quote or transaction reference used for ramp correlation. For BVNK on-ramp transfers this is the provider payout id (uuid) once the payout exists, and the field is omitted before a payout was created.","example":"ramp_quote_example"},"deliveryMode":{"type":"string","enum":["hosted","manual_instructions","session_widget"],"description":"Ramp delivery mode. Hosted flows require the customer to complete a provider-hosted UI; manual instructions require the customer to fund displayed instructions; session widgets use a provider SDK session.","example":"session_widget"},"fiatCurrency":{"type":"string","description":"Fiat currency for the ramp leg.","example":"USD"},"fiatAmount":{"type":"string","description":"Fiat amount for the ramp leg when known.","example":"100.00"},"settlement":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["moonpay"]},"status":{"type":"string","enum":["completed","failed"]},"transactionId":{"type":"string","description":"MoonPay transaction id."},"baseCurrencyCode":{"type":"string","description":"Fiat currency paid."},"baseCurrencyAmount":{"type":"number","description":"Fiat amount paid."},"quoteCurrencyCode":{"type":"string","description":"Crypto currency purchased."},"quoteCurrencyAmount":{"type":"number","description":"Crypto amount purchased."},"feeAmount":{"type":"number","description":"Provider fee."},"extraFeeAmount":{"type":"number","description":"Extra provider fee."},"networkFeeAmount":{"type":"number","description":"Network fee."},"areFeesIncluded":{"type":"boolean","description":"Whether the fees are included in the paid amount."},"usdRate":{"type":"number","description":"USD exchange rate."},"cryptoTransactionId":{"type":"string","description":"On-chain transaction id."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","transactionId","baseCurrencyCode","baseCurrencyAmount","quoteCurrencyCode","quoteCurrencyAmount","feeAmount","extraFeeAmount","networkFeeAmount","areFeesIncluded","usdRate"],"description":"MoonPay on-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["lightspark"]},"status":{"type":"string","enum":["COMPLETED","FAILED","EXPIRED","REFUND_FAILED"]},"sentAmount":{"type":"object","properties":{"amount":{"type":"number"},"currencyCode":{"type":"string"},"decimals":{"type":"number"}},"required":["amount","currencyCode","decimals"],"description":"Amount sent from the payer."},"receivedAmount":{"type":"object","properties":{"amount":{"type":"number"},"currencyCode":{"type":"string"},"decimals":{"type":"number"}},"required":["amount","currencyCode","decimals"],"description":"Amount received by the payee."},"exchangeRate":{"type":"number","description":"Exchange rate."},"fees":{"type":"number","description":"Total fees."},"settledAt":{"type":"string","description":"Settlement timestamp."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","sentAmount","receivedAmount","exchangeRate","fees"],"description":"Lightspark off-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["coinbase"]},"status":{"type":"string","enum":["completed","failed"]},"paymentCurrency":{"type":"string","description":"Fiat currency paid."},"paymentSubtotal":{"type":"string","description":"Fiat subtotal."},"paymentTotal":{"type":"string","description":"Fiat total paid."},"purchaseCurrency":{"type":"string","description":"Crypto currency purchased."},"purchaseAmount":{"type":"string","description":"Crypto amount purchased."},"exchangeRate":{"type":"string","description":"Exchange rate."},"fees":{"type":"array","items":{"type":"object","properties":{"feeAmount":{"type":"string"},"feeCurrency":{"type":"string"},"feeType":{"type":"string"}},"required":["feeAmount","feeCurrency","feeType"]},"description":"Fee legs."},"txHash":{"type":"string","description":"On-chain transaction hash."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","paymentCurrency","paymentSubtotal","paymentTotal","purchaseCurrency","purchaseAmount","exchangeRate","fees"],"description":"Coinbase on-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"payinId":{"type":"string","description":"BVNK pay-in id (fiat leg)."},"payoutId":{"type":"string","description":"BVNK crypto payout uuid."},"receiptUrl":{"type":"string","description":"BVNK receipt/redirect url for the payout (sandbox receipt tracking)."},"fiatCurrency":{"type":"string","description":"Fiat currency."},"fiatAmount":{"type":"string","description":"Fiat amount, as a decimal string."},"cryptoCurrency":{"type":"string","description":"Crypto asset."},"cryptoAmount":{"type":"string","description":"Crypto amount to receive, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (`exchangeRate.rate` from the provider), as a decimal string."},"status":{"type":"string","enum":["PROCESSING"]}},"required":["provider","payinId","payoutId","receiptUrl","fiatCurrency","fiatAmount","cryptoCurrency","cryptoAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","status"],"description":"BVNK on-ramp settlement while the crypto payout is in flight."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"payinId":{"type":"string","description":"BVNK pay-in id (fiat leg)."},"payoutId":{"type":"string","description":"BVNK crypto payout uuid."},"receiptUrl":{"type":"string","description":"BVNK receipt/redirect url for the payout (sandbox receipt tracking)."},"fiatCurrency":{"type":"string","description":"Fiat currency."},"fiatAmount":{"type":"string","description":"Fiat amount, as a decimal string."},"cryptoCurrency":{"type":"string","description":"Crypto asset."},"cryptoAmount":{"type":"string","description":"Crypto amount to receive, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (`exchangeRate.rate` from the provider), as a decimal string."},"status":{"type":"string","enum":["COMPLETE"]},"txHash":{"type":"string","description":"On-chain transaction hash."},"cryptoAmountActual":{"type":"string","description":"Actual crypto delivered, as a decimal string."},"fiatAmountActual":{"type":"string","description":"Actual fiat debited, as a decimal string."},"feeAmountActual":{"type":"string","description":"Actual fee charged, as a decimal string."},"feeCurrencyActual":{"type":"string","description":"Actual fee currency."},"networkFeeAmountActual":{"type":"string","description":"Actual network fee charged, as a decimal string."},"networkFeeCurrencyActual":{"type":"string","description":"Actual network fee currency."},"exchangeRateActual":{"type":"string","description":"Actual exchange rate, as a decimal string."}},"required":["provider","payinId","payoutId","receiptUrl","fiatCurrency","fiatAmount","cryptoCurrency","cryptoAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","status","txHash","cryptoAmountActual","fiatAmountActual","feeAmountActual","feeCurrencyActual","networkFeeAmountActual","networkFeeCurrencyActual","exchangeRateActual"],"description":"BVNK on-ramp settlement once the crypto payout completed."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"kind":{"type":"string","enum":["offramp_channel"]},"status":{"type":"string","enum":["COMPLETE"]},"channelId":{"type":"string","description":"BVNK channel uuid the crypto was paid into."},"transactionId":{"type":"string","description":"BVNK channel transaction uuid (event `uuid`)."},"txHash":{"type":"string","description":"Deposit transaction hash (event `hash`)."},"depositAddress":{"type":"string","description":"Channel deposit address the crypto paid."},"cryptoCurrency":{"type":"string","description":"Crypto paid in (event `paidCurrency`)."},"cryptoAmount":{"type":"string","description":"Crypto paid in, as a decimal string."},"fiatCurrency":{"type":"string","description":"Fiat credited to the funding wallet (event `walletCurrency`)."},"fiatAmount":{"type":"string","description":"Fiat credited, as a decimal string."},"displayCurrency":{"type":"string","description":"Display currency (event `displayCurrency`)."},"displayAmount":{"type":"string","description":"Display amount, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency (event `networkFee.paidCurrency`)."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (event `exchangeRate.rate`), as a decimal string."},"sources":{"type":"array","items":{"type":"string"},"description":"Source wallet addresses that paid the channel."}},"required":["provider","kind","status","channelId","transactionId","txHash","depositAddress","cryptoCurrency","cryptoAmount","fiatCurrency","fiatAmount","displayCurrency","displayAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","sources"],"description":"BVNK off-ramp channel settlement economics."}],"description":"Provider-reported ramp settlement economics. BVNK on-ramp transfers carry the PROCESSING variant once the payout is created (create-time estimate plus the receipt url) and the COMPLETE variant once the crypto payout settles (delivery facts and actual amounts), so the dashboard can show the success screen and receipt tracking while the payout is still in flight."},"risk":{"type":"object","properties":{"provider":{"type":"string","description":"Risk scoring provider.","example":"trm"},"score":{"type":"string","description":"Provider-specific risk score.","example":"0.12"},"level":{"type":"string","enum":["low","medium","high","unknown"],"description":"Risk level classification.","example":"low"},"evaluatedAt":{"type":"string","format":"date-time","description":"Timestamp when risk was evaluated.","example":"2025-01-01T00:00:00.000Z"}},"required":["provider","score","level","evaluatedAt"],"description":"Optional risk evaluation for the transfer."},"moneygram":{"type":"object","properties":{"customerId":{"type":"string","description":"MoneyGram profile id for the counterparty; matches the MoneyGram customer_link provider account reference.","example":"mg_profile_example"},"transactionId":{"type":"string","description":"MoneyGram xRamps transaction identifier.","example":"mgi_tx_example"},"mgiTransactionId":{"type":"string","description":"MoneyGram-side transaction identifier used to correlate status webhooks.","example":"mgi_correlation_example"},"referenceNumber":{"type":"string","description":"Cash pickup reference number issued by MoneyGram.","example":"12345678"},"payoutAmount":{"type":"number","description":"Fiat payout amount reported by MoneyGram.","example":25},"payoutStatus":{"type":"string","description":"MoneyGram payout status.","example":"completed"},"cryptoTransferId":{"type":"string","description":"SDP transfer id for the on-chain USDC leg.","example":"xfr_moneygram_crypto_leg_example"},"solanaTxSignature":{"type":"string","description":"Solana transaction signature for the USDC transfer.","example":"sig_moneygram_usdc_transfer_example"},"lastWidgetError":{"type":"string","description":"Last MoneyGram widget error recorded for this transfer.","example":"Transaction cancelled by user"}},"description":"MoneyGram-specific details for MoneyGram ramp transfers."},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","custodyWalletId","providerWalletId","type","kind","direction","status","signature","serializedTx","slot","blockTime","fee","error","rampsMemo","createdAt","updatedAt"],"description":"Transfer details."}},"required":["transfer"],"description":"Transfer response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/transfer-batches/estimate":{"post":{"tags":["Payments"],"summary":"Estimate transfer batch","operationId":"estimatePaymentTransferBatch","description":"Validates an exact-wallet transfer batch request and estimates transaction chunking and fees.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"description":"Project identifier for the transfer batch context.","example":"prj_example"},"externalId":{"type":"string","minLength":1,"maxLength":256,"description":"Caller-provided batch correlation ID. Not used as an idempotency key.","example":"payroll_2026_06_30"},"sourceCustodyWalletId":{"type":"string","minLength":1,"description":"Exact SDP Wallet ID (`id` from `GET /v1/wallets`).","example":"cwlt_example"},"token":{"type":"string","description":"Token to transfer. Pass `SOL` for the native token, a well-known token symbol (e.g. `USDC`) resolved to the configured cluster's mint, or a base58 SPL mint address. Custom tokens must be specified by their on-chain mint.","example":"SOL"},"recipients":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":256},"counterpartyId":{"type":"string","minLength":1},"counterpartyAccountId":{"type":"string","minLength":1},"amount":{"type":"string"}},"required":["counterpartyAccountId","amount"]},"minItems":1,"maxItems":500,"description":"Counterparty-account recipients to pay in this batch.","example":[{"externalId":"payroll_row_001","counterpartyId":"cpty_example","counterpartyAccountId":"cpa_example","amount":"25.00"}]},"options":{"type":"object","properties":{"maxRecipientsPerTransaction":{"type":"integer","minimum":1,"maximum":64},"priorityFee":{"type":"string","enum":["none","low","medium","high","auto"]},"preflight":{"type":"boolean"}},"description":"Execution options for transaction chunking, priority fees, and preflight validation.","example":{"maxRecipientsPerTransaction":20,"priorityFee":"auto","preflight":true}}},"required":["sourceCustodyWalletId","token","recipients"],"additionalProperties":false,"description":"Estimate transaction chunking and fees for a transfer batch."}}}},"responses":{"200":{"description":"Transfer batch estimate","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"estimate":{"type":"object","properties":{"recipientCount":{"type":"integer","description":"Requested recipient count."},"transactionCount":{"type":"integer","description":"Estimated number of Solana transaction chunks."},"estimatedFees":{"type":"object","properties":{"networkFeeLamports":{"type":"string","description":"Estimated base network fee in lamports.","example":"5000"},"priorityFeeLamports":{"type":"string","description":"Estimated priority fee in lamports.","example":"0"},"tokenAccountRentLamports":{"type":"string","description":"Estimated rent needed for newly-created recipient token accounts.","example":"0"},"sponsored":{"type":"boolean","description":"Whether SDP sponsors transaction fees for this batch.","example":true}},"required":["networkFeeLamports","priorityFeeLamports","tokenAccountRentLamports","sponsored"],"description":"Estimated fee components."}},"required":["recipientCount","transactionCount","estimatedFees"],"description":"Transfer batch estimate."}},"required":["estimate"],"description":"Transfer batch estimate response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/transfer-batches":{"post":{"tags":["Payments"],"summary":"Create transfer batch","operationId":"createPaymentTransferBatch","description":"Executes an outbound transfer batch from one exact SDP Wallet ID, chunks recipients into Solana transactions, and returns the batch, recipient, and transfer records. Supply an Idempotency-Key to retry safely: an identical exact-wallet request returns the original batch without another on-chain submission, while reusing the key for a different request returns 409.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"},{"schema":{"type":"string","pattern":"^[\\x20-\\x7e]{1,255}$","description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","example":"idempotency_example_12345"},"required":false,"description":"Idempotency key for safely retrying mutating requests. 1-255 printable ASCII characters; echoed back on the response.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"description":"Project identifier for the transfer batch context.","example":"prj_example"},"externalId":{"type":"string","minLength":1,"maxLength":256,"description":"Caller-provided batch correlation ID. Not used as an idempotency key.","example":"payroll_2026_06_30"},"sourceCustodyWalletId":{"type":"string","minLength":1,"description":"Exact SDP Wallet ID (`id` from `GET /v1/wallets`).","example":"cwlt_example"},"token":{"type":"string","description":"Token to transfer. Pass `SOL` for the native token, a well-known token symbol (e.g. `USDC`) resolved to the configured cluster's mint, or a base58 SPL mint address. Custom tokens must be specified by their on-chain mint.","example":"SOL"},"recipients":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":256},"counterpartyId":{"type":"string","minLength":1},"counterpartyAccountId":{"type":"string","minLength":1},"amount":{"type":"string"}},"required":["counterpartyAccountId","amount"]},"minItems":1,"maxItems":500,"description":"Counterparty-account recipients to pay in this batch.","example":[{"externalId":"payroll_row_001","counterpartyId":"cpty_example","counterpartyAccountId":"cpa_example","amount":"25.00"}]},"options":{"type":"object","properties":{"maxRecipientsPerTransaction":{"type":"integer","minimum":1,"maximum":64},"priorityFee":{"type":"string","enum":["none","low","medium","high","auto"]},"preflight":{"type":"boolean"}},"description":"Execution options for transaction chunking, priority fees, and preflight validation.","example":{"maxRecipientsPerTransaction":20,"priorityFee":"auto","preflight":true}}},"required":["sourceCustodyWalletId","token","recipients"],"additionalProperties":false,"description":"Create a custody-executed outbound transfer batch."}}}},"responses":{"200":{"description":"Transfer batch created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"batch":{"type":"object","properties":{"id":{"type":"string","description":"Transfer batch identifier.","example":"xbatch_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier for the transfer batch.","example":"prj_example"},"externalId":{"type":"string","nullable":true,"description":"Caller-provided batch correlation ID.","example":"payroll_2026_06_30"},"sourceCustodyWalletId":{"type":"string","nullable":true,"description":"Exact source SDP Wallet ID, or null for unresolved legacy batches.","example":"cwlt_example"},"sourceProviderWalletId":{"type":"string","minLength":1,"description":"Source Provider wallet ID retained as evidence.","example":"privy_wallet_123"},"sourceAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Source custody wallet address.","example":"So11111111111111111111111111111111111111112"},"token":{"type":"string","description":"Token symbol or mint address.","example":"SOL"},"status":{"type":"string","enum":["pending","processing","confirmed","failed","partially_failed","archived"],"description":"Transfer batch status.","example":"processing"},"totalAmount":{"type":"string","nullable":true,"description":"Total requested batch amount in UI units, when computed.","example":"1000.00"},"recipientCount":{"type":"integer","description":"Number of recipient rows in the batch.","example":20},"transactionCount":{"type":"integer","description":"Number of Solana transaction chunks for the batch.","example":1},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","externalId","sourceCustodyWalletId","sourceProviderWalletId","sourceAddress","token","status","totalAmount","recipientCount","transactionCount","createdAt","updatedAt"],"description":"Transfer batch details."},"recipients":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Transfer batch recipient identifier."},"batchId":{"type":"string","description":"Parent transfer batch identifier."},"transferId":{"type":"string","nullable":true,"minLength":1,"description":"Payment transfer chunk that settled this recipient, once assigned.","example":"xfr_example"},"externalId":{"type":"string","nullable":true,"description":"Caller-provided recipient correlation ID.","example":"payroll_row_001"},"counterpartyId":{"type":"string","description":"Counterparty identifier for the recipient.","example":"cpty_example"},"counterpartyAccountId":{"type":"string","description":"Counterparty account identifier for the recipient.","example":"cpa_example"},"destination":{"type":"string","minLength":32,"maxLength":44,"description":"Resolved Solana destination address.","example":"So11111111111111111111111111111111111111112"},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"status":{"type":"string","enum":["pending","processing","confirmed","failed","archived"],"description":"Transfer batch recipient status.","example":"pending"},"error":{"type":"string","nullable":true,"description":"Recipient-level failure reason, when available."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","batchId","transferId","externalId","counterpartyId","counterpartyAccountId","destination","amount","status","error","createdAt","updatedAt"],"description":"Recipient-level line within a transfer batch."},"description":"Recipient rows for the batch, included on detail responses."},"transfers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Transfer identifier (SDP record ID, not the on-chain signature).","example":"xfr_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"custodyWalletId":{"type":"string","nullable":true,"description":"Exact SDP Wallet ID associated with the persisted transfer, or null for unresolved legacy and observed rows.","example":"cwlt_example"},"providerWalletId":{"type":"string","minLength":1,"description":"Provider wallet ID retained as evidence; not an execution selector.","example":"privy_wallet_123"},"projectId":{"type":"string","minLength":1,"description":"Project identifier for the transfer.","example":"prj_example"},"type":{"type":"string","enum":["transfer","transfer_batch","onramp","offramp"],"description":"Transfer type.","example":"transfer"},"kind":{"type":"string","enum":["pay","confidential_pay","batch_pay","recurring_pay","deposit","request_deposit","onramp","offramp"],"description":"Dashboard transaction kind derived from the transfer type and originating Payments resource."},"direction":{"type":"string","enum":["inbound","outbound"],"description":"Transfer direction.","example":"outbound"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed","awaiting_payment","settling","completed","canceled","expired"],"description":"Transfer status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature (tx id/hash).","example":"sig_example"},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"base64_tx_example"},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedBy":{"type":"object","properties":{"type":{"type":"string","enum":["api_key","user","system"],"description":"Initiator type.","example":"api_key"},"id":{"type":"string","description":"Initiator identifier if applicable."},"display":{"type":"string","description":"Human-friendly label for the initiator."}},"required":["type"],"description":"Initiator that triggered the transfer."},"source":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet address.","example":"So11111111111111111111111111111111111111112"},"destination":{"type":"string","minLength":32,"maxLength":44,"description":"Destination wallet address.","example":"So11111111111111111111111111111111111111112"},"memo":{"type":"string","maxLength":256,"description":"Optional memo for the transfer."},"rampsMemo":{"type":"object","additionalProperties":{"type":"string","minLength":1,"maxLength":256},"description":"Free-form key-value memo for offchain reconciliation of ramp transfers. At most 20 entries.","example":{"invoice":"INV-123","po":"PO-9"}},"token":{"type":"string","description":"Token symbol or mint address."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"provider":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe","hercle","mural"],"description":"Ramp provider for on-ramp and off-ramp transfer records. A retired provider's records keep its id.","example":"moonpay"},"counterpartyId":{"type":"string","description":"Counterparty tied to the transfer record, when available.","example":"cpty_example"},"counterpartyDisplayName":{"type":"string","description":"Current display name of the counterparty tied to the transfer.","example":"Acme Studio"},"providerReference":{"type":"string","description":"Provider quote or transaction reference used for ramp correlation. For BVNK on-ramp transfers this is the provider payout id (uuid) once the payout exists, and the field is omitted before a payout was created.","example":"ramp_quote_example"},"deliveryMode":{"type":"string","enum":["hosted","manual_instructions","session_widget"],"description":"Ramp delivery mode. Hosted flows require the customer to complete a provider-hosted UI; manual instructions require the customer to fund displayed instructions; session widgets use a provider SDK session.","example":"session_widget"},"fiatCurrency":{"type":"string","description":"Fiat currency for the ramp leg.","example":"USD"},"fiatAmount":{"type":"string","description":"Fiat amount for the ramp leg when known.","example":"100.00"},"settlement":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["moonpay"]},"status":{"type":"string","enum":["completed","failed"]},"transactionId":{"type":"string","description":"MoonPay transaction id."},"baseCurrencyCode":{"type":"string","description":"Fiat currency paid."},"baseCurrencyAmount":{"type":"number","description":"Fiat amount paid."},"quoteCurrencyCode":{"type":"string","description":"Crypto currency purchased."},"quoteCurrencyAmount":{"type":"number","description":"Crypto amount purchased."},"feeAmount":{"type":"number","description":"Provider fee."},"extraFeeAmount":{"type":"number","description":"Extra provider fee."},"networkFeeAmount":{"type":"number","description":"Network fee."},"areFeesIncluded":{"type":"boolean","description":"Whether the fees are included in the paid amount."},"usdRate":{"type":"number","description":"USD exchange rate."},"cryptoTransactionId":{"type":"string","description":"On-chain transaction id."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","transactionId","baseCurrencyCode","baseCurrencyAmount","quoteCurrencyCode","quoteCurrencyAmount","feeAmount","extraFeeAmount","networkFeeAmount","areFeesIncluded","usdRate"],"description":"MoonPay on-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["lightspark"]},"status":{"type":"string","enum":["COMPLETED","FAILED","EXPIRED","REFUND_FAILED"]},"sentAmount":{"type":"object","properties":{"amount":{"type":"number"},"currencyCode":{"type":"string"},"decimals":{"type":"number"}},"required":["amount","currencyCode","decimals"],"description":"Amount sent from the payer."},"receivedAmount":{"type":"object","properties":{"amount":{"type":"number"},"currencyCode":{"type":"string"},"decimals":{"type":"number"}},"required":["amount","currencyCode","decimals"],"description":"Amount received by the payee."},"exchangeRate":{"type":"number","description":"Exchange rate."},"fees":{"type":"number","description":"Total fees."},"settledAt":{"type":"string","description":"Settlement timestamp."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","sentAmount","receivedAmount","exchangeRate","fees"],"description":"Lightspark off-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["coinbase"]},"status":{"type":"string","enum":["completed","failed"]},"paymentCurrency":{"type":"string","description":"Fiat currency paid."},"paymentSubtotal":{"type":"string","description":"Fiat subtotal."},"paymentTotal":{"type":"string","description":"Fiat total paid."},"purchaseCurrency":{"type":"string","description":"Crypto currency purchased."},"purchaseAmount":{"type":"string","description":"Crypto amount purchased."},"exchangeRate":{"type":"string","description":"Exchange rate."},"fees":{"type":"array","items":{"type":"object","properties":{"feeAmount":{"type":"string"},"feeCurrency":{"type":"string"},"feeType":{"type":"string"}},"required":["feeAmount","feeCurrency","feeType"]},"description":"Fee legs."},"txHash":{"type":"string","description":"On-chain transaction hash."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","paymentCurrency","paymentSubtotal","paymentTotal","purchaseCurrency","purchaseAmount","exchangeRate","fees"],"description":"Coinbase on-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"payinId":{"type":"string","description":"BVNK pay-in id (fiat leg)."},"payoutId":{"type":"string","description":"BVNK crypto payout uuid."},"receiptUrl":{"type":"string","description":"BVNK receipt/redirect url for the payout (sandbox receipt tracking)."},"fiatCurrency":{"type":"string","description":"Fiat currency."},"fiatAmount":{"type":"string","description":"Fiat amount, as a decimal string."},"cryptoCurrency":{"type":"string","description":"Crypto asset."},"cryptoAmount":{"type":"string","description":"Crypto amount to receive, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (`exchangeRate.rate` from the provider), as a decimal string."},"status":{"type":"string","enum":["PROCESSING"]}},"required":["provider","payinId","payoutId","receiptUrl","fiatCurrency","fiatAmount","cryptoCurrency","cryptoAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","status"],"description":"BVNK on-ramp settlement while the crypto payout is in flight."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"payinId":{"type":"string","description":"BVNK pay-in id (fiat leg)."},"payoutId":{"type":"string","description":"BVNK crypto payout uuid."},"receiptUrl":{"type":"string","description":"BVNK receipt/redirect url for the payout (sandbox receipt tracking)."},"fiatCurrency":{"type":"string","description":"Fiat currency."},"fiatAmount":{"type":"string","description":"Fiat amount, as a decimal string."},"cryptoCurrency":{"type":"string","description":"Crypto asset."},"cryptoAmount":{"type":"string","description":"Crypto amount to receive, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (`exchangeRate.rate` from the provider), as a decimal string."},"status":{"type":"string","enum":["COMPLETE"]},"txHash":{"type":"string","description":"On-chain transaction hash."},"cryptoAmountActual":{"type":"string","description":"Actual crypto delivered, as a decimal string."},"fiatAmountActual":{"type":"string","description":"Actual fiat debited, as a decimal string."},"feeAmountActual":{"type":"string","description":"Actual fee charged, as a decimal string."},"feeCurrencyActual":{"type":"string","description":"Actual fee currency."},"networkFeeAmountActual":{"type":"string","description":"Actual network fee charged, as a decimal string."},"networkFeeCurrencyActual":{"type":"string","description":"Actual network fee currency."},"exchangeRateActual":{"type":"string","description":"Actual exchange rate, as a decimal string."}},"required":["provider","payinId","payoutId","receiptUrl","fiatCurrency","fiatAmount","cryptoCurrency","cryptoAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","status","txHash","cryptoAmountActual","fiatAmountActual","feeAmountActual","feeCurrencyActual","networkFeeAmountActual","networkFeeCurrencyActual","exchangeRateActual"],"description":"BVNK on-ramp settlement once the crypto payout completed."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"kind":{"type":"string","enum":["offramp_channel"]},"status":{"type":"string","enum":["COMPLETE"]},"channelId":{"type":"string","description":"BVNK channel uuid the crypto was paid into."},"transactionId":{"type":"string","description":"BVNK channel transaction uuid (event `uuid`)."},"txHash":{"type":"string","description":"Deposit transaction hash (event `hash`)."},"depositAddress":{"type":"string","description":"Channel deposit address the crypto paid."},"cryptoCurrency":{"type":"string","description":"Crypto paid in (event `paidCurrency`)."},"cryptoAmount":{"type":"string","description":"Crypto paid in, as a decimal string."},"fiatCurrency":{"type":"string","description":"Fiat credited to the funding wallet (event `walletCurrency`)."},"fiatAmount":{"type":"string","description":"Fiat credited, as a decimal string."},"displayCurrency":{"type":"string","description":"Display currency (event `displayCurrency`)."},"displayAmount":{"type":"string","description":"Display amount, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency (event `networkFee.paidCurrency`)."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (event `exchangeRate.rate`), as a decimal string."},"sources":{"type":"array","items":{"type":"string"},"description":"Source wallet addresses that paid the channel."}},"required":["provider","kind","status","channelId","transactionId","txHash","depositAddress","cryptoCurrency","cryptoAmount","fiatCurrency","fiatAmount","displayCurrency","displayAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","sources"],"description":"BVNK off-ramp channel settlement economics."}],"description":"Provider-reported ramp settlement economics. BVNK on-ramp transfers carry the PROCESSING variant once the payout is created (create-time estimate plus the receipt url) and the COMPLETE variant once the crypto payout settles (delivery facts and actual amounts), so the dashboard can show the success screen and receipt tracking while the payout is still in flight."},"risk":{"type":"object","properties":{"provider":{"type":"string","description":"Risk scoring provider.","example":"trm"},"score":{"type":"string","description":"Provider-specific risk score.","example":"0.12"},"level":{"type":"string","enum":["low","medium","high","unknown"],"description":"Risk level classification.","example":"low"},"evaluatedAt":{"type":"string","format":"date-time","description":"Timestamp when risk was evaluated.","example":"2025-01-01T00:00:00.000Z"}},"required":["provider","score","level","evaluatedAt"],"description":"Optional risk evaluation for the transfer."},"moneygram":{"type":"object","properties":{"customerId":{"type":"string","description":"MoneyGram profile id for the counterparty; matches the MoneyGram customer_link provider account reference.","example":"mg_profile_example"},"transactionId":{"type":"string","description":"MoneyGram xRamps transaction identifier.","example":"mgi_tx_example"},"mgiTransactionId":{"type":"string","description":"MoneyGram-side transaction identifier used to correlate status webhooks.","example":"mgi_correlation_example"},"referenceNumber":{"type":"string","description":"Cash pickup reference number issued by MoneyGram.","example":"12345678"},"payoutAmount":{"type":"number","description":"Fiat payout amount reported by MoneyGram.","example":25},"payoutStatus":{"type":"string","description":"MoneyGram payout status.","example":"completed"},"cryptoTransferId":{"type":"string","description":"SDP transfer id for the on-chain USDC leg.","example":"xfr_moneygram_crypto_leg_example"},"solanaTxSignature":{"type":"string","description":"Solana transaction signature for the USDC transfer.","example":"sig_moneygram_usdc_transfer_example"},"lastWidgetError":{"type":"string","description":"Last MoneyGram widget error recorded for this transfer.","example":"Transaction cancelled by user"}},"description":"MoneyGram-specific details for MoneyGram ramp transfers."},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","custodyWalletId","providerWalletId","type","kind","direction","status","signature","serializedTx","slot","blockTime","fee","error","rampsMemo","createdAt","updatedAt"],"description":"Transfer transaction record."},"description":"Payment transfer chunk records associated with this batch."}},"required":["batch"],"description":"Transfer batch response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"get":{"tags":["Payments"],"summary":"List transfer batches","operationId":"listPaymentTransferBatches","description":"Lists transfer batches for the authenticated organization or project scope.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Filter by exact source SDP Wallet ID.","example":"cwlt_example"},"required":false,"description":"Filter by exact source SDP Wallet ID.","name":"sourceCustodyWalletId","in":"query"},{"schema":{"type":"string","description":"Filter by token symbol or mint.","example":"SOL"},"required":false,"description":"Filter by token symbol or mint.","name":"token","in":"query"},{"schema":{"type":"string","enum":["pending","processing","confirmed","failed","partially_failed","archived"],"description":"Filter by transfer batch status.","example":"processing"},"required":false,"description":"Filter by transfer batch status.","name":"status","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"Filter by caller-provided batch correlation ID.","example":"payroll_2026_06_30"},"required":false,"description":"Filter by caller-provided batch correlation ID.","name":"externalId","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"description":"Page number (1-based).","example":1},"required":false,"description":"Page number (1-based).","name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Number of batches per page.","example":20},"required":false,"description":"Number of batches per page.","name":"pageSize","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Transfer batch list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Transfer batch identifier.","example":"xbatch_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier for the transfer batch.","example":"prj_example"},"externalId":{"type":"string","nullable":true,"description":"Caller-provided batch correlation ID.","example":"payroll_2026_06_30"},"sourceCustodyWalletId":{"type":"string","nullable":true,"description":"Exact source SDP Wallet ID, or null for unresolved legacy batches.","example":"cwlt_example"},"sourceProviderWalletId":{"type":"string","minLength":1,"description":"Source Provider wallet ID retained as evidence.","example":"privy_wallet_123"},"sourceAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Source custody wallet address.","example":"So11111111111111111111111111111111111111112"},"token":{"type":"string","description":"Token symbol or mint address.","example":"SOL"},"status":{"type":"string","enum":["pending","processing","confirmed","failed","partially_failed","archived"],"description":"Transfer batch status.","example":"processing"},"totalAmount":{"type":"string","nullable":true,"description":"Total requested batch amount in UI units, when computed.","example":"1000.00"},"recipientCount":{"type":"integer","description":"Number of recipient rows in the batch.","example":20},"transactionCount":{"type":"integer","description":"Number of Solana transaction chunks for the batch.","example":1},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","externalId","sourceCustodyWalletId","sourceProviderWalletId","sourceAddress","token","status","totalAmount","recipientCount","transactionCount","createdAt","updatedAt"],"description":"Transfer batch summary."}},"meta":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"description":"Total items."},"page":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Current page number."},"pageSize":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Items per page."},"hasMore":{"type":"boolean","description":"Whether more pages exist."},"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}},"required":["total","page","pageSize","hasMore","requestId"],"description":"Pagination metadata."}},"required":["data","meta"],"description":"Standard paginated response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/transfer-batches/{batchId}":{"get":{"tags":["Payments"],"summary":"Get transfer batch","operationId":"getPaymentTransferBatch","description":"Retrieves a transfer batch with recipient rows and chunk transfer summaries.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Transfer batch identifier.","example":"xbatch_example"},"required":true,"description":"Transfer batch identifier.","name":"batchId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Transfer batch details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"batch":{"type":"object","properties":{"id":{"type":"string","description":"Transfer batch identifier.","example":"xbatch_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier for the transfer batch.","example":"prj_example"},"externalId":{"type":"string","nullable":true,"description":"Caller-provided batch correlation ID.","example":"payroll_2026_06_30"},"sourceCustodyWalletId":{"type":"string","nullable":true,"description":"Exact source SDP Wallet ID, or null for unresolved legacy batches.","example":"cwlt_example"},"sourceProviderWalletId":{"type":"string","minLength":1,"description":"Source Provider wallet ID retained as evidence.","example":"privy_wallet_123"},"sourceAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Source custody wallet address.","example":"So11111111111111111111111111111111111111112"},"token":{"type":"string","description":"Token symbol or mint address.","example":"SOL"},"status":{"type":"string","enum":["pending","processing","confirmed","failed","partially_failed","archived"],"description":"Transfer batch status.","example":"processing"},"totalAmount":{"type":"string","nullable":true,"description":"Total requested batch amount in UI units, when computed.","example":"1000.00"},"recipientCount":{"type":"integer","description":"Number of recipient rows in the batch.","example":20},"transactionCount":{"type":"integer","description":"Number of Solana transaction chunks for the batch.","example":1},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","externalId","sourceCustodyWalletId","sourceProviderWalletId","sourceAddress","token","status","totalAmount","recipientCount","transactionCount","createdAt","updatedAt"],"description":"Transfer batch details."},"recipients":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Transfer batch recipient identifier."},"batchId":{"type":"string","description":"Parent transfer batch identifier."},"transferId":{"type":"string","nullable":true,"minLength":1,"description":"Payment transfer chunk that settled this recipient, once assigned.","example":"xfr_example"},"externalId":{"type":"string","nullable":true,"description":"Caller-provided recipient correlation ID.","example":"payroll_row_001"},"counterpartyId":{"type":"string","description":"Counterparty identifier for the recipient.","example":"cpty_example"},"counterpartyAccountId":{"type":"string","description":"Counterparty account identifier for the recipient.","example":"cpa_example"},"destination":{"type":"string","minLength":32,"maxLength":44,"description":"Resolved Solana destination address.","example":"So11111111111111111111111111111111111111112"},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"status":{"type":"string","enum":["pending","processing","confirmed","failed","archived"],"description":"Transfer batch recipient status.","example":"pending"},"error":{"type":"string","nullable":true,"description":"Recipient-level failure reason, when available."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","batchId","transferId","externalId","counterpartyId","counterpartyAccountId","destination","amount","status","error","createdAt","updatedAt"],"description":"Recipient-level line within a transfer batch."},"description":"Recipient rows for the batch, included on detail responses."},"transfers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Transfer identifier (SDP record ID, not the on-chain signature).","example":"xfr_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"custodyWalletId":{"type":"string","nullable":true,"description":"Exact SDP Wallet ID associated with the persisted transfer, or null for unresolved legacy and observed rows.","example":"cwlt_example"},"providerWalletId":{"type":"string","minLength":1,"description":"Provider wallet ID retained as evidence; not an execution selector.","example":"privy_wallet_123"},"projectId":{"type":"string","minLength":1,"description":"Project identifier for the transfer.","example":"prj_example"},"type":{"type":"string","enum":["transfer","transfer_batch","onramp","offramp"],"description":"Transfer type.","example":"transfer"},"kind":{"type":"string","enum":["pay","confidential_pay","batch_pay","recurring_pay","deposit","request_deposit","onramp","offramp"],"description":"Dashboard transaction kind derived from the transfer type and originating Payments resource."},"direction":{"type":"string","enum":["inbound","outbound"],"description":"Transfer direction.","example":"outbound"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed","awaiting_payment","settling","completed","canceled","expired"],"description":"Transfer status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature (tx id/hash).","example":"sig_example"},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"base64_tx_example"},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedBy":{"type":"object","properties":{"type":{"type":"string","enum":["api_key","user","system"],"description":"Initiator type.","example":"api_key"},"id":{"type":"string","description":"Initiator identifier if applicable."},"display":{"type":"string","description":"Human-friendly label for the initiator."}},"required":["type"],"description":"Initiator that triggered the transfer."},"source":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet address.","example":"So11111111111111111111111111111111111111112"},"destination":{"type":"string","minLength":32,"maxLength":44,"description":"Destination wallet address.","example":"So11111111111111111111111111111111111111112"},"memo":{"type":"string","maxLength":256,"description":"Optional memo for the transfer."},"rampsMemo":{"type":"object","additionalProperties":{"type":"string","minLength":1,"maxLength":256},"description":"Free-form key-value memo for offchain reconciliation of ramp transfers. At most 20 entries.","example":{"invoice":"INV-123","po":"PO-9"}},"token":{"type":"string","description":"Token symbol or mint address."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"provider":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe","hercle","mural"],"description":"Ramp provider for on-ramp and off-ramp transfer records. A retired provider's records keep its id.","example":"moonpay"},"counterpartyId":{"type":"string","description":"Counterparty tied to the transfer record, when available.","example":"cpty_example"},"counterpartyDisplayName":{"type":"string","description":"Current display name of the counterparty tied to the transfer.","example":"Acme Studio"},"providerReference":{"type":"string","description":"Provider quote or transaction reference used for ramp correlation. For BVNK on-ramp transfers this is the provider payout id (uuid) once the payout exists, and the field is omitted before a payout was created.","example":"ramp_quote_example"},"deliveryMode":{"type":"string","enum":["hosted","manual_instructions","session_widget"],"description":"Ramp delivery mode. Hosted flows require the customer to complete a provider-hosted UI; manual instructions require the customer to fund displayed instructions; session widgets use a provider SDK session.","example":"session_widget"},"fiatCurrency":{"type":"string","description":"Fiat currency for the ramp leg.","example":"USD"},"fiatAmount":{"type":"string","description":"Fiat amount for the ramp leg when known.","example":"100.00"},"settlement":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["moonpay"]},"status":{"type":"string","enum":["completed","failed"]},"transactionId":{"type":"string","description":"MoonPay transaction id."},"baseCurrencyCode":{"type":"string","description":"Fiat currency paid."},"baseCurrencyAmount":{"type":"number","description":"Fiat amount paid."},"quoteCurrencyCode":{"type":"string","description":"Crypto currency purchased."},"quoteCurrencyAmount":{"type":"number","description":"Crypto amount purchased."},"feeAmount":{"type":"number","description":"Provider fee."},"extraFeeAmount":{"type":"number","description":"Extra provider fee."},"networkFeeAmount":{"type":"number","description":"Network fee."},"areFeesIncluded":{"type":"boolean","description":"Whether the fees are included in the paid amount."},"usdRate":{"type":"number","description":"USD exchange rate."},"cryptoTransactionId":{"type":"string","description":"On-chain transaction id."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","transactionId","baseCurrencyCode","baseCurrencyAmount","quoteCurrencyCode","quoteCurrencyAmount","feeAmount","extraFeeAmount","networkFeeAmount","areFeesIncluded","usdRate"],"description":"MoonPay on-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["lightspark"]},"status":{"type":"string","enum":["COMPLETED","FAILED","EXPIRED","REFUND_FAILED"]},"sentAmount":{"type":"object","properties":{"amount":{"type":"number"},"currencyCode":{"type":"string"},"decimals":{"type":"number"}},"required":["amount","currencyCode","decimals"],"description":"Amount sent from the payer."},"receivedAmount":{"type":"object","properties":{"amount":{"type":"number"},"currencyCode":{"type":"string"},"decimals":{"type":"number"}},"required":["amount","currencyCode","decimals"],"description":"Amount received by the payee."},"exchangeRate":{"type":"number","description":"Exchange rate."},"fees":{"type":"number","description":"Total fees."},"settledAt":{"type":"string","description":"Settlement timestamp."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","sentAmount","receivedAmount","exchangeRate","fees"],"description":"Lightspark off-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["coinbase"]},"status":{"type":"string","enum":["completed","failed"]},"paymentCurrency":{"type":"string","description":"Fiat currency paid."},"paymentSubtotal":{"type":"string","description":"Fiat subtotal."},"paymentTotal":{"type":"string","description":"Fiat total paid."},"purchaseCurrency":{"type":"string","description":"Crypto currency purchased."},"purchaseAmount":{"type":"string","description":"Crypto amount purchased."},"exchangeRate":{"type":"string","description":"Exchange rate."},"fees":{"type":"array","items":{"type":"object","properties":{"feeAmount":{"type":"string"},"feeCurrency":{"type":"string"},"feeType":{"type":"string"}},"required":["feeAmount","feeCurrency","feeType"]},"description":"Fee legs."},"txHash":{"type":"string","description":"On-chain transaction hash."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","paymentCurrency","paymentSubtotal","paymentTotal","purchaseCurrency","purchaseAmount","exchangeRate","fees"],"description":"Coinbase on-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"payinId":{"type":"string","description":"BVNK pay-in id (fiat leg)."},"payoutId":{"type":"string","description":"BVNK crypto payout uuid."},"receiptUrl":{"type":"string","description":"BVNK receipt/redirect url for the payout (sandbox receipt tracking)."},"fiatCurrency":{"type":"string","description":"Fiat currency."},"fiatAmount":{"type":"string","description":"Fiat amount, as a decimal string."},"cryptoCurrency":{"type":"string","description":"Crypto asset."},"cryptoAmount":{"type":"string","description":"Crypto amount to receive, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (`exchangeRate.rate` from the provider), as a decimal string."},"status":{"type":"string","enum":["PROCESSING"]}},"required":["provider","payinId","payoutId","receiptUrl","fiatCurrency","fiatAmount","cryptoCurrency","cryptoAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","status"],"description":"BVNK on-ramp settlement while the crypto payout is in flight."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"payinId":{"type":"string","description":"BVNK pay-in id (fiat leg)."},"payoutId":{"type":"string","description":"BVNK crypto payout uuid."},"receiptUrl":{"type":"string","description":"BVNK receipt/redirect url for the payout (sandbox receipt tracking)."},"fiatCurrency":{"type":"string","description":"Fiat currency."},"fiatAmount":{"type":"string","description":"Fiat amount, as a decimal string."},"cryptoCurrency":{"type":"string","description":"Crypto asset."},"cryptoAmount":{"type":"string","description":"Crypto amount to receive, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (`exchangeRate.rate` from the provider), as a decimal string."},"status":{"type":"string","enum":["COMPLETE"]},"txHash":{"type":"string","description":"On-chain transaction hash."},"cryptoAmountActual":{"type":"string","description":"Actual crypto delivered, as a decimal string."},"fiatAmountActual":{"type":"string","description":"Actual fiat debited, as a decimal string."},"feeAmountActual":{"type":"string","description":"Actual fee charged, as a decimal string."},"feeCurrencyActual":{"type":"string","description":"Actual fee currency."},"networkFeeAmountActual":{"type":"string","description":"Actual network fee charged, as a decimal string."},"networkFeeCurrencyActual":{"type":"string","description":"Actual network fee currency."},"exchangeRateActual":{"type":"string","description":"Actual exchange rate, as a decimal string."}},"required":["provider","payinId","payoutId","receiptUrl","fiatCurrency","fiatAmount","cryptoCurrency","cryptoAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","status","txHash","cryptoAmountActual","fiatAmountActual","feeAmountActual","feeCurrencyActual","networkFeeAmountActual","networkFeeCurrencyActual","exchangeRateActual"],"description":"BVNK on-ramp settlement once the crypto payout completed."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"kind":{"type":"string","enum":["offramp_channel"]},"status":{"type":"string","enum":["COMPLETE"]},"channelId":{"type":"string","description":"BVNK channel uuid the crypto was paid into."},"transactionId":{"type":"string","description":"BVNK channel transaction uuid (event `uuid`)."},"txHash":{"type":"string","description":"Deposit transaction hash (event `hash`)."},"depositAddress":{"type":"string","description":"Channel deposit address the crypto paid."},"cryptoCurrency":{"type":"string","description":"Crypto paid in (event `paidCurrency`)."},"cryptoAmount":{"type":"string","description":"Crypto paid in, as a decimal string."},"fiatCurrency":{"type":"string","description":"Fiat credited to the funding wallet (event `walletCurrency`)."},"fiatAmount":{"type":"string","description":"Fiat credited, as a decimal string."},"displayCurrency":{"type":"string","description":"Display currency (event `displayCurrency`)."},"displayAmount":{"type":"string","description":"Display amount, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency (event `networkFee.paidCurrency`)."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (event `exchangeRate.rate`), as a decimal string."},"sources":{"type":"array","items":{"type":"string"},"description":"Source wallet addresses that paid the channel."}},"required":["provider","kind","status","channelId","transactionId","txHash","depositAddress","cryptoCurrency","cryptoAmount","fiatCurrency","fiatAmount","displayCurrency","displayAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","sources"],"description":"BVNK off-ramp channel settlement economics."}],"description":"Provider-reported ramp settlement economics. BVNK on-ramp transfers carry the PROCESSING variant once the payout is created (create-time estimate plus the receipt url) and the COMPLETE variant once the crypto payout settles (delivery facts and actual amounts), so the dashboard can show the success screen and receipt tracking while the payout is still in flight."},"risk":{"type":"object","properties":{"provider":{"type":"string","description":"Risk scoring provider.","example":"trm"},"score":{"type":"string","description":"Provider-specific risk score.","example":"0.12"},"level":{"type":"string","enum":["low","medium","high","unknown"],"description":"Risk level classification.","example":"low"},"evaluatedAt":{"type":"string","format":"date-time","description":"Timestamp when risk was evaluated.","example":"2025-01-01T00:00:00.000Z"}},"required":["provider","score","level","evaluatedAt"],"description":"Optional risk evaluation for the transfer."},"moneygram":{"type":"object","properties":{"customerId":{"type":"string","description":"MoneyGram profile id for the counterparty; matches the MoneyGram customer_link provider account reference.","example":"mg_profile_example"},"transactionId":{"type":"string","description":"MoneyGram xRamps transaction identifier.","example":"mgi_tx_example"},"mgiTransactionId":{"type":"string","description":"MoneyGram-side transaction identifier used to correlate status webhooks.","example":"mgi_correlation_example"},"referenceNumber":{"type":"string","description":"Cash pickup reference number issued by MoneyGram.","example":"12345678"},"payoutAmount":{"type":"number","description":"Fiat payout amount reported by MoneyGram.","example":25},"payoutStatus":{"type":"string","description":"MoneyGram payout status.","example":"completed"},"cryptoTransferId":{"type":"string","description":"SDP transfer id for the on-chain USDC leg.","example":"xfr_moneygram_crypto_leg_example"},"solanaTxSignature":{"type":"string","description":"Solana transaction signature for the USDC transfer.","example":"sig_moneygram_usdc_transfer_example"},"lastWidgetError":{"type":"string","description":"Last MoneyGram widget error recorded for this transfer.","example":"Transaction cancelled by user"}},"description":"MoneyGram-specific details for MoneyGram ramp transfers."},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","custodyWalletId","providerWalletId","type","kind","direction","status","signature","serializedTx","slot","blockTime","fee","error","rampsMemo","createdAt","updatedAt"],"description":"Transfer transaction record."},"description":"Payment transfer chunk records associated with this batch."}},"required":["batch"],"description":"Transfer batch response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/recurring-payments":{"post":{"tags":["Payments"],"summary":"Create recurring payment","operationId":"createPaymentRecurringPayment","description":"Creates an SDP-custody outbound recurring payment intent from a custody wallet to a counterparty crypto-wallet account. This stores backend state only; activation and collection are added by follow-up endpoints.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sourceCustodyWalletId":{"type":"string","minLength":1,"description":"Exact SDP Wallet ID (`id` from `GET /v1/wallets`) that will fund the recurring payment. Provider `walletId`, wallet addresses, and the legacy `sourceWalletId` selector are not accepted.","example":"cwlt_example"},"counterpartyId":{"type":"string","minLength":1,"description":"Counterparty receiving the recurring payment.","example":"cpty_example"},"counterpartyAccountId":{"type":"string","minLength":1,"description":"Counterparty crypto_wallet account. It must contain Solana wallet details.","example":"cpa_example"},"token":{"type":"string","description":"Token mint address or well-known symbol. Must be a USD stablecoin (e.g. USDC) or a token issued in this project; native SOL is not supported.","example":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"},"amount":{"type":"string","description":"Recurring payment amount in UI units.","example":"25.00"},"periodHours":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":8760,"description":"Billing period length in hours.","example":720},"firstCollectionAt":{"type":"string","format":"date-time","description":"Optional first collection timestamp. Defaults to activation time when omitted.","example":"2099-01-01T00:00:00.000Z"},"metadataUri":{"type":"string","maxLength":128,"format":"uri","description":"Optional plan metadata URI.","example":"https://example.com/subscriptions/monthly-usdc.json"}},"required":["sourceCustodyWalletId","counterpartyId","counterpartyAccountId","token","amount","periodHours"],"additionalProperties":false,"description":"Creates an SDP-custody outbound recurring payment intent. Activation and collection are added by follow-up endpoints."}}}},"responses":{"201":{"description":"Recurring payment created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"recurringPayment":{"type":"object","properties":{"id":{"type":"string","description":"SDP recurring payment ID.","example":"prp_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"sourceCustodyWalletId":{"type":"string","nullable":true,"description":"Exact source SDP Wallet ID, or null for unresolved legacy records.","example":"cwlt_example"},"sourceProviderWalletId":{"type":"string","minLength":1,"description":"Source Provider wallet ID retained as evidence.","example":"privy_wallet_123"},"sourceAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet address.","example":"So11111111111111111111111111111111111111112"},"counterpartyId":{"type":"string","description":"Counterparty ID.","example":"cpty_example"},"counterpartyAccountId":{"type":"string","description":"Counterparty account ID.","example":"cpa_example"},"destinationAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Counterparty wallet owner address.","example":"So11111111111111111111111111111111111111112"},"destinationTokenAccount":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Derived counterparty token account used for collection.","example":"So11111111111111111111111111111111111111112"},"token":{"type":"string","description":"SPL token mint address."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"periodHours":{"type":"integer","minimum":0,"exclusiveMinimum":true,"example":720},"firstCollectionAt":{"type":"string","nullable":true,"format":"date-time","description":"Requested first collection timestamp.","example":"2025-01-01T00:00:00.000Z"},"nextCollectionDueAt":{"type":"string","nullable":true,"format":"date-time","description":"Next due collection timestamp.","example":"2025-01-01T00:00:00.000Z"},"planId":{"type":"string","nullable":true,"description":"Linked SDP subscription plan ID."},"subscriptionId":{"type":"string","nullable":true,"description":"Linked SDP subscription ID."},"planPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain plan PDA.","example":"So11111111111111111111111111111111111111112"},"planCreatedAt":{"type":"string","nullable":true,"description":"On-chain plan createdAt value as an unsigned integer string."},"planCreationSignature":{"type":"string","nullable":true,"description":"Solana signature for plan creation."},"subscriptionPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription PDA.","example":"So11111111111111111111111111111111111111112"},"subscriptionAuthorityAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription authority address.","example":"So11111111111111111111111111111111111111112"},"authorizationSignature":{"type":"string","nullable":true,"description":"Solana signature for subscription authorization."},"status":{"type":"string","enum":["pending_activation","activating","active","updating","canceling","resuming","paused","canceled","expired"],"description":"Recurring payment status.","example":"active"},"metadataUri":{"type":"string","nullable":true,"description":"Optional plan metadata URI."},"createdBy":{"type":"string","nullable":true,"description":"Creator user ID or API key ID."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","sourceCustodyWalletId","sourceProviderWalletId","sourceAddress","counterpartyId","counterpartyAccountId","destinationAddress","destinationTokenAccount","token","amount","periodHours","firstCollectionAt","nextCollectionDueAt","planId","subscriptionId","planPda","planCreatedAt","planCreationSignature","subscriptionPda","subscriptionAuthorityAddress","authorizationSignature","status","metadataUri","createdBy","createdAt","updatedAt"],"description":"SDP-custody outbound recurring payment record."}},"required":["recurringPayment"],"description":"Recurring payment response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"get":{"tags":["Payments"],"summary":"List recurring payments","operationId":"listPaymentRecurringPayments","description":"Lists SDP-custody outbound recurring payments for the authenticated organization or project scope.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Filter recurring payments by counterparty.","example":"cpty_example"},"required":false,"description":"Filter recurring payments by counterparty.","name":"counterpartyId","in":"query"},{"schema":{"type":"string","enum":["pending_activation","activating","active","updating","canceling","resuming","paused","canceled","expired"],"description":"Recurring payment status.","example":"active"},"required":false,"description":"Recurring payment status.","name":"status","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Recurring payment list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"recurringPayments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"SDP recurring payment ID.","example":"prp_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"sourceCustodyWalletId":{"type":"string","nullable":true,"description":"Exact source SDP Wallet ID, or null for unresolved legacy records.","example":"cwlt_example"},"sourceProviderWalletId":{"type":"string","minLength":1,"description":"Source Provider wallet ID retained as evidence.","example":"privy_wallet_123"},"sourceAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet address.","example":"So11111111111111111111111111111111111111112"},"counterpartyId":{"type":"string","description":"Counterparty ID.","example":"cpty_example"},"counterpartyAccountId":{"type":"string","description":"Counterparty account ID.","example":"cpa_example"},"destinationAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Counterparty wallet owner address.","example":"So11111111111111111111111111111111111111112"},"destinationTokenAccount":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Derived counterparty token account used for collection.","example":"So11111111111111111111111111111111111111112"},"token":{"type":"string","description":"SPL token mint address."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"periodHours":{"type":"integer","minimum":0,"exclusiveMinimum":true,"example":720},"firstCollectionAt":{"type":"string","nullable":true,"format":"date-time","description":"Requested first collection timestamp.","example":"2025-01-01T00:00:00.000Z"},"nextCollectionDueAt":{"type":"string","nullable":true,"format":"date-time","description":"Next due collection timestamp.","example":"2025-01-01T00:00:00.000Z"},"planId":{"type":"string","nullable":true,"description":"Linked SDP subscription plan ID."},"subscriptionId":{"type":"string","nullable":true,"description":"Linked SDP subscription ID."},"planPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain plan PDA.","example":"So11111111111111111111111111111111111111112"},"planCreatedAt":{"type":"string","nullable":true,"description":"On-chain plan createdAt value as an unsigned integer string."},"planCreationSignature":{"type":"string","nullable":true,"description":"Solana signature for plan creation."},"subscriptionPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription PDA.","example":"So11111111111111111111111111111111111111112"},"subscriptionAuthorityAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription authority address.","example":"So11111111111111111111111111111111111111112"},"authorizationSignature":{"type":"string","nullable":true,"description":"Solana signature for subscription authorization."},"status":{"type":"string","enum":["pending_activation","activating","active","updating","canceling","resuming","paused","canceled","expired"],"description":"Recurring payment status.","example":"active"},"metadataUri":{"type":"string","nullable":true,"description":"Optional plan metadata URI."},"createdBy":{"type":"string","nullable":true,"description":"Creator user ID or API key ID."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","sourceCustodyWalletId","sourceProviderWalletId","sourceAddress","counterpartyId","counterpartyAccountId","destinationAddress","destinationTokenAccount","token","amount","periodHours","firstCollectionAt","nextCollectionDueAt","planId","subscriptionId","planPda","planCreatedAt","planCreationSignature","subscriptionPda","subscriptionAuthorityAddress","authorizationSignature","status","metadataUri","createdBy","createdAt","updatedAt"],"description":"SDP-custody outbound recurring payment record."}},"total":{"type":"integer"},"page":{"type":"integer"},"pageSize":{"type":"integer"}},"required":["recurringPayments","total","page","pageSize"],"description":"Recurring payment list response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/recurring-payments/{id}":{"patch":{"tags":["Payments"],"summary":"Update recurring payment","operationId":"updatePaymentRecurringPayment","description":"Updates an SDP-custody recurring payment. Pending records are updated directly. Active metadata and due-date edits are applied in place, while active term, source, destination, or token edits create a replacement Solana subscription, authorize it, cancel the old subscription, and then swap the recurring payment to the replacement records.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"SDP recurring payment record ID.","example":"prp_example"},"required":true,"description":"SDP recurring payment record ID.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sourceCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact replacement SDP Wallet ID (`id` from `GET /v1/wallets`). Provider `walletId`, wallet addresses, and the legacy `sourceWalletId` selector are not accepted. Active replacements require write access to both the old and new source wallets.","example":"cwlt_example"},"counterpartyId":{"type":"string","minLength":1,"description":"Optional replacement counterparty. When provided, counterpartyAccountId is also required.","example":"cpty_example"},"counterpartyAccountId":{"type":"string","minLength":1,"description":"Optional replacement counterparty account. Without counterpartyId, this changes the account for the current counterparty.","example":"cpa_example"},"token":{"type":"string","description":"Optional replacement token. Must be a USD stablecoin (e.g. USDC) or a token issued in this project; native SOL is not supported.","example":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"},"amount":{"type":"string","description":"Optional replacement amount in UI units.","example":"25.00"},"periodHours":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":8760,"description":"Optional replacement billing period length in hours. Active term changes create a replacement on-chain subscription.","example":720},"firstCollectionAt":{"type":"string","nullable":true,"format":"date-time","description":"Pending-only first collection timestamp. Use null to clear the pending first collection override.","example":"2099-01-01T00:00:00.000Z"},"nextCollectionDueAt":{"type":"string","nullable":true,"format":"date-time","description":"Active-only next due timestamp. Use null to reset to the earliest eligible collection time.","example":"2099-02-01T00:00:00.000Z"},"metadataUri":{"type":"string","nullable":true,"maxLength":128,"format":"uri","description":"Optional plan metadata URI. Use null to clear it. Active metadata-only edits update the existing on-chain plan in place.","example":"https://example.com/subscriptions/monthly-usdc.json"}},"additionalProperties":false,"description":"Updates a recurring payment. Pending payments are edited directly. Active metadata or due-date updates are applied in place, while active term/source/destination/token updates create and authorize a replacement subscription before canceling the old one."}}}},"responses":{"200":{"description":"Recurring payment updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"recurringPayment":{"type":"object","properties":{"id":{"type":"string","description":"SDP recurring payment ID.","example":"prp_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"sourceCustodyWalletId":{"type":"string","nullable":true,"description":"Exact source SDP Wallet ID, or null for unresolved legacy records.","example":"cwlt_example"},"sourceProviderWalletId":{"type":"string","minLength":1,"description":"Source Provider wallet ID retained as evidence.","example":"privy_wallet_123"},"sourceAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet address.","example":"So11111111111111111111111111111111111111112"},"counterpartyId":{"type":"string","description":"Counterparty ID.","example":"cpty_example"},"counterpartyAccountId":{"type":"string","description":"Counterparty account ID.","example":"cpa_example"},"destinationAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Counterparty wallet owner address.","example":"So11111111111111111111111111111111111111112"},"destinationTokenAccount":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Derived counterparty token account used for collection.","example":"So11111111111111111111111111111111111111112"},"token":{"type":"string","description":"SPL token mint address."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"periodHours":{"type":"integer","minimum":0,"exclusiveMinimum":true,"example":720},"firstCollectionAt":{"type":"string","nullable":true,"format":"date-time","description":"Requested first collection timestamp.","example":"2025-01-01T00:00:00.000Z"},"nextCollectionDueAt":{"type":"string","nullable":true,"format":"date-time","description":"Next due collection timestamp.","example":"2025-01-01T00:00:00.000Z"},"planId":{"type":"string","nullable":true,"description":"Linked SDP subscription plan ID."},"subscriptionId":{"type":"string","nullable":true,"description":"Linked SDP subscription ID."},"planPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain plan PDA.","example":"So11111111111111111111111111111111111111112"},"planCreatedAt":{"type":"string","nullable":true,"description":"On-chain plan createdAt value as an unsigned integer string."},"planCreationSignature":{"type":"string","nullable":true,"description":"Solana signature for plan creation."},"subscriptionPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription PDA.","example":"So11111111111111111111111111111111111111112"},"subscriptionAuthorityAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription authority address.","example":"So11111111111111111111111111111111111111112"},"authorizationSignature":{"type":"string","nullable":true,"description":"Solana signature for subscription authorization."},"status":{"type":"string","enum":["pending_activation","activating","active","updating","canceling","resuming","paused","canceled","expired"],"description":"Recurring payment status.","example":"active"},"metadataUri":{"type":"string","nullable":true,"description":"Optional plan metadata URI."},"createdBy":{"type":"string","nullable":true,"description":"Creator user ID or API key ID."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","sourceCustodyWalletId","sourceProviderWalletId","sourceAddress","counterpartyId","counterpartyAccountId","destinationAddress","destinationTokenAccount","token","amount","periodHours","firstCollectionAt","nextCollectionDueAt","planId","subscriptionId","planPda","planCreatedAt","planCreationSignature","subscriptionPda","subscriptionAuthorityAddress","authorizationSignature","status","metadataUri","createdBy","createdAt","updatedAt"],"description":"SDP-custody outbound recurring payment record."}},"required":["recurringPayment"],"description":"Recurring payment response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"get":{"tags":["Payments"],"summary":"Get recurring payment","operationId":"getPaymentRecurringPayment","description":"Retrieves an SDP-custody outbound recurring payment record.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"SDP recurring payment record ID.","example":"prp_example"},"required":true,"description":"SDP recurring payment record ID.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Recurring payment","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"recurringPayment":{"type":"object","properties":{"id":{"type":"string","description":"SDP recurring payment ID.","example":"prp_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"sourceCustodyWalletId":{"type":"string","nullable":true,"description":"Exact source SDP Wallet ID, or null for unresolved legacy records.","example":"cwlt_example"},"sourceProviderWalletId":{"type":"string","minLength":1,"description":"Source Provider wallet ID retained as evidence.","example":"privy_wallet_123"},"sourceAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet address.","example":"So11111111111111111111111111111111111111112"},"counterpartyId":{"type":"string","description":"Counterparty ID.","example":"cpty_example"},"counterpartyAccountId":{"type":"string","description":"Counterparty account ID.","example":"cpa_example"},"destinationAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Counterparty wallet owner address.","example":"So11111111111111111111111111111111111111112"},"destinationTokenAccount":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Derived counterparty token account used for collection.","example":"So11111111111111111111111111111111111111112"},"token":{"type":"string","description":"SPL token mint address."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"periodHours":{"type":"integer","minimum":0,"exclusiveMinimum":true,"example":720},"firstCollectionAt":{"type":"string","nullable":true,"format":"date-time","description":"Requested first collection timestamp.","example":"2025-01-01T00:00:00.000Z"},"nextCollectionDueAt":{"type":"string","nullable":true,"format":"date-time","description":"Next due collection timestamp.","example":"2025-01-01T00:00:00.000Z"},"planId":{"type":"string","nullable":true,"description":"Linked SDP subscription plan ID."},"subscriptionId":{"type":"string","nullable":true,"description":"Linked SDP subscription ID."},"planPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain plan PDA.","example":"So11111111111111111111111111111111111111112"},"planCreatedAt":{"type":"string","nullable":true,"description":"On-chain plan createdAt value as an unsigned integer string."},"planCreationSignature":{"type":"string","nullable":true,"description":"Solana signature for plan creation."},"subscriptionPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription PDA.","example":"So11111111111111111111111111111111111111112"},"subscriptionAuthorityAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription authority address.","example":"So11111111111111111111111111111111111111112"},"authorizationSignature":{"type":"string","nullable":true,"description":"Solana signature for subscription authorization."},"status":{"type":"string","enum":["pending_activation","activating","active","updating","canceling","resuming","paused","canceled","expired"],"description":"Recurring payment status.","example":"active"},"metadataUri":{"type":"string","nullable":true,"description":"Optional plan metadata URI."},"createdBy":{"type":"string","nullable":true,"description":"Creator user ID or API key ID."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","sourceCustodyWalletId","sourceProviderWalletId","sourceAddress","counterpartyId","counterpartyAccountId","destinationAddress","destinationTokenAccount","token","amount","periodHours","firstCollectionAt","nextCollectionDueAt","planId","subscriptionId","planPda","planCreatedAt","planCreationSignature","subscriptionPda","subscriptionAuthorityAddress","authorizationSignature","status","metadataUri","createdBy","createdAt","updatedAt"],"description":"SDP-custody outbound recurring payment record."}},"required":["recurringPayment"],"description":"Recurring payment response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/recurring-payments/{id}/activate":{"post":{"tags":["Payments"],"summary":"Activate recurring payment","operationId":"activatePaymentRecurringPayment","description":"Activates a pending SDP-custody recurring payment by creating the Solana subscriptions plan, authorizing the subscription, and storing the resulting on-chain identifiers and signatures.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"SDP recurring payment record ID.","example":"prp_example"},"required":true,"description":"SDP recurring payment record ID.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Recurring payment activated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"recurringPayment":{"type":"object","properties":{"id":{"type":"string","description":"SDP recurring payment ID.","example":"prp_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"sourceCustodyWalletId":{"type":"string","nullable":true,"description":"Exact source SDP Wallet ID, or null for unresolved legacy records.","example":"cwlt_example"},"sourceProviderWalletId":{"type":"string","minLength":1,"description":"Source Provider wallet ID retained as evidence.","example":"privy_wallet_123"},"sourceAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet address.","example":"So11111111111111111111111111111111111111112"},"counterpartyId":{"type":"string","description":"Counterparty ID.","example":"cpty_example"},"counterpartyAccountId":{"type":"string","description":"Counterparty account ID.","example":"cpa_example"},"destinationAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Counterparty wallet owner address.","example":"So11111111111111111111111111111111111111112"},"destinationTokenAccount":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Derived counterparty token account used for collection.","example":"So11111111111111111111111111111111111111112"},"token":{"type":"string","description":"SPL token mint address."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"periodHours":{"type":"integer","minimum":0,"exclusiveMinimum":true,"example":720},"firstCollectionAt":{"type":"string","nullable":true,"format":"date-time","description":"Requested first collection timestamp.","example":"2025-01-01T00:00:00.000Z"},"nextCollectionDueAt":{"type":"string","nullable":true,"format":"date-time","description":"Next due collection timestamp.","example":"2025-01-01T00:00:00.000Z"},"planId":{"type":"string","nullable":true,"description":"Linked SDP subscription plan ID."},"subscriptionId":{"type":"string","nullable":true,"description":"Linked SDP subscription ID."},"planPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain plan PDA.","example":"So11111111111111111111111111111111111111112"},"planCreatedAt":{"type":"string","nullable":true,"description":"On-chain plan createdAt value as an unsigned integer string."},"planCreationSignature":{"type":"string","nullable":true,"description":"Solana signature for plan creation."},"subscriptionPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription PDA.","example":"So11111111111111111111111111111111111111112"},"subscriptionAuthorityAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription authority address.","example":"So11111111111111111111111111111111111111112"},"authorizationSignature":{"type":"string","nullable":true,"description":"Solana signature for subscription authorization."},"status":{"type":"string","enum":["pending_activation","activating","active","updating","canceling","resuming","paused","canceled","expired"],"description":"Recurring payment status.","example":"active"},"metadataUri":{"type":"string","nullable":true,"description":"Optional plan metadata URI."},"createdBy":{"type":"string","nullable":true,"description":"Creator user ID or API key ID."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","sourceCustodyWalletId","sourceProviderWalletId","sourceAddress","counterpartyId","counterpartyAccountId","destinationAddress","destinationTokenAccount","token","amount","periodHours","firstCollectionAt","nextCollectionDueAt","planId","subscriptionId","planPda","planCreatedAt","planCreationSignature","subscriptionPda","subscriptionAuthorityAddress","authorizationSignature","status","metadataUri","createdBy","createdAt","updatedAt"],"description":"SDP-custody outbound recurring payment record."}},"required":["recurringPayment"],"description":"Recurring payment response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/recurring-payments/{id}/cancel":{"post":{"tags":["Payments"],"summary":"Cancel recurring payment","operationId":"cancelPaymentRecurringPayment","description":"Stops future collections for an active SDP-custody recurring payment by submitting the Solana subscriptions cancellation transaction. A collection already in processing may still settle independently.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"SDP recurring payment record ID.","example":"prp_example"},"required":true,"description":"SDP recurring payment record ID.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Recurring payment canceled","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"recurringPayment":{"type":"object","properties":{"id":{"type":"string","description":"SDP recurring payment ID.","example":"prp_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"sourceCustodyWalletId":{"type":"string","nullable":true,"description":"Exact source SDP Wallet ID, or null for unresolved legacy records.","example":"cwlt_example"},"sourceProviderWalletId":{"type":"string","minLength":1,"description":"Source Provider wallet ID retained as evidence.","example":"privy_wallet_123"},"sourceAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet address.","example":"So11111111111111111111111111111111111111112"},"counterpartyId":{"type":"string","description":"Counterparty ID.","example":"cpty_example"},"counterpartyAccountId":{"type":"string","description":"Counterparty account ID.","example":"cpa_example"},"destinationAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Counterparty wallet owner address.","example":"So11111111111111111111111111111111111111112"},"destinationTokenAccount":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Derived counterparty token account used for collection.","example":"So11111111111111111111111111111111111111112"},"token":{"type":"string","description":"SPL token mint address."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"periodHours":{"type":"integer","minimum":0,"exclusiveMinimum":true,"example":720},"firstCollectionAt":{"type":"string","nullable":true,"format":"date-time","description":"Requested first collection timestamp.","example":"2025-01-01T00:00:00.000Z"},"nextCollectionDueAt":{"type":"string","nullable":true,"format":"date-time","description":"Next due collection timestamp.","example":"2025-01-01T00:00:00.000Z"},"planId":{"type":"string","nullable":true,"description":"Linked SDP subscription plan ID."},"subscriptionId":{"type":"string","nullable":true,"description":"Linked SDP subscription ID."},"planPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain plan PDA.","example":"So11111111111111111111111111111111111111112"},"planCreatedAt":{"type":"string","nullable":true,"description":"On-chain plan createdAt value as an unsigned integer string."},"planCreationSignature":{"type":"string","nullable":true,"description":"Solana signature for plan creation."},"subscriptionPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription PDA.","example":"So11111111111111111111111111111111111111112"},"subscriptionAuthorityAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription authority address.","example":"So11111111111111111111111111111111111111112"},"authorizationSignature":{"type":"string","nullable":true,"description":"Solana signature for subscription authorization."},"status":{"type":"string","enum":["pending_activation","activating","active","updating","canceling","resuming","paused","canceled","expired"],"description":"Recurring payment status.","example":"active"},"metadataUri":{"type":"string","nullable":true,"description":"Optional plan metadata URI."},"createdBy":{"type":"string","nullable":true,"description":"Creator user ID or API key ID."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","sourceCustodyWalletId","sourceProviderWalletId","sourceAddress","counterpartyId","counterpartyAccountId","destinationAddress","destinationTokenAccount","token","amount","periodHours","firstCollectionAt","nextCollectionDueAt","planId","subscriptionId","planPda","planCreatedAt","planCreationSignature","subscriptionPda","subscriptionAuthorityAddress","authorizationSignature","status","metadataUri","createdBy","createdAt","updatedAt"],"description":"SDP-custody outbound recurring payment record."}},"required":["recurringPayment"],"description":"Recurring payment response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/recurring-payments/{id}/collect":{"post":{"tags":["Payments"],"summary":"Collect recurring payment","operationId":"collectPaymentRecurringPayment","description":"Manually starts a due active SDP-custody recurring payment collection, creating a linked payment transfer and collection attempt. If submission cannot be confirmed immediately, a 200 response returns the same transfer as `processing` with its known signature; reconciliation settles it, and the next due time advances only after exact on-chain confirmation.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"SDP recurring payment record ID.","example":"prp_example"},"required":true,"description":"SDP recurring payment record ID.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Recurring payment collection result","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"recurringPayment":{"type":"object","properties":{"id":{"type":"string","description":"SDP recurring payment ID.","example":"prp_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"sourceCustodyWalletId":{"type":"string","nullable":true,"description":"Exact source SDP Wallet ID, or null for unresolved legacy records.","example":"cwlt_example"},"sourceProviderWalletId":{"type":"string","minLength":1,"description":"Source Provider wallet ID retained as evidence.","example":"privy_wallet_123"},"sourceAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet address.","example":"So11111111111111111111111111111111111111112"},"counterpartyId":{"type":"string","description":"Counterparty ID.","example":"cpty_example"},"counterpartyAccountId":{"type":"string","description":"Counterparty account ID.","example":"cpa_example"},"destinationAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Counterparty wallet owner address.","example":"So11111111111111111111111111111111111111112"},"destinationTokenAccount":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Derived counterparty token account used for collection.","example":"So11111111111111111111111111111111111111112"},"token":{"type":"string","description":"SPL token mint address."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"periodHours":{"type":"integer","minimum":0,"exclusiveMinimum":true,"example":720},"firstCollectionAt":{"type":"string","nullable":true,"format":"date-time","description":"Requested first collection timestamp.","example":"2025-01-01T00:00:00.000Z"},"nextCollectionDueAt":{"type":"string","nullable":true,"format":"date-time","description":"Next due collection timestamp.","example":"2025-01-01T00:00:00.000Z"},"planId":{"type":"string","nullable":true,"description":"Linked SDP subscription plan ID."},"subscriptionId":{"type":"string","nullable":true,"description":"Linked SDP subscription ID."},"planPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain plan PDA.","example":"So11111111111111111111111111111111111111112"},"planCreatedAt":{"type":"string","nullable":true,"description":"On-chain plan createdAt value as an unsigned integer string."},"planCreationSignature":{"type":"string","nullable":true,"description":"Solana signature for plan creation."},"subscriptionPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription PDA.","example":"So11111111111111111111111111111111111111112"},"subscriptionAuthorityAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription authority address.","example":"So11111111111111111111111111111111111111112"},"authorizationSignature":{"type":"string","nullable":true,"description":"Solana signature for subscription authorization."},"status":{"type":"string","enum":["pending_activation","activating","active","updating","canceling","resuming","paused","canceled","expired"],"description":"Recurring payment status.","example":"active"},"metadataUri":{"type":"string","nullable":true,"description":"Optional plan metadata URI."},"createdBy":{"type":"string","nullable":true,"description":"Creator user ID or API key ID."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","sourceCustodyWalletId","sourceProviderWalletId","sourceAddress","counterpartyId","counterpartyAccountId","destinationAddress","destinationTokenAccount","token","amount","periodHours","firstCollectionAt","nextCollectionDueAt","planId","subscriptionId","planPda","planCreatedAt","planCreationSignature","subscriptionPda","subscriptionAuthorityAddress","authorizationSignature","status","metadataUri","createdBy","createdAt","updatedAt"],"description":"SDP-custody outbound recurring payment record."},"collectionAttempt":{"type":"object","properties":{"id":{"type":"string","description":"Collection attempt ID.","example":"psca_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"subscriptionId":{"type":"string","description":"Subscription ID."},"transferId":{"type":"string","nullable":true,"minLength":1,"description":"Payment transfer record ID when linked.","example":"xfr_example"},"token":{"type":"string","description":"Token mint or normalized token identifier."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"dueAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"attemptedAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"status":{"type":"string","enum":["pending","processing","confirmed","failed","skipped"],"description":"Collection attempt status.","example":"pending"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature."},"error":{"type":"string","nullable":true,"description":"Collection error, if any."},"metadata":{"oneOf":[{"type":"object","properties":{"recurringPaymentId":{"type":"string"},"initiatedByKeyId":{"type":"string","nullable":true},"source":{"type":"string","enum":["manual"]}},"required":["recurringPaymentId","initiatedByKeyId","source"]},{"type":"object","properties":{"recurringPaymentId":{"type":"string"},"initiatedByKeyId":{"type":"string","nullable":true},"source":{"type":"string","enum":["automated"]}},"required":["recurringPaymentId","initiatedByKeyId","source"]},{"type":"object","properties":{"recurringPaymentId":{"type":"string"},"initiatedByKeyId":{"type":"string","nullable":true},"source":{"type":"string","enum":["retry"]},"initialSource":{"type":"string","enum":["manual","automated"]},"transferId":{"type":"string","nullable":true},"error":{"type":"string"},"retryAfterAt":{"type":"string"}},"required":["recurringPaymentId","initiatedByKeyId","source","initialSource","transferId","error","retryAfterAt"]},{"type":"object","properties":{"recurringPaymentId":{"type":"string"},"initiatedByKeyId":{"type":"string","nullable":true},"source":{"type":"string","enum":["linked_transfer"]},"initialSource":{"type":"string","enum":["manual","automated"]},"transferId":{"type":"string"}},"required":["recurringPaymentId","initiatedByKeyId","source","initialSource","transferId"]}],"description":"Provider/job metadata for the attempt."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","subscriptionId","transferId","token","amount","dueAt","attemptedAt","status","signature","error","metadata","createdAt","updatedAt"],"description":"Recurring payment collection attempt record."},"transfer":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Transfer identifier (SDP record ID, not the on-chain signature).","example":"xfr_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"custodyWalletId":{"type":"string","nullable":true,"description":"Exact SDP Wallet ID associated with the persisted transfer, or null for unresolved legacy and observed rows.","example":"cwlt_example"},"providerWalletId":{"type":"string","minLength":1,"description":"Provider wallet ID retained as evidence; not an execution selector.","example":"privy_wallet_123"},"projectId":{"type":"string","minLength":1,"description":"Project identifier for the transfer.","example":"prj_example"},"type":{"type":"string","enum":["transfer","transfer_batch","onramp","offramp"],"description":"Transfer type.","example":"transfer"},"kind":{"type":"string","enum":["pay","confidential_pay","batch_pay","recurring_pay","deposit","request_deposit","onramp","offramp"],"description":"Dashboard transaction kind derived from the transfer type and originating Payments resource."},"direction":{"type":"string","enum":["inbound","outbound"],"description":"Transfer direction.","example":"outbound"},"status":{"type":"string","enum":["pending","processing","confirmed","finalized","failed","awaiting_payment","settling","completed","canceled","expired"],"description":"Transfer status.","example":"confirmed"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature (tx id/hash).","example":"sig_example"},"serializedTx":{"type":"string","nullable":true,"minLength":1,"description":"Base64-encoded transaction payload, if available.","example":"base64_tx_example"},"slot":{"type":"integer","nullable":true,"description":"Slot number, if confirmed.","example":123456},"blockTime":{"type":"string","nullable":true,"format":"date-time","description":"Block time, if confirmed.","example":"2025-01-01T00:00:00.000Z"},"fee":{"type":"integer","nullable":true,"description":"Transaction fee in lamports.","example":5000},"error":{"type":"string","nullable":true,"description":"Error message if the transaction failed.","example":"Signature failed"},"initiatedBy":{"type":"object","properties":{"type":{"type":"string","enum":["api_key","user","system"],"description":"Initiator type.","example":"api_key"},"id":{"type":"string","description":"Initiator identifier if applicable."},"display":{"type":"string","description":"Human-friendly label for the initiator."}},"required":["type"],"description":"Initiator that triggered the transfer."},"source":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet address.","example":"So11111111111111111111111111111111111111112"},"destination":{"type":"string","minLength":32,"maxLength":44,"description":"Destination wallet address.","example":"So11111111111111111111111111111111111111112"},"memo":{"type":"string","maxLength":256,"description":"Optional memo for the transfer."},"rampsMemo":{"type":"object","additionalProperties":{"type":"string","minLength":1,"maxLength":256},"description":"Free-form key-value memo for offchain reconciliation of ramp transfers. At most 20 entries.","example":{"invoice":"INV-123","po":"PO-9"}},"token":{"type":"string","description":"Token symbol or mint address."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"provider":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe","hercle","mural"],"description":"Ramp provider for on-ramp and off-ramp transfer records. A retired provider's records keep its id.","example":"moonpay"},"counterpartyId":{"type":"string","description":"Counterparty tied to the transfer record, when available.","example":"cpty_example"},"counterpartyDisplayName":{"type":"string","description":"Current display name of the counterparty tied to the transfer.","example":"Acme Studio"},"providerReference":{"type":"string","description":"Provider quote or transaction reference used for ramp correlation. For BVNK on-ramp transfers this is the provider payout id (uuid) once the payout exists, and the field is omitted before a payout was created.","example":"ramp_quote_example"},"deliveryMode":{"type":"string","enum":["hosted","manual_instructions","session_widget"],"description":"Ramp delivery mode. Hosted flows require the customer to complete a provider-hosted UI; manual instructions require the customer to fund displayed instructions; session widgets use a provider SDK session.","example":"session_widget"},"fiatCurrency":{"type":"string","description":"Fiat currency for the ramp leg.","example":"USD"},"fiatAmount":{"type":"string","description":"Fiat amount for the ramp leg when known.","example":"100.00"},"settlement":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["moonpay"]},"status":{"type":"string","enum":["completed","failed"]},"transactionId":{"type":"string","description":"MoonPay transaction id."},"baseCurrencyCode":{"type":"string","description":"Fiat currency paid."},"baseCurrencyAmount":{"type":"number","description":"Fiat amount paid."},"quoteCurrencyCode":{"type":"string","description":"Crypto currency purchased."},"quoteCurrencyAmount":{"type":"number","description":"Crypto amount purchased."},"feeAmount":{"type":"number","description":"Provider fee."},"extraFeeAmount":{"type":"number","description":"Extra provider fee."},"networkFeeAmount":{"type":"number","description":"Network fee."},"areFeesIncluded":{"type":"boolean","description":"Whether the fees are included in the paid amount."},"usdRate":{"type":"number","description":"USD exchange rate."},"cryptoTransactionId":{"type":"string","description":"On-chain transaction id."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","transactionId","baseCurrencyCode","baseCurrencyAmount","quoteCurrencyCode","quoteCurrencyAmount","feeAmount","extraFeeAmount","networkFeeAmount","areFeesIncluded","usdRate"],"description":"MoonPay on-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["lightspark"]},"status":{"type":"string","enum":["COMPLETED","FAILED","EXPIRED","REFUND_FAILED"]},"sentAmount":{"type":"object","properties":{"amount":{"type":"number"},"currencyCode":{"type":"string"},"decimals":{"type":"number"}},"required":["amount","currencyCode","decimals"],"description":"Amount sent from the payer."},"receivedAmount":{"type":"object","properties":{"amount":{"type":"number"},"currencyCode":{"type":"string"},"decimals":{"type":"number"}},"required":["amount","currencyCode","decimals"],"description":"Amount received by the payee."},"exchangeRate":{"type":"number","description":"Exchange rate."},"fees":{"type":"number","description":"Total fees."},"settledAt":{"type":"string","description":"Settlement timestamp."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","sentAmount","receivedAmount","exchangeRate","fees"],"description":"Lightspark off-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["coinbase"]},"status":{"type":"string","enum":["completed","failed"]},"paymentCurrency":{"type":"string","description":"Fiat currency paid."},"paymentSubtotal":{"type":"string","description":"Fiat subtotal."},"paymentTotal":{"type":"string","description":"Fiat total paid."},"purchaseCurrency":{"type":"string","description":"Crypto currency purchased."},"purchaseAmount":{"type":"string","description":"Crypto amount purchased."},"exchangeRate":{"type":"string","description":"Exchange rate."},"fees":{"type":"array","items":{"type":"object","properties":{"feeAmount":{"type":"string"},"feeCurrency":{"type":"string"},"feeType":{"type":"string"}},"required":["feeAmount","feeCurrency","feeType"]},"description":"Fee legs."},"txHash":{"type":"string","description":"On-chain transaction hash."},"failureReason":{"type":"string","description":"Provider failure reason."}},"required":["provider","status","paymentCurrency","paymentSubtotal","paymentTotal","purchaseCurrency","purchaseAmount","exchangeRate","fees"],"description":"Coinbase on-ramp settlement economics."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"payinId":{"type":"string","description":"BVNK pay-in id (fiat leg)."},"payoutId":{"type":"string","description":"BVNK crypto payout uuid."},"receiptUrl":{"type":"string","description":"BVNK receipt/redirect url for the payout (sandbox receipt tracking)."},"fiatCurrency":{"type":"string","description":"Fiat currency."},"fiatAmount":{"type":"string","description":"Fiat amount, as a decimal string."},"cryptoCurrency":{"type":"string","description":"Crypto asset."},"cryptoAmount":{"type":"string","description":"Crypto amount to receive, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (`exchangeRate.rate` from the provider), as a decimal string."},"status":{"type":"string","enum":["PROCESSING"]}},"required":["provider","payinId","payoutId","receiptUrl","fiatCurrency","fiatAmount","cryptoCurrency","cryptoAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","status"],"description":"BVNK on-ramp settlement while the crypto payout is in flight."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"payinId":{"type":"string","description":"BVNK pay-in id (fiat leg)."},"payoutId":{"type":"string","description":"BVNK crypto payout uuid."},"receiptUrl":{"type":"string","description":"BVNK receipt/redirect url for the payout (sandbox receipt tracking)."},"fiatCurrency":{"type":"string","description":"Fiat currency."},"fiatAmount":{"type":"string","description":"Fiat amount, as a decimal string."},"cryptoCurrency":{"type":"string","description":"Crypto asset."},"cryptoAmount":{"type":"string","description":"Crypto amount to receive, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (`exchangeRate.rate` from the provider), as a decimal string."},"status":{"type":"string","enum":["COMPLETE"]},"txHash":{"type":"string","description":"On-chain transaction hash."},"cryptoAmountActual":{"type":"string","description":"Actual crypto delivered, as a decimal string."},"fiatAmountActual":{"type":"string","description":"Actual fiat debited, as a decimal string."},"feeAmountActual":{"type":"string","description":"Actual fee charged, as a decimal string."},"feeCurrencyActual":{"type":"string","description":"Actual fee currency."},"networkFeeAmountActual":{"type":"string","description":"Actual network fee charged, as a decimal string."},"networkFeeCurrencyActual":{"type":"string","description":"Actual network fee currency."},"exchangeRateActual":{"type":"string","description":"Actual exchange rate, as a decimal string."}},"required":["provider","payinId","payoutId","receiptUrl","fiatCurrency","fiatAmount","cryptoCurrency","cryptoAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","status","txHash","cryptoAmountActual","fiatAmountActual","feeAmountActual","feeCurrencyActual","networkFeeAmountActual","networkFeeCurrencyActual","exchangeRateActual"],"description":"BVNK on-ramp settlement once the crypto payout completed."},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"kind":{"type":"string","enum":["offramp_channel"]},"status":{"type":"string","enum":["COMPLETE"]},"channelId":{"type":"string","description":"BVNK channel uuid the crypto was paid into."},"transactionId":{"type":"string","description":"BVNK channel transaction uuid (event `uuid`)."},"txHash":{"type":"string","description":"Deposit transaction hash (event `hash`)."},"depositAddress":{"type":"string","description":"Channel deposit address the crypto paid."},"cryptoCurrency":{"type":"string","description":"Crypto paid in (event `paidCurrency`)."},"cryptoAmount":{"type":"string","description":"Crypto paid in, as a decimal string."},"fiatCurrency":{"type":"string","description":"Fiat credited to the funding wallet (event `walletCurrency`)."},"fiatAmount":{"type":"string","description":"Fiat credited, as a decimal string."},"displayCurrency":{"type":"string","description":"Display currency (event `displayCurrency`)."},"displayAmount":{"type":"string","description":"Display amount, as a decimal string."},"feeCurrency":{"type":"string","description":"Fee currency."},"feeAmount":{"type":"string","description":"Fee amount, as a decimal string."},"networkFeeCurrency":{"type":"string","description":"Network fee currency (event `networkFee.paidCurrency`)."},"networkFeeAmount":{"type":"string","description":"Network fee amount, as a decimal string."},"exchangeRate":{"type":"string","description":"Exchange rate (event `exchangeRate.rate`), as a decimal string."},"sources":{"type":"array","items":{"type":"string"},"description":"Source wallet addresses that paid the channel."}},"required":["provider","kind","status","channelId","transactionId","txHash","depositAddress","cryptoCurrency","cryptoAmount","fiatCurrency","fiatAmount","displayCurrency","displayAmount","feeCurrency","feeAmount","networkFeeCurrency","networkFeeAmount","exchangeRate","sources"],"description":"BVNK off-ramp channel settlement economics."}],"description":"Provider-reported ramp settlement economics. BVNK on-ramp transfers carry the PROCESSING variant once the payout is created (create-time estimate plus the receipt url) and the COMPLETE variant once the crypto payout settles (delivery facts and actual amounts), so the dashboard can show the success screen and receipt tracking while the payout is still in flight."},"risk":{"type":"object","properties":{"provider":{"type":"string","description":"Risk scoring provider.","example":"trm"},"score":{"type":"string","description":"Provider-specific risk score.","example":"0.12"},"level":{"type":"string","enum":["low","medium","high","unknown"],"description":"Risk level classification.","example":"low"},"evaluatedAt":{"type":"string","format":"date-time","description":"Timestamp when risk was evaluated.","example":"2025-01-01T00:00:00.000Z"}},"required":["provider","score","level","evaluatedAt"],"description":"Optional risk evaluation for the transfer."},"moneygram":{"type":"object","properties":{"customerId":{"type":"string","description":"MoneyGram profile id for the counterparty; matches the MoneyGram customer_link provider account reference.","example":"mg_profile_example"},"transactionId":{"type":"string","description":"MoneyGram xRamps transaction identifier.","example":"mgi_tx_example"},"mgiTransactionId":{"type":"string","description":"MoneyGram-side transaction identifier used to correlate status webhooks.","example":"mgi_correlation_example"},"referenceNumber":{"type":"string","description":"Cash pickup reference number issued by MoneyGram.","example":"12345678"},"payoutAmount":{"type":"number","description":"Fiat payout amount reported by MoneyGram.","example":25},"payoutStatus":{"type":"string","description":"MoneyGram payout status.","example":"completed"},"cryptoTransferId":{"type":"string","description":"SDP transfer id for the on-chain USDC leg.","example":"xfr_moneygram_crypto_leg_example"},"solanaTxSignature":{"type":"string","description":"Solana transaction signature for the USDC transfer.","example":"sig_moneygram_usdc_transfer_example"},"lastWidgetError":{"type":"string","description":"Last MoneyGram widget error recorded for this transfer.","example":"Transaction cancelled by user"}},"description":"MoneyGram-specific details for MoneyGram ramp transfers."},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","custodyWalletId","providerWalletId","type","kind","direction","status","signature","serializedTx","slot","blockTime","fee","error","rampsMemo","createdAt","updatedAt"],"description":"Transfer transaction record."}},"required":["recurringPayment","collectionAttempt","transfer"],"description":"Recurring payment collection response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/recurring-payments/{id}/resume":{"post":{"tags":["Payments"],"summary":"Resume recurring payment","operationId":"resumePaymentRecurringPayment","description":"Resumes a canceled SDP-custody recurring payment by submitting the Solana subscriptions resume transaction and restoring the recurring payment to active status.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"SDP recurring payment record ID.","example":"prp_example"},"required":true,"description":"SDP recurring payment record ID.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Recurring payment resumed","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"recurringPayment":{"type":"object","properties":{"id":{"type":"string","description":"SDP recurring payment ID.","example":"prp_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"sourceCustodyWalletId":{"type":"string","nullable":true,"description":"Exact source SDP Wallet ID, or null for unresolved legacy records.","example":"cwlt_example"},"sourceProviderWalletId":{"type":"string","minLength":1,"description":"Source Provider wallet ID retained as evidence.","example":"privy_wallet_123"},"sourceAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Source wallet address.","example":"So11111111111111111111111111111111111111112"},"counterpartyId":{"type":"string","description":"Counterparty ID.","example":"cpty_example"},"counterpartyAccountId":{"type":"string","description":"Counterparty account ID.","example":"cpa_example"},"destinationAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Counterparty wallet owner address.","example":"So11111111111111111111111111111111111111112"},"destinationTokenAccount":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Derived counterparty token account used for collection.","example":"So11111111111111111111111111111111111111112"},"token":{"type":"string","description":"SPL token mint address."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"periodHours":{"type":"integer","minimum":0,"exclusiveMinimum":true,"example":720},"firstCollectionAt":{"type":"string","nullable":true,"format":"date-time","description":"Requested first collection timestamp.","example":"2025-01-01T00:00:00.000Z"},"nextCollectionDueAt":{"type":"string","nullable":true,"format":"date-time","description":"Next due collection timestamp.","example":"2025-01-01T00:00:00.000Z"},"planId":{"type":"string","nullable":true,"description":"Linked SDP subscription plan ID."},"subscriptionId":{"type":"string","nullable":true,"description":"Linked SDP subscription ID."},"planPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain plan PDA.","example":"So11111111111111111111111111111111111111112"},"planCreatedAt":{"type":"string","nullable":true,"description":"On-chain plan createdAt value as an unsigned integer string."},"planCreationSignature":{"type":"string","nullable":true,"description":"Solana signature for plan creation."},"subscriptionPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription PDA.","example":"So11111111111111111111111111111111111111112"},"subscriptionAuthorityAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription authority address.","example":"So11111111111111111111111111111111111111112"},"authorizationSignature":{"type":"string","nullable":true,"description":"Solana signature for subscription authorization."},"status":{"type":"string","enum":["pending_activation","activating","active","updating","canceling","resuming","paused","canceled","expired"],"description":"Recurring payment status.","example":"active"},"metadataUri":{"type":"string","nullable":true,"description":"Optional plan metadata URI."},"createdBy":{"type":"string","nullable":true,"description":"Creator user ID or API key ID."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","sourceCustodyWalletId","sourceProviderWalletId","sourceAddress","counterpartyId","counterpartyAccountId","destinationAddress","destinationTokenAccount","token","amount","periodHours","firstCollectionAt","nextCollectionDueAt","planId","subscriptionId","planPda","planCreatedAt","planCreationSignature","subscriptionPda","subscriptionAuthorityAddress","authorizationSignature","status","metadataUri","createdBy","createdAt","updatedAt"],"description":"SDP-custody outbound recurring payment record."}},"required":["recurringPayment"],"description":"Recurring payment response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/subscription-plans":{"post":{"tags":["Payments"],"summary":"Create subscription plan","operationId":"createPaymentSubscriptionPlan","description":"Creates a recurring-payment subscription plan record. This stores SDP backend state and Solana subscriptions program identifiers; it does not by itself create the on-chain plan.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ownerWalletId":{"type":"string","minLength":1,"description":"Custody wallet that owns the Solana subscription plan.","example":"wal_merchant"},"token":{"type":"string","description":"Token mint address. Native SOL is not expected for program-backed subscriptions.","example":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"},"amount":{"type":"string","description":"Recurring charge amount in UI units.","example":"25.00"},"periodHours":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":8760,"description":"Billing period length in hours.","example":720},"programPlanId":{"type":"string","pattern":"^\\d+$","description":"Unsigned 64-bit decimal program plan identifier used in the Solana subscriptions PDA seed. Defaults to a generated nonzero value.","example":"17014118346046923173"},"planPda":{"type":"string","description":"On-chain plan PDA once created.","example":"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"},"destinationAddress":{"type":"string","description":"Optional destination owner address allowed by the on-chain plan.","example":"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"},"pullerWalletId":{"type":"string","minLength":1,"description":"Optional SDP custody wallet allowed to pull subscription payments.","example":"wal_collector"},"metadataUri":{"type":"string","maxLength":128,"format":"uri","description":"Optional plan metadata URI.","example":"https://example.com/subscriptions/monthly-usdc.json"},"status":{"type":"string","enum":["draft","active","archived"],"description":"Subscription plan status.","example":"active"}},"required":["ownerWalletId","token","amount","periodHours"],"description":"Creates an SDP subscription plan record. Prepare the on-chain Solana subscriptions program transaction separately with the plan prepare endpoint."}}}},"responses":{"201":{"description":"Subscription plan created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"subscriptionPlan":{"type":"object","properties":{"id":{"type":"string","description":"SDP subscription plan ID.","example":"psp_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"ownerWalletId":{"type":"string","minLength":1,"description":"Provider wallet ID — the `walletId` field returned by GET /v1/wallets.","example":"privy_wallet_123"},"ownerAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"token":{"type":"string","description":"Token mint or normalized token identifier."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"periodHours":{"type":"integer","minimum":0,"exclusiveMinimum":true,"example":720},"programPlanId":{"type":"string","description":"Unsigned 64-bit decimal program plan identifier used in PDA derivation.","example":"17014118346046923173"},"planPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain plan PDA.","example":"So11111111111111111111111111111111111111112"},"destinationAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Allowed destination owner address.","example":"So11111111111111111111111111111111111111112"},"pullerWalletId":{"type":"string","nullable":true,"minLength":1,"description":"Collector wallet ID.","example":"privy_wallet_123"},"pullerAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Collector wallet address.","example":"So11111111111111111111111111111111111111112"},"metadataUri":{"type":"string","nullable":true,"description":"Optional plan metadata URI."},"status":{"type":"string","enum":["draft","active","archived"],"description":"Subscription plan status.","example":"active"},"createdBy":{"type":"string","nullable":true,"description":"Creator user ID or API key ID."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","ownerWalletId","ownerAddress","token","amount","periodHours","programPlanId","planPda","destinationAddress","pullerWalletId","pullerAddress","metadataUri","status","createdBy","createdAt","updatedAt"],"description":"Recurring payment subscription plan record."}},"required":["subscriptionPlan"],"description":"Subscription plan response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"get":{"tags":["Payments"],"summary":"List subscription plans","operationId":"listPaymentSubscriptionPlans","description":"Lists recurring-payment subscription plans.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["draft","active","archived"],"description":"Subscription plan status.","example":"active"},"required":false,"description":"Subscription plan status.","name":"status","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Subscription plan list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"subscriptionPlans":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"SDP subscription plan ID.","example":"psp_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"ownerWalletId":{"type":"string","minLength":1,"description":"Provider wallet ID — the `walletId` field returned by GET /v1/wallets.","example":"privy_wallet_123"},"ownerAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"token":{"type":"string","description":"Token mint or normalized token identifier."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"periodHours":{"type":"integer","minimum":0,"exclusiveMinimum":true,"example":720},"programPlanId":{"type":"string","description":"Unsigned 64-bit decimal program plan identifier used in PDA derivation.","example":"17014118346046923173"},"planPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain plan PDA.","example":"So11111111111111111111111111111111111111112"},"destinationAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Allowed destination owner address.","example":"So11111111111111111111111111111111111111112"},"pullerWalletId":{"type":"string","nullable":true,"minLength":1,"description":"Collector wallet ID.","example":"privy_wallet_123"},"pullerAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Collector wallet address.","example":"So11111111111111111111111111111111111111112"},"metadataUri":{"type":"string","nullable":true,"description":"Optional plan metadata URI."},"status":{"type":"string","enum":["draft","active","archived"],"description":"Subscription plan status.","example":"active"},"createdBy":{"type":"string","nullable":true,"description":"Creator user ID or API key ID."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","ownerWalletId","ownerAddress","token","amount","periodHours","programPlanId","planPda","destinationAddress","pullerWalletId","pullerAddress","metadataUri","status","createdBy","createdAt","updatedAt"],"description":"Recurring payment subscription plan record."}},"total":{"type":"integer"},"page":{"type":"integer"},"pageSize":{"type":"integer"}},"required":["subscriptionPlans","total","page","pageSize"],"description":"Subscription plan list response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/subscription-plans/{planId}/prepare-create":{"post":{"tags":["Payments"],"summary":"Prepare subscription plan creation","operationId":"preparePaymentSubscriptionPlanCreate","description":"Prepares an unsigned Solana subscriptions program create-plan transaction from an SDP subscription plan. This derives and stores the plan PDA but does not submit the transaction.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"SDP subscription plan record ID.","example":"psp_example"},"required":true,"description":"SDP subscription plan record ID.","name":"planId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"destinations":{"type":"array","items":{"type":"string"},"maxItems":4,"description":"Allowed destination addresses for the on-chain plan. Defaults to the stored plan destination."},"pullers":{"type":"array","items":{"type":"string"},"maxItems":4,"description":"Allowed puller addresses for the on-chain plan. Defaults to the stored puller or owner address."},"endTs":{"type":"string","pattern":"^\\d+$","description":"Optional unsigned 64-bit Unix timestamp when the on-chain plan ends.","example":"1770000000"},"metadataUri":{"type":"string","maxLength":128,"format":"uri","description":"Optional metadata URI to embed in the on-chain plan.","example":"https://example.com/subscriptions/monthly-usdc.json"}},"description":"Optional overrides used when preparing the Solana subscriptions create-plan transaction."}}}},"responses":{"200":{"description":"Subscription plan creation prepared","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"subscriptionPlan":{"type":"object","properties":{"id":{"type":"string","description":"SDP subscription plan ID.","example":"psp_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"ownerWalletId":{"type":"string","minLength":1,"description":"Provider wallet ID — the `walletId` field returned by GET /v1/wallets.","example":"privy_wallet_123"},"ownerAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"token":{"type":"string","description":"Token mint or normalized token identifier."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"periodHours":{"type":"integer","minimum":0,"exclusiveMinimum":true,"example":720},"programPlanId":{"type":"string","description":"Unsigned 64-bit decimal program plan identifier used in PDA derivation.","example":"17014118346046923173"},"planPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain plan PDA.","example":"So11111111111111111111111111111111111111112"},"destinationAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Allowed destination owner address.","example":"So11111111111111111111111111111111111111112"},"pullerWalletId":{"type":"string","nullable":true,"minLength":1,"description":"Collector wallet ID.","example":"privy_wallet_123"},"pullerAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Collector wallet address.","example":"So11111111111111111111111111111111111111112"},"metadataUri":{"type":"string","nullable":true,"description":"Optional plan metadata URI."},"status":{"type":"string","enum":["draft","active","archived"],"description":"Subscription plan status.","example":"active"},"createdBy":{"type":"string","nullable":true,"description":"Creator user ID or API key ID."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","ownerWalletId","ownerAddress","token","amount","periodHours","programPlanId","planPda","destinationAddress","pullerWalletId","pullerAddress","metadataUri","status","createdBy","createdAt","updatedAt"],"description":"Recurring payment subscription plan record."},"planPda":{"type":"string","minLength":32,"maxLength":44,"description":"Derived Solana subscriptions plan PDA.","example":"So11111111111111111111111111111111111111112"},"preparedTransaction":{"type":"object","properties":{"serialized":{"type":"string","minLength":1,"description":"Base64-encoded unsigned transaction.","example":"AQID"},"blockhash":{"type":"string","description":"Blockhash for the transaction.","example":"blockhash_example"},"lastValidBlockHeight":{"type":"string","description":"Last valid block height.","example":"123456"},"requiredSigners":{"type":"array","items":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"description":"Addresses that must sign the prepared transaction. This includes the sponsored fee payer when the transaction uses one."}},"required":["serialized","blockhash","lastValidBlockHeight","requiredSigners"],"description":"Unsigned Solana subscriptions transaction payload for client-side signing."}},"required":["subscriptionPlan","planPda","preparedTransaction"],"description":"Prepared Solana subscriptions create-plan response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/subscription-plans/{planId}":{"get":{"tags":["Payments"],"summary":"Get subscription plan","operationId":"getPaymentSubscriptionPlan","description":"Retrieves a recurring-payment subscription plan record.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"SDP subscription plan record ID.","example":"psp_example"},"required":true,"description":"SDP subscription plan record ID.","name":"planId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Subscription plan","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"subscriptionPlan":{"type":"object","properties":{"id":{"type":"string","description":"SDP subscription plan ID.","example":"psp_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"ownerWalletId":{"type":"string","minLength":1,"description":"Provider wallet ID — the `walletId` field returned by GET /v1/wallets.","example":"privy_wallet_123"},"ownerAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"token":{"type":"string","description":"Token mint or normalized token identifier."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"periodHours":{"type":"integer","minimum":0,"exclusiveMinimum":true,"example":720},"programPlanId":{"type":"string","description":"Unsigned 64-bit decimal program plan identifier used in PDA derivation.","example":"17014118346046923173"},"planPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain plan PDA.","example":"So11111111111111111111111111111111111111112"},"destinationAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Allowed destination owner address.","example":"So11111111111111111111111111111111111111112"},"pullerWalletId":{"type":"string","nullable":true,"minLength":1,"description":"Collector wallet ID.","example":"privy_wallet_123"},"pullerAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Collector wallet address.","example":"So11111111111111111111111111111111111111112"},"metadataUri":{"type":"string","nullable":true,"description":"Optional plan metadata URI."},"status":{"type":"string","enum":["draft","active","archived"],"description":"Subscription plan status.","example":"active"},"createdBy":{"type":"string","nullable":true,"description":"Creator user ID or API key ID."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","ownerWalletId","ownerAddress","token","amount","periodHours","programPlanId","planPda","destinationAddress","pullerWalletId","pullerAddress","metadataUri","status","createdBy","createdAt","updatedAt"],"description":"Recurring payment subscription plan record."}},"required":["subscriptionPlan"],"description":"Subscription plan response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"patch":{"tags":["Payments"],"summary":"Update subscription plan","operationId":"updatePaymentSubscriptionPlan","description":"Updates mutable subscription plan fields and on-chain identifiers.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"SDP subscription plan record ID.","example":"psp_example"},"required":true,"description":"SDP subscription plan record ID.","name":"planId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"planPda":{"type":"string","nullable":true,"description":"On-chain plan PDA, or null to clear it.","example":"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"},"destinationAddress":{"type":"string","nullable":true,"description":"Destination owner address, or null to clear it."},"pullerWalletId":{"type":"string","nullable":true,"minLength":1,"description":"Collection wallet ID, or null to clear it.","example":"wal_collector"},"metadataUri":{"type":"string","nullable":true,"maxLength":128,"format":"uri","description":"Plan metadata URI, or null to clear it."},"status":{"type":"string","enum":["draft","active","archived"],"description":"Subscription plan status.","example":"active"}},"description":"Updates mutable SDP subscription plan fields."}}}},"responses":{"200":{"description":"Subscription plan updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"subscriptionPlan":{"type":"object","properties":{"id":{"type":"string","description":"SDP subscription plan ID.","example":"psp_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"ownerWalletId":{"type":"string","minLength":1,"description":"Provider wallet ID — the `walletId` field returned by GET /v1/wallets.","example":"privy_wallet_123"},"ownerAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"token":{"type":"string","description":"Token mint or normalized token identifier."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"periodHours":{"type":"integer","minimum":0,"exclusiveMinimum":true,"example":720},"programPlanId":{"type":"string","description":"Unsigned 64-bit decimal program plan identifier used in PDA derivation.","example":"17014118346046923173"},"planPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain plan PDA.","example":"So11111111111111111111111111111111111111112"},"destinationAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Allowed destination owner address.","example":"So11111111111111111111111111111111111111112"},"pullerWalletId":{"type":"string","nullable":true,"minLength":1,"description":"Collector wallet ID.","example":"privy_wallet_123"},"pullerAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Collector wallet address.","example":"So11111111111111111111111111111111111111112"},"metadataUri":{"type":"string","nullable":true,"description":"Optional plan metadata URI."},"status":{"type":"string","enum":["draft","active","archived"],"description":"Subscription plan status.","example":"active"},"createdBy":{"type":"string","nullable":true,"description":"Creator user ID or API key ID."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","ownerWalletId","ownerAddress","token","amount","periodHours","programPlanId","planPda","destinationAddress","pullerWalletId","pullerAddress","metadataUri","status","createdBy","createdAt","updatedAt"],"description":"Recurring payment subscription plan record."}},"required":["subscriptionPlan"],"description":"Subscription plan response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/subscriptions":{"post":{"tags":["Payments"],"summary":"Create subscription","operationId":"createPaymentSubscription","description":"Creates a recurring-payment subscription record tied to a counterparty. The customer must still sign the Solana subscription authorization transaction.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"planId":{"type":"string","minLength":1,"description":"SDP subscription plan ID.","example":"psp_example"},"counterpartyId":{"type":"string","minLength":1,"description":"Counterparty being billed for the recurring payment.","example":"cpty_example"},"subscriberAddress":{"type":"string","description":"Customer wallet address that authorizes the subscription.","example":"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"}},"required":["planId","counterpartyId","subscriberAddress"],"additionalProperties":false,"description":"Creates a pending SDP subscription record tied to a counterparty. Lifecycle, schedule, on-chain addresses, and authorization proof are server-owned and populated only by verified flows."}}}},"responses":{"201":{"description":"Subscription created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"subscription":{"type":"object","properties":{"id":{"type":"string","description":"SDP subscription ID.","example":"psub_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"planId":{"type":"string","description":"SDP subscription plan ID."},"counterpartyId":{"type":"string","description":"Counterparty ID."},"subscriberAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"subscriberTokenAccount":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Subscriber token account address.","example":"So11111111111111111111111111111111111111112"},"subscriptionPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription PDA.","example":"So11111111111111111111111111111111111111112"},"subscriptionAuthorityAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription authority address.","example":"So11111111111111111111111111111111111111112"},"authorizationSignature":{"type":"string","nullable":true,"description":"Customer authorization transaction signature."},"status":{"type":"string","enum":["pending_authorization","active","paused","canceling","canceled","expired"],"description":"Subscription status.","example":"active"},"currentPeriodStartAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"nextCollectionDueAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"cancelAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"canceledAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"createdBy":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","planId","counterpartyId","subscriberAddress","subscriberTokenAccount","subscriptionPda","subscriptionAuthorityAddress","authorizationSignature","status","currentPeriodStartAt","nextCollectionDueAt","cancelAt","canceledAt","createdBy","createdAt","updatedAt"],"description":"Recurring payment subscription record."}},"required":["subscription"],"description":"Subscription response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"get":{"tags":["Payments"],"summary":"List subscriptions","operationId":"listPaymentSubscriptions","description":"Lists recurring-payment subscriptions.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":false,"name":"planId","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"counterpartyId","in":"query"},{"schema":{"type":"string","enum":["pending_authorization","active","paused","canceling","canceled","expired"],"description":"Subscription status.","example":"active"},"required":false,"description":"Subscription status.","name":"status","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":false,"name":"dueBefore","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Subscription list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"subscriptions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"SDP subscription ID.","example":"psub_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"planId":{"type":"string","description":"SDP subscription plan ID."},"counterpartyId":{"type":"string","description":"Counterparty ID."},"subscriberAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"subscriberTokenAccount":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Subscriber token account address.","example":"So11111111111111111111111111111111111111112"},"subscriptionPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription PDA.","example":"So11111111111111111111111111111111111111112"},"subscriptionAuthorityAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription authority address.","example":"So11111111111111111111111111111111111111112"},"authorizationSignature":{"type":"string","nullable":true,"description":"Customer authorization transaction signature."},"status":{"type":"string","enum":["pending_authorization","active","paused","canceling","canceled","expired"],"description":"Subscription status.","example":"active"},"currentPeriodStartAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"nextCollectionDueAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"cancelAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"canceledAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"createdBy":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","planId","counterpartyId","subscriberAddress","subscriberTokenAccount","subscriptionPda","subscriptionAuthorityAddress","authorizationSignature","status","currentPeriodStartAt","nextCollectionDueAt","cancelAt","canceledAt","createdBy","createdAt","updatedAt"],"description":"Recurring payment subscription record."}},"total":{"type":"integer"},"page":{"type":"integer"},"pageSize":{"type":"integer"}},"required":["subscriptions","total","page","pageSize"],"description":"Subscription list response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/subscriptions/{subscriptionId}/prepare-authorization":{"post":{"tags":["Payments"],"summary":"Prepare subscription authorization","operationId":"preparePaymentSubscriptionAuthorization","description":"Prepares the subscriber-signed Solana transaction that initializes the subscription authority and subscribes to the plan. The transaction must still be signed and submitted by the client.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"SDP subscription record ID.","example":"psub_example"},"required":true,"description":"SDP subscription record ID.","name":"subscriptionId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"subscriberTokenAccount":{"type":"string","description":"Subscriber token account that authorizes the subscription authority delegation.","example":"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"},"expectedPlanCreatedAt":{"type":"string","pattern":"^\\d+$","description":"Unsigned 64-bit created-at timestamp from the on-chain plan terms that the subscriber consents to.","example":"0"},"expectedSubscriptionAuthorityInitId":{"type":"string","pattern":"^-?\\d+$","description":"Signed 64-bit init id from the on-chain subscription authority that the subscriber consents to.","example":"0"}},"required":["subscriberTokenAccount","expectedPlanCreatedAt","expectedSubscriptionAuthorityInitId"],"description":"Inputs for preparing the subscriber-signed Solana subscription authorization transaction."}}}},"responses":{"200":{"description":"Subscription authorization prepared","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"subscription":{"type":"object","properties":{"id":{"type":"string","description":"SDP subscription ID.","example":"psub_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"planId":{"type":"string","description":"SDP subscription plan ID."},"counterpartyId":{"type":"string","description":"Counterparty ID."},"subscriberAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"subscriberTokenAccount":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Subscriber token account address.","example":"So11111111111111111111111111111111111111112"},"subscriptionPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription PDA.","example":"So11111111111111111111111111111111111111112"},"subscriptionAuthorityAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription authority address.","example":"So11111111111111111111111111111111111111112"},"authorizationSignature":{"type":"string","nullable":true,"description":"Customer authorization transaction signature."},"status":{"type":"string","enum":["pending_authorization","active","paused","canceling","canceled","expired"],"description":"Subscription status.","example":"active"},"currentPeriodStartAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"nextCollectionDueAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"cancelAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"canceledAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"createdBy":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","planId","counterpartyId","subscriberAddress","subscriberTokenAccount","subscriptionPda","subscriptionAuthorityAddress","authorizationSignature","status","currentPeriodStartAt","nextCollectionDueAt","cancelAt","canceledAt","createdBy","createdAt","updatedAt"],"description":"Recurring payment subscription record."},"subscriptionPda":{"type":"string","minLength":32,"maxLength":44,"description":"Derived subscription delegation PDA.","example":"So11111111111111111111111111111111111111112"},"subscriptionAuthorityAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Derived subscription authority PDA.","example":"So11111111111111111111111111111111111111112"},"preparedTransaction":{"type":"object","properties":{"serialized":{"type":"string","minLength":1,"description":"Base64-encoded unsigned transaction.","example":"AQID"},"blockhash":{"type":"string","description":"Blockhash for the transaction.","example":"blockhash_example"},"lastValidBlockHeight":{"type":"string","description":"Last valid block height.","example":"123456"},"requiredSigners":{"type":"array","items":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"description":"Addresses that must sign the prepared transaction. This includes the sponsored fee payer when the transaction uses one."}},"required":["serialized","blockhash","lastValidBlockHeight","requiredSigners"],"description":"Unsigned Solana subscriptions transaction payload for client-side signing."}},"required":["subscription","subscriptionPda","subscriptionAuthorityAddress","preparedTransaction"],"description":"Prepared subscription authorization response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/subscriptions/{subscriptionId}/prepare-cancel":{"post":{"tags":["Payments"],"summary":"Prepare subscription cancellation","operationId":"preparePaymentSubscriptionCancel","description":"Prepares the subscriber-signed Solana transaction that cancels a subscription. The transaction must still be signed and submitted by the client.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"SDP subscription record ID.","example":"psub_example"},"required":true,"description":"SDP subscription record ID.","name":"subscriptionId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Empty request body for preparing subscriber-signed subscription lifecycle transactions."}}}},"responses":{"200":{"description":"Subscription cancellation prepared","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"subscription":{"type":"object","properties":{"id":{"type":"string","description":"SDP subscription ID.","example":"psub_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"planId":{"type":"string","description":"SDP subscription plan ID."},"counterpartyId":{"type":"string","description":"Counterparty ID."},"subscriberAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"subscriberTokenAccount":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Subscriber token account address.","example":"So11111111111111111111111111111111111111112"},"subscriptionPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription PDA.","example":"So11111111111111111111111111111111111111112"},"subscriptionAuthorityAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription authority address.","example":"So11111111111111111111111111111111111111112"},"authorizationSignature":{"type":"string","nullable":true,"description":"Customer authorization transaction signature."},"status":{"type":"string","enum":["pending_authorization","active","paused","canceling","canceled","expired"],"description":"Subscription status.","example":"active"},"currentPeriodStartAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"nextCollectionDueAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"cancelAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"canceledAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"createdBy":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","planId","counterpartyId","subscriberAddress","subscriberTokenAccount","subscriptionPda","subscriptionAuthorityAddress","authorizationSignature","status","currentPeriodStartAt","nextCollectionDueAt","cancelAt","canceledAt","createdBy","createdAt","updatedAt"],"description":"Recurring payment subscription record."},"preparedTransaction":{"type":"object","properties":{"serialized":{"type":"string","minLength":1,"description":"Base64-encoded unsigned transaction.","example":"AQID"},"blockhash":{"type":"string","description":"Blockhash for the transaction.","example":"blockhash_example"},"lastValidBlockHeight":{"type":"string","description":"Last valid block height.","example":"123456"},"requiredSigners":{"type":"array","items":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"description":"Addresses that must sign the prepared transaction. This includes the sponsored fee payer when the transaction uses one."}},"required":["serialized","blockhash","lastValidBlockHeight","requiredSigners"],"description":"Unsigned Solana subscriptions transaction payload for client-side signing."}},"required":["subscription","preparedTransaction"],"description":"Prepared subscription lifecycle response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/subscriptions/{subscriptionId}/prepare-resume":{"post":{"tags":["Payments"],"summary":"Prepare subscription resume","operationId":"preparePaymentSubscriptionResume","description":"Prepares the subscriber-signed Solana transaction that resumes a canceled subscription before revocation. The transaction must still be signed and submitted by the client.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"SDP subscription record ID.","example":"psub_example"},"required":true,"description":"SDP subscription record ID.","name":"subscriptionId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Empty request body for preparing subscriber-signed subscription lifecycle transactions."}}}},"responses":{"200":{"description":"Subscription resume prepared","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"subscription":{"type":"object","properties":{"id":{"type":"string","description":"SDP subscription ID.","example":"psub_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"planId":{"type":"string","description":"SDP subscription plan ID."},"counterpartyId":{"type":"string","description":"Counterparty ID."},"subscriberAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"subscriberTokenAccount":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Subscriber token account address.","example":"So11111111111111111111111111111111111111112"},"subscriptionPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription PDA.","example":"So11111111111111111111111111111111111111112"},"subscriptionAuthorityAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription authority address.","example":"So11111111111111111111111111111111111111112"},"authorizationSignature":{"type":"string","nullable":true,"description":"Customer authorization transaction signature."},"status":{"type":"string","enum":["pending_authorization","active","paused","canceling","canceled","expired"],"description":"Subscription status.","example":"active"},"currentPeriodStartAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"nextCollectionDueAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"cancelAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"canceledAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"createdBy":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","planId","counterpartyId","subscriberAddress","subscriberTokenAccount","subscriptionPda","subscriptionAuthorityAddress","authorizationSignature","status","currentPeriodStartAt","nextCollectionDueAt","cancelAt","canceledAt","createdBy","createdAt","updatedAt"],"description":"Recurring payment subscription record."},"preparedTransaction":{"type":"object","properties":{"serialized":{"type":"string","minLength":1,"description":"Base64-encoded unsigned transaction.","example":"AQID"},"blockhash":{"type":"string","description":"Blockhash for the transaction.","example":"blockhash_example"},"lastValidBlockHeight":{"type":"string","description":"Last valid block height.","example":"123456"},"requiredSigners":{"type":"array","items":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"description":"Addresses that must sign the prepared transaction. This includes the sponsored fee payer when the transaction uses one."}},"required":["serialized","blockhash","lastValidBlockHeight","requiredSigners"],"description":"Unsigned Solana subscriptions transaction payload for client-side signing."}},"required":["subscription","preparedTransaction"],"description":"Prepared subscription lifecycle response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/subscriptions/{subscriptionId}/prepare-collection":{"post":{"tags":["Payments"],"summary":"Prepare subscription collection","operationId":"preparePaymentSubscriptionCollection","description":"Prepares the collector-signed Solana subscriptions transfer transaction for an active subscription. The transaction must still be signed and submitted by the collector/fee-payer flow.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"SDP subscription record ID.","example":"psub_example"},"required":true,"description":"SDP subscription record ID.","name":"subscriptionId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"receiverTokenAccount":{"type":"string","description":"Receiver token account for the pulled subscription payment. It must be allowed by the on-chain plan.","example":"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"}},"required":["receiverTokenAccount"],"additionalProperties":false,"description":"Inputs for preparing the collector-signed Solana subscriptions transfer transaction. The amount is always derived from the stored plan."}}}},"responses":{"200":{"description":"Subscription collection prepared","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"subscription":{"type":"object","properties":{"id":{"type":"string","description":"SDP subscription ID.","example":"psub_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"planId":{"type":"string","description":"SDP subscription plan ID."},"counterpartyId":{"type":"string","description":"Counterparty ID."},"subscriberAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"subscriberTokenAccount":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Subscriber token account address.","example":"So11111111111111111111111111111111111111112"},"subscriptionPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription PDA.","example":"So11111111111111111111111111111111111111112"},"subscriptionAuthorityAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription authority address.","example":"So11111111111111111111111111111111111111112"},"authorizationSignature":{"type":"string","nullable":true,"description":"Customer authorization transaction signature."},"status":{"type":"string","enum":["pending_authorization","active","paused","canceling","canceled","expired"],"description":"Subscription status.","example":"active"},"currentPeriodStartAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"nextCollectionDueAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"cancelAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"canceledAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"createdBy":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","planId","counterpartyId","subscriberAddress","subscriberTokenAccount","subscriptionPda","subscriptionAuthorityAddress","authorizationSignature","status","currentPeriodStartAt","nextCollectionDueAt","cancelAt","canceledAt","createdBy","createdAt","updatedAt"],"description":"Recurring payment subscription record."},"preparedTransaction":{"type":"object","properties":{"serialized":{"type":"string","minLength":1,"description":"Base64-encoded unsigned transaction.","example":"AQID"},"blockhash":{"type":"string","description":"Blockhash for the transaction.","example":"blockhash_example"},"lastValidBlockHeight":{"type":"string","description":"Last valid block height.","example":"123456"},"requiredSigners":{"type":"array","items":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"description":"Addresses that must sign the prepared transaction. This includes the sponsored fee payer when the transaction uses one."}},"required":["serialized","blockhash","lastValidBlockHeight","requiredSigners"],"description":"Unsigned Solana subscriptions transaction payload for client-side signing."},"collectionAttempt":{"type":"object","properties":{"id":{"type":"string","description":"Collection attempt ID.","example":"psca_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"subscriptionId":{"type":"string","description":"Subscription ID."},"transferId":{"type":"string","nullable":true,"minLength":1,"description":"Payment transfer record ID when linked.","example":"xfr_example"},"token":{"type":"string","description":"Token mint or normalized token identifier."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"dueAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"attemptedAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"status":{"type":"string","enum":["pending","processing","confirmed","failed","skipped"],"description":"Collection attempt status.","example":"pending"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature."},"error":{"type":"string","nullable":true,"description":"Collection error, if any."},"metadata":{"oneOf":[{"type":"object","properties":{"recurringPaymentId":{"type":"string"},"initiatedByKeyId":{"type":"string","nullable":true},"source":{"type":"string","enum":["manual"]}},"required":["recurringPaymentId","initiatedByKeyId","source"]},{"type":"object","properties":{"recurringPaymentId":{"type":"string"},"initiatedByKeyId":{"type":"string","nullable":true},"source":{"type":"string","enum":["automated"]}},"required":["recurringPaymentId","initiatedByKeyId","source"]},{"type":"object","properties":{"recurringPaymentId":{"type":"string"},"initiatedByKeyId":{"type":"string","nullable":true},"source":{"type":"string","enum":["retry"]},"initialSource":{"type":"string","enum":["manual","automated"]},"transferId":{"type":"string","nullable":true},"error":{"type":"string"},"retryAfterAt":{"type":"string"}},"required":["recurringPaymentId","initiatedByKeyId","source","initialSource","transferId","error","retryAfterAt"]},{"type":"object","properties":{"recurringPaymentId":{"type":"string"},"initiatedByKeyId":{"type":"string","nullable":true},"source":{"type":"string","enum":["linked_transfer"]},"initialSource":{"type":"string","enum":["manual","automated"]},"transferId":{"type":"string"}},"required":["recurringPaymentId","initiatedByKeyId","source","initialSource","transferId"]}],"description":"Provider/job metadata for the attempt."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","subscriptionId","transferId","token","amount","dueAt","attemptedAt","status","signature","error","metadata","createdAt","updatedAt"],"description":"Recurring payment collection attempt record."}},"required":["subscription","preparedTransaction"],"description":"Prepared subscription collection response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/subscriptions/{subscriptionId}":{"get":{"tags":["Payments"],"summary":"Get subscription","operationId":"getPaymentSubscription","description":"Retrieves a recurring-payment subscription record.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"SDP subscription record ID.","example":"psub_example"},"required":true,"description":"SDP subscription record ID.","name":"subscriptionId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Subscription","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"subscription":{"type":"object","properties":{"id":{"type":"string","description":"SDP subscription ID.","example":"psub_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"planId":{"type":"string","description":"SDP subscription plan ID."},"counterpartyId":{"type":"string","description":"Counterparty ID."},"subscriberAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Base58-encoded Solana address.","example":"So11111111111111111111111111111111111111112"},"subscriberTokenAccount":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Subscriber token account address.","example":"So11111111111111111111111111111111111111112"},"subscriptionPda":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription PDA.","example":"So11111111111111111111111111111111111111112"},"subscriptionAuthorityAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain subscription authority address.","example":"So11111111111111111111111111111111111111112"},"authorizationSignature":{"type":"string","nullable":true,"description":"Customer authorization transaction signature."},"status":{"type":"string","enum":["pending_authorization","active","paused","canceling","canceled","expired"],"description":"Subscription status.","example":"active"},"currentPeriodStartAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"nextCollectionDueAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"cancelAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"canceledAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"createdBy":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","planId","counterpartyId","subscriberAddress","subscriberTokenAccount","subscriptionPda","subscriptionAuthorityAddress","authorizationSignature","status","currentPeriodStartAt","nextCollectionDueAt","cancelAt","canceledAt","createdBy","createdAt","updatedAt"],"description":"Recurring payment subscription record."}},"required":["subscription"],"description":"Subscription response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/subscriptions/{subscriptionId}/collection-attempts":{"get":{"tags":["Payments"],"summary":"List subscription collection attempts","operationId":"listPaymentSubscriptionCollectionAttempts","description":"Lists collection attempts for a recurring-payment subscription.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"SDP subscription record ID.","example":"psub_example"},"required":true,"description":"SDP subscription record ID.","name":"subscriptionId","in":"path"},{"schema":{"type":"string","enum":["pending","processing","confirmed","failed","skipped"],"description":"Collection attempt status.","example":"pending"},"required":false,"description":"Collection attempt status.","name":"status","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Collection attempt list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"collectionAttempts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Collection attempt ID.","example":"psca_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"subscriptionId":{"type":"string","description":"Subscription ID."},"transferId":{"type":"string","nullable":true,"minLength":1,"description":"Payment transfer record ID when linked.","example":"xfr_example"},"token":{"type":"string","description":"Token mint or normalized token identifier."},"amount":{"type":"string","description":"Token amount in UI units (decimal string).","example":"100.00"},"dueAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"attemptedAt":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"status":{"type":"string","enum":["pending","processing","confirmed","failed","skipped"],"description":"Collection attempt status.","example":"pending"},"signature":{"type":"string","nullable":true,"description":"Solana transaction signature."},"error":{"type":"string","nullable":true,"description":"Collection error, if any."},"metadata":{"oneOf":[{"type":"object","properties":{"recurringPaymentId":{"type":"string"},"initiatedByKeyId":{"type":"string","nullable":true},"source":{"type":"string","enum":["manual"]}},"required":["recurringPaymentId","initiatedByKeyId","source"]},{"type":"object","properties":{"recurringPaymentId":{"type":"string"},"initiatedByKeyId":{"type":"string","nullable":true},"source":{"type":"string","enum":["automated"]}},"required":["recurringPaymentId","initiatedByKeyId","source"]},{"type":"object","properties":{"recurringPaymentId":{"type":"string"},"initiatedByKeyId":{"type":"string","nullable":true},"source":{"type":"string","enum":["retry"]},"initialSource":{"type":"string","enum":["manual","automated"]},"transferId":{"type":"string","nullable":true},"error":{"type":"string"},"retryAfterAt":{"type":"string"}},"required":["recurringPaymentId","initiatedByKeyId","source","initialSource","transferId","error","retryAfterAt"]},{"type":"object","properties":{"recurringPaymentId":{"type":"string"},"initiatedByKeyId":{"type":"string","nullable":true},"source":{"type":"string","enum":["linked_transfer"]},"initialSource":{"type":"string","enum":["manual","automated"]},"transferId":{"type":"string"}},"required":["recurringPaymentId","initiatedByKeyId","source","initialSource","transferId"]}],"description":"Provider/job metadata for the attempt."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["id","organizationId","projectId","subscriptionId","transferId","token","amount","dueAt","attemptedAt","status","signature","error","metadata","createdAt","updatedAt"],"description":"Recurring payment collection attempt record."}},"total":{"type":"integer"},"page":{"type":"integer"},"pageSize":{"type":"integer"}},"required":["collectionAttempts","total","page","pageSize"],"description":"Collection attempt list response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/ramps/onramp/currency":{"get":{"tags":["Payments"],"summary":"List on-ramp currency support","operationId":"listPaymentOnrampCurrencies","description":"Lists generated fiat-to-crypto on-ramp pairs and the providers that support each pair. Supports optional source, destination rail, and provider filters.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["AED","AFN","ALL","AMD","AOA","ARS","AUD","AWG","BAM","BBD","BDT","BHD","BIF","BMD","BND","BOB","BRL","BSD","BTN","BWP","BZD","CAD","CDF","CHF","CLP","CNY","COP","CRC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SOS","SRD","SSP","STN","SYP","SZL","THB","TJS","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYU","UZS","VND","VUV","WST","XAF","XCD","XOF","XPF","YER","ZAR","ZMW"],"description":"Optional fiat source currency filter.","example":"USD"},"required":false,"description":"Optional fiat source currency filter.","name":"source","in":"query"},{"schema":{"type":"string","enum":["sol.solana","usdc.solana","usdt.solana","usdg.solana","pyusd.solana"],"description":"Optional Solana crypto rail destination filter.","example":"usdc.solana"},"required":false,"description":"Optional Solana crypto rail destination filter.","name":"dest","in":"query"},{"schema":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe"],"description":"Optional ramp provider filter.","example":"moonpay"},"required":false,"description":"Optional ramp provider filter.","name":"provider","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"On-ramp currency support","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"currencies":{"type":"object","properties":{"sources":{"type":"array","items":{"type":"string"},"description":"Fiat source currencies with at least one supported on-ramp pair.","example":["USD","EUR"]},"destinations":{"type":"array","items":{"type":"string","enum":["sol.solana","usdc.solana","usdt.solana","usdg.solana","pyusd.solana"]},"description":"Crypto rails considered for Solana on-ramp support.","example":["usdc.solana","sol.solana"]}},"required":["sources","destinations"],"description":"On-ramp currency option sets."},"pairs":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","description":"Fiat source currency code.","example":"USD"},"dest":{"type":"string","enum":["sol.solana","usdc.solana","usdt.solana","usdg.solana","pyusd.solana"],"description":"Destination crypto rail.","example":"usdc.solana"},"providers":{"type":"array","items":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe"]},"description":"Providers that support this on-ramp pair.","example":["moonpay","lightspark"]}},"required":["source","dest","providers"],"description":"Provider support for one fiat-to-crypto on-ramp pair."},"description":"Supported fiat-to-crypto pairs and their providers."},"providerDetails":{"type":"object","additionalProperties":{"type":"object","properties":{"currencies":{"type":"object","additionalProperties":{"type":"object","properties":{"min":{"type":"string","nullable":true,"description":"Minimum fiat amount supported for this provider and currency.","example":"20"},"max":{"type":"string","nullable":true,"description":"Maximum fiat amount supported for this provider and currency.","example":"30000"}},"required":["min","max"],"description":"Provider amount limits for one fiat currency."},"description":"Fiat currency support keyed by ISO 4217 currency code.","example":{"USD":{"min":"20","max":"30000"}}},"countrySupport":{"oneOf":[{"type":"object","properties":{"coverage":{"type":"string","enum":["by-country"],"description":"Country coverage is reported per fiat currency.","example":"by-country"},"countries":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"Map of ISO 3166-1 alpha-2 country codes to supported fiat currencies.","example":{"US":["USD"],"PE":["PEN","USD"]}}},"required":["coverage","countries"],"description":"Country-specific provider coverage by fiat currency."},{"type":"object","properties":{"coverage":{"type":"string","enum":["all-currencies"],"description":"Country coverage applies to every listed provider currency.","example":"all-currencies"},"countries":{"type":"array","items":{"type":"string"},"description":"ISO 3166-1 alpha-2 country codes supported for all listed currencies.","example":["AL","US"]}},"required":["coverage","countries"],"description":"Provider country coverage shared by all currencies."},{"type":"object","properties":{"coverage":{"type":"string","enum":["unreported"],"description":"The provider has not reported country coverage.","example":"unreported"}},"required":["coverage"],"description":"Provider country coverage is not reported."}],"description":"Provider country coverage details."},"entityTypes":{"type":"array","items":{"type":"string","enum":["individual","business"]},"description":"Counterparty entity types supported by this provider for the endpoint direction.","example":["individual"]}},"required":["currencies","countrySupport","entityTypes"],"description":"Provider support details for the endpoint direction."},"description":"Provider support details keyed by provider ID. Includes only providers present in the returned pairs.","example":{"moonpay":{"currencies":{"USD":{"min":"20","max":"30000"}},"countrySupport":{"coverage":"all-currencies","countries":["AL","US"]},"entityTypes":["individual"]}}},"supportHash":{"type":"string","description":"Deterministic hash of the generated ramp support matrix.","example":"sha256:example"}},"required":["currencies","pairs","providerDetails","supportHash"],"description":"On-ramp currency support response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/ramps/offramp/currency":{"get":{"tags":["Payments"],"summary":"List off-ramp currency support","operationId":"listPaymentOfframpCurrencies","description":"Lists generated crypto-to-fiat off-ramp pairs and the providers that support each pair. Supports optional source rail, destination fiat, and provider filters.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["sol.solana","usdc.solana","usdt.solana","usdg.solana","pyusd.solana"],"description":"Optional Solana crypto rail source filter.","example":"usdc.solana"},"required":false,"description":"Optional Solana crypto rail source filter.","name":"source","in":"query"},{"schema":{"type":"string","enum":["AED","AFN","ALL","AMD","AOA","ARS","AUD","AWG","BAM","BBD","BDT","BHD","BIF","BMD","BND","BOB","BRL","BSD","BTN","BWP","BZD","CAD","CDF","CHF","CLP","CNY","COP","CRC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SOS","SRD","SSP","STN","SYP","SZL","THB","TJS","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYU","UZS","VND","VUV","WST","XAF","XCD","XOF","XPF","YER","ZAR","ZMW"],"description":"Optional fiat destination currency filter.","example":"USD"},"required":false,"description":"Optional fiat destination currency filter.","name":"dest","in":"query"},{"schema":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe"],"description":"Optional ramp provider filter.","example":"moonpay"},"required":false,"description":"Optional ramp provider filter.","name":"provider","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Off-ramp currency support","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"currencies":{"type":"object","properties":{"sources":{"type":"array","items":{"type":"string","enum":["sol.solana","usdc.solana","usdt.solana","usdg.solana","pyusd.solana"]},"description":"Crypto rails with at least one supported off-ramp pair.","example":["usdc.solana","sol.solana"]},"destinations":{"type":"array","items":{"type":"string"},"description":"Fiat destination currencies with at least one supported off-ramp pair.","example":["USD","EUR"]}},"required":["sources","destinations"],"description":"Off-ramp currency option sets."},"pairs":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["sol.solana","usdc.solana","usdt.solana","usdg.solana","pyusd.solana"],"description":"Source crypto rail.","example":"usdc.solana"},"dest":{"type":"string","description":"Fiat destination currency code.","example":"USD"},"providers":{"type":"array","items":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe"]},"description":"Providers that support this off-ramp pair.","example":["moonpay","bvnk"]}},"required":["source","dest","providers"],"description":"Provider support for one crypto-to-fiat off-ramp pair."},"description":"Supported crypto-to-fiat pairs and their providers."},"providerDetails":{"type":"object","additionalProperties":{"type":"object","properties":{"currencies":{"type":"object","additionalProperties":{"type":"object","properties":{"min":{"type":"string","nullable":true,"description":"Minimum fiat amount supported for this provider and currency.","example":"20"},"max":{"type":"string","nullable":true,"description":"Maximum fiat amount supported for this provider and currency.","example":"30000"}},"required":["min","max"],"description":"Provider amount limits for one fiat currency."},"description":"Fiat currency support keyed by ISO 4217 currency code.","example":{"USD":{"min":"20","max":"30000"}}},"countrySupport":{"oneOf":[{"type":"object","properties":{"coverage":{"type":"string","enum":["by-country"],"description":"Country coverage is reported per fiat currency.","example":"by-country"},"countries":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"Map of ISO 3166-1 alpha-2 country codes to supported fiat currencies.","example":{"US":["USD"],"PE":["PEN","USD"]}}},"required":["coverage","countries"],"description":"Country-specific provider coverage by fiat currency."},{"type":"object","properties":{"coverage":{"type":"string","enum":["all-currencies"],"description":"Country coverage applies to every listed provider currency.","example":"all-currencies"},"countries":{"type":"array","items":{"type":"string"},"description":"ISO 3166-1 alpha-2 country codes supported for all listed currencies.","example":["AL","US"]}},"required":["coverage","countries"],"description":"Provider country coverage shared by all currencies."},{"type":"object","properties":{"coverage":{"type":"string","enum":["unreported"],"description":"The provider has not reported country coverage.","example":"unreported"}},"required":["coverage"],"description":"Provider country coverage is not reported."}],"description":"Provider country coverage details."},"entityTypes":{"type":"array","items":{"type":"string","enum":["individual","business"]},"description":"Counterparty entity types supported by this provider for the endpoint direction.","example":["individual"]}},"required":["currencies","countrySupport","entityTypes"],"description":"Provider support details for the endpoint direction."},"description":"Provider support details keyed by provider ID. Includes only providers present in the returned pairs.","example":{"moonpay":{"currencies":{"USD":{"min":"20","max":"30000"}},"countrySupport":{"coverage":"all-currencies","countries":["AL","US"]},"entityTypes":["individual"]}}},"supportHash":{"type":"string","description":"Deterministic hash of the generated ramp support matrix.","example":"sha256:example"}},"required":["currencies","pairs","providerDetails","supportHash"],"description":"Off-ramp currency support response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/ramps/onramp/quote":{"post":{"tags":["Payments"],"summary":"Create on-ramp quote","operationId":"createPaymentOnrampQuote","description":"Creates a provider-specific on-ramp quote. Hosted providers return a hosted URL; instruction-based providers return manual funding instructions.","security":[{"apiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe"],"description":"Ramp provider identifier. Hosted providers return a URL, manual providers return funding instructions, and Stripe returns a session widget secret.","example":"moonpay"},"counterpartyId":{"type":"string","minLength":1,"description":"SDP counterparty ID. Provider-native customer records may be resolved or created from this counterparty.","example":"cpty_example"},"destinationCustodyWalletId":{"type":"string","minLength":1,"description":"Custody wallet ID (the `id` returned by the wallets API) for purchased crypto.","example":"cwlt_example"},"assetRail":{"type":"string","enum":["sol.solana","usdc.solana","usdt.solana","usdg.solana","pyusd.solana"],"description":"Canonical SDP crypto asset rail.","example":"usdc.solana"},"fiatCurrency":{"type":"string","enum":["AED","AFN","ALL","AMD","AOA","ARS","AUD","AWG","BAM","BBD","BDT","BHD","BIF","BMD","BND","BOB","BRL","BSD","BTN","BWP","BZD","CAD","CDF","CHF","CLP","CNY","COP","CRC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SOS","SRD","SSP","STN","SYP","SZL","THB","TJS","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYU","UZS","VND","VUV","WST","XAF","XCD","XOF","XPF","YER","ZAR","ZMW"],"description":"Fiat currency for on-ramp.","example":"USD"},"fiatAmount":{"type":"string","description":"Fiat amount to on-ramp.","example":"100.00"},"rampsMemo":{"type":"object","additionalProperties":{"type":"string","minLength":1,"maxLength":256},"description":"Optional key-value memo stored on the resulting transfer.","example":{"invoice":"INV-123","po":"PO-9"}},"domain":{"type":"string","minLength":1}},"required":["provider","counterpartyId","destinationCustodyWalletId","assetRail","fiatCurrency","fiatAmount"],"additionalProperties":false,"description":"Create an on-ramp quote. The response uses `deliveryMode` to indicate whether the client should display manual instructions, open a hosted provider flow, or mount a provider session widget.","example":{"provider":"moonpay","counterpartyId":"cpty_example","destinationCustodyWalletId":"cwlt_example","assetRail":"usdc.solana","fiatCurrency":"USD","fiatAmount":"100.00"}}}}},"responses":{"200":{"description":"On-ramp quote created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"quote":{"type":"object","properties":{"id":{"type":"string","description":"Quote identifier.","example":"ramp_quote_example"},"provider":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe"],"description":"Provider that created the quote.","example":"moonpay"},"status":{"type":"string","enum":["pending","processing","completed","failed"],"description":"Quote status.","example":"pending"},"deliveryMode":{"type":"string","enum":["manual_instructions","hosted","session_widget"],"description":"`hosted` means open `hostedUrl`; `manual_instructions` means display `paymentInstructions`; `session_widget` means mount the provider SDK session.","example":"hosted"},"hostedUrl":{"type":"string","format":"uri","description":"Provider-hosted URL for hosted quote delivery."},"paymentInstructions":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["lightspark"],"description":"Provider that produced this instruction.","example":"lightspark"},"kind":{"type":"string","enum":["crypto_deposit"],"description":"Present when the instruction contains normalized crypto-deposit fields.","example":"crypto_deposit"},"destinationAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Normalized Solana address to fund for crypto-deposit manual instructions.","example":"So11111111111111111111111111111111111111112"},"cryptoCurrency":{"type":"string","enum":["SOL","USDC","USDT","USDG","PYUSD"],"description":"Normalized crypto asset to send for crypto-deposit manual instructions.","example":"USDC"},"network":{"type":"string","enum":["SOLANA"],"description":"Normalized crypto network for crypto-deposit manual instructions.","example":"SOLANA"},"reference":{"type":"string","description":"Provider-side reference or memo required to match the deposit, when applicable."},"accountOrWalletInfo":{"type":"object","properties":{"accountType":{"type":"string","example":"USD_ACCOUNT"},"accountNumber":{"type":"string","example":"0000000000000000"},"routingNumber":{"type":"string","example":"000000000"},"paymentRails":{"type":"array","items":{"type":"string"},"example":["ACH","WIRE"]},"reference":{"type":"string","example":"quote-reference-example"},"bankName":{"type":"string","example":"Example Bank"},"address":{"type":"string","example":"ExampleSolanaWalletAddress11111111111111111"},"assetType":{"type":"string","enum":["SOL","USDC","USDT","USDG","PYUSD"],"example":"USDC"}},"required":["accountType"],"description":"Lightspark bank account or crypto wallet details for funding the ramp."},"instructionsNotes":{"type":"string","description":"Additional human-readable funding instructions."},"isPlatformAccount":{"type":"boolean","description":"Whether the payment instruction belongs to a platform account."}},"required":["provider","accountOrWalletInfo"]},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"],"description":"Provider that produced this instruction.","example":"bvnk"},"kind":{"type":"string","enum":["fiat_funding"],"description":"Fund BVNK's fiat virtual account to receive crypto.","example":"fiat_funding"},"onboardingStatus":{"type":"string","enum":["verification_required","verifying","verification_failed","ready"],"description":"Where the buyer is in BVNK onboarding; 'ready' means the funding wallet is live.","example":"ready"},"verificationUrl":{"type":"string","description":"Identity-verification (KYC) URL the buyer must complete before funding."},"fundingWalletId":{"type":"string","description":"BVNK fiat wallet the buyer funds; the pay-in settles into this wallet."},"fiatCurrency":{"type":"string","description":"Fiat currency the buyer funds the wallet with.","example":"USD"},"beneficiaryAddress":{"type":"string","description":"Destination crypto address the converted funds are sent to."},"network":{"type":"string","description":"Destination blockchain network.","example":"SOLANA"},"paymentReference":{"type":"string","description":"Remittance line the payer must include in the bank transfer reference so the pay-in webhook can attribute the deposit to this transfer.","example":"SDP-ONRAMP xfr_9f3b1c2d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b"},"remittanceInformationPrefix":{"type":"string","description":"Instrument-scoped remittance prefix BVNK prepends to inbound references; shown as its own instruction field, never concatenated into paymentReference.","example":"LCA-ONRAMP"},"bankAccount":{"type":"object","properties":{"accountNumber":{"type":"string"},"code":{"type":"string"},"accountNumberFormat":{"type":"string"},"paymentReference":{"type":"string"},"routingNumber":{"type":"string","example":"021000021"},"bankName":{"type":"string"}},"description":"Bank funding details for the buyer's BVNK virtual account."},"instructionsNotes":{"type":"string","description":"Additional human-readable funding instructions."}},"required":["provider","kind","onboardingStatus","fiatCurrency","beneficiaryAddress","network","instructionsNotes"]},{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"],"description":"Provider that produced this instruction.","example":"bvnk"},"kind":{"type":"string","enum":["crypto_deposit"],"description":"Send crypto to BVNK's deposit address; BVNK converts and pays out fiat.","example":"crypto_deposit"},"fiatCurrency":{"type":"string","enum":["AED","AFN","ALL","AMD","AOA","ARS","AUD","AWG","BAM","BBD","BDT","BHD","BIF","BMD","BND","BOB","BRL","BSD","BTN","BWP","BZD","CAD","CDF","CHF","CLP","CNY","COP","CRC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SOS","SRD","SSP","STN","SYP","SZL","THB","TJS","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYU","UZS","VND","VUV","WST","XAF","XCD","XOF","XPF","YER","ZAR","ZMW"],"description":"Fiat currency BVNK pays out after conversion.","example":"USD"},"destinationAddress":{"type":"string","minLength":32,"maxLength":44,"description":"Solana address to send the crypto deposit to.","example":"So11111111111111111111111111111111111111112"},"cryptoCurrency":{"type":"string","enum":["SOL","USDC","USDT","USDG","PYUSD"],"description":"Crypto asset to send.","example":"USDC"},"network":{"type":"string","enum":["SOLANA"],"description":"Blockchain network for the destination address.","example":"SOLANA"},"reference":{"type":"string","description":"BVNK channel reference tied to SDP's transfer id."},"instructionsNotes":{"type":"string","description":"Additional human-readable funding instructions."}},"required":["provider","kind","fiatCurrency","destinationAddress","cryptoCurrency","network","reference","instructionsNotes"]}]},"description":"Funding instructions for `manual_instructions` delivery (e.g. BVNK on-ramp)."},"exchangeRate":{"type":"number","description":"Units of destination crypto per unit of source fiat."},"totalSendingAmount":{"type":"number","description":"Total sending amount in fiat smallest units, including provider fees."},"sendingCurrency":{"type":"object","properties":{"code":{"type":"string","description":"Provider currency code.","example":"USDC"},"decimals":{"type":"integer","minimum":0,"description":"Provider decimal places for minor-unit amounts.","example":2},"name":{"type":"string","description":"Provider currency display name."},"symbol":{"type":"string","description":"Provider currency symbol."}},"required":["code","decimals"],"description":"Currency metadata for `totalSendingAmount`."},"totalReceivingAmount":{"type":"number","description":"Final crypto amount received in smallest units."},"receivingCurrency":{"type":"object","properties":{"code":{"type":"string","description":"Provider currency code.","example":"USDC"},"decimals":{"type":"integer","minimum":0,"description":"Provider decimal places for minor-unit amounts.","example":2},"name":{"type":"string","description":"Provider currency display name."},"symbol":{"type":"string","description":"Provider currency symbol."}},"required":["code","decimals"],"description":"Currency metadata for `totalReceivingAmount`."},"feesIncluded":{"type":"number","description":"Fees included in the sending amount, in fiat smallest units."},"feeCurrency":{"type":"object","properties":{"code":{"type":"string","description":"Provider currency code.","example":"USDC"},"decimals":{"type":"integer","minimum":0,"description":"Provider decimal places for minor-unit amounts.","example":2},"name":{"type":"string","description":"Provider currency display name."},"symbol":{"type":"string","description":"Provider currency symbol."}},"required":["code","decimals"],"description":"Currency metadata for `feesIncluded`."},"expiresAt":{"type":"string","format":"date-time","description":"Timestamp when the quote expires.","example":"2025-01-01T00:00:00.000Z"},"clientSecret":{"type":"string","description":"Stripe on-ramp session client secret for session widgets."},"sessionId":{"type":"string","description":"Provider session identifier for session widgets."},"publishableKey":{"type":"string","description":"Stripe publishable key used to initialize the on-ramp widget."},"redirectUrl":{"type":"string","format":"uri","description":"Provider redirect URL associated with the widget session."}},"required":["id","provider","status","deliveryMode"],"description":"On-ramp quote details."},"transferId":{"type":"string","description":"Identifier of the transfer record created for this quote. Poll GET /v1/payments/transfers/{transferId} for settlement status."}},"required":["quote","transferId"],"description":"On-ramp quote response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/payments/ramps/sandbox/simulate":{"post":{"tags":["Payments"],"summary":"Simulate sandbox transfer","operationId":"simulateSandboxTransfer","description":"Sandbox-only. Simulates the fiat pay-in for an on-ramp transfer awaiting payment, at most once per transfer.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"transferId":{"type":"string","minLength":1,"description":"ID of an on-ramp transfer that is awaiting payment. The provider, quote reference, counterparty, and fiat amount are read from the transfer; each transfer can be simulated once.","example":"xfr_example"}},"required":["transferId"],"additionalProperties":false,"description":"Sandbox-only helper that simulates the fiat pay-in for a persisted on-ramp quote. Only the transfer ID is accepted; every provider-specific value is derived from the transfer."}}}},"responses":{"204":{"description":"Sandbox pay-in requested from the provider"},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"503":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/transactions":{"get":{"tags":["Payments"],"summary":"List transactions","operationId":"listUnifiedTransactions","description":"Lists the project's transactions across SDP modules with stable cursor pagination. Results are limited to modules allowed by the caller's read permissions: payments:read for payments, private channels, and rings; wallets:read for DvP; and tokens:read for issuance. Requesting a module without its permission returns INSUFFICIENT_PERMISSIONS. `search` matches transaction id, module id, or signature as a prefix, not a substring. The endpoint is metered (60/min per credential, 240/min per organization); exceeding the quota returns 429, and 503 indicates the quota backend was unavailable.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["payments","earn","dvp","private_channels","issuance","rings"]},"required":false,"name":"module","in":"query"},{"schema":{"type":"string"},"required":false,"name":"kind","in":"query"},{"schema":{"type":"string","enum":["pending","succeeded","failed","canceled"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","maxLength":128},"required":false,"name":"custodyWalletId","in":"query"},{"schema":{"type":"string","maxLength":128},"required":false,"name":"counterpartyId","in":"query"},{"schema":{"type":"string","maxLength":128},"required":false,"name":"token","in":"query"},{"schema":{"type":"string","minLength":3,"maxLength":200,"description":"Prefix match against transaction id, module id, or signature — not a substring search."},"required":false,"description":"Prefix match against transaction id, module id, or signature — not a substring search.","name":"search","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":false,"name":"createdAtFrom","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":false,"name":"createdAtTo","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Unified transactions","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"transactions":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string"},"moduleId":{"type":"string"},"status":{"type":"string","enum":["pending","succeeded","failed","canceled"]},"organizationId":{"type":"string"},"projectId":{"type":"string","nullable":true},"custodyWalletId":{"type":"string","nullable":true},"custodyWalletLabel":{"type":"string","nullable":true},"token":{"type":"string","nullable":true},"amount":{"type":"string","nullable":true},"counterpartyId":{"type":"string","nullable":true},"signature":{"type":"string","nullable":true},"createdAt":{"type":"string"},"module":{"type":"string","enum":["payments"]},"kind":{"type":"string","enum":["pay","confidential_pay","batch_pay","recurring_pay","deposit","request_deposit","onramp","offramp"]},"moduleStatus":{"type":"string","enum":["pending","processing","confirmed","finalized","failed","awaiting_payment","settling","completed","canceled","expired"]}},"required":["id","moduleId","status","organizationId","projectId","custodyWalletId","custodyWalletLabel","token","amount","counterpartyId","signature","createdAt","module","kind","moduleStatus"]},{"type":"object","properties":{"id":{"type":"string"},"moduleId":{"type":"string"},"status":{"type":"string","enum":["pending","succeeded","failed","canceled"]},"organizationId":{"type":"string"},"projectId":{"type":"string","nullable":true},"custodyWalletId":{"type":"string","nullable":true},"custodyWalletLabel":{"type":"string","nullable":true},"token":{"type":"string","nullable":true},"amount":{"type":"string","nullable":true},"counterpartyId":{"type":"string","nullable":true},"signature":{"type":"string","nullable":true},"createdAt":{"type":"string"},"module":{"type":"string","enum":["earn"]},"kind":{"type":"string","enum":["deposit","withdraw"]},"moduleStatus":{"type":"string","enum":["requested","processing","pending_approval","completed","partially_completed","failed","cancelled","submitted","confirmed","finalized"]}},"required":["id","moduleId","status","organizationId","projectId","custodyWalletId","custodyWalletLabel","token","amount","counterpartyId","signature","createdAt","module","kind","moduleStatus"]},{"type":"object","properties":{"id":{"type":"string"},"moduleId":{"type":"string"},"status":{"type":"string","enum":["pending","succeeded","failed","canceled"]},"organizationId":{"type":"string"},"projectId":{"type":"string","nullable":true},"custodyWalletId":{"type":"string","nullable":true},"custodyWalletLabel":{"type":"string","nullable":true},"token":{"type":"string","nullable":true},"amount":{"type":"string","nullable":true},"counterpartyId":{"type":"string","nullable":true},"signature":{"type":"string","nullable":true},"createdAt":{"type":"string"},"module":{"type":"string","enum":["dvp"]},"kind":{"type":"string","enum":["fund","close"]},"moduleStatus":{"type":"string","enum":["creating","create_failed","created","partially_funded","funded","settled","cancelled","rejected","expired","closed_unknown"]}},"required":["id","moduleId","status","organizationId","projectId","custodyWalletId","custodyWalletLabel","token","amount","counterpartyId","signature","createdAt","module","kind","moduleStatus"]},{"type":"object","properties":{"id":{"type":"string"},"moduleId":{"type":"string"},"status":{"type":"string","enum":["pending","succeeded","failed","canceled"]},"organizationId":{"type":"string"},"projectId":{"type":"string","nullable":true},"custodyWalletId":{"type":"string","nullable":true},"custodyWalletLabel":{"type":"string","nullable":true},"token":{"type":"string","nullable":true},"amount":{"type":"string","nullable":true},"counterpartyId":{"type":"string","nullable":true},"signature":{"type":"string","nullable":true},"createdAt":{"type":"string"},"module":{"type":"string","enum":["private_channels"]},"kind":{"type":"string","enum":["transfer","deposit","withdraw"]},"moduleStatus":{"type":"string","enum":["pending","submitted","confirmed","settled","failed"]}},"required":["id","moduleId","status","organizationId","projectId","custodyWalletId","custodyWalletLabel","token","amount","counterpartyId","signature","createdAt","module","kind","moduleStatus"]},{"type":"object","properties":{"id":{"type":"string"},"moduleId":{"type":"string"},"status":{"type":"string","enum":["pending","succeeded","failed","canceled"]},"organizationId":{"type":"string"},"projectId":{"type":"string","nullable":true},"custodyWalletId":{"type":"string","nullable":true},"custodyWalletLabel":{"type":"string","nullable":true},"token":{"type":"string","nullable":true},"amount":{"type":"string","nullable":true},"counterpartyId":{"type":"string","nullable":true},"signature":{"type":"string","nullable":true},"createdAt":{"type":"string"},"module":{"type":"string","enum":["issuance"]},"kind":{"type":"string","enum":["mint","burn","freeze","unfreeze","seize","force_burn","update_authority","pause","unpause","deploy"]},"moduleStatus":{"type":"string","enum":["pending","processing","confirmed","finalized","failed"]}},"required":["id","moduleId","status","organizationId","projectId","custodyWalletId","custodyWalletLabel","token","amount","counterpartyId","signature","createdAt","module","kind","moduleStatus"]},{"type":"object","properties":{"id":{"type":"string"},"moduleId":{"type":"string"},"status":{"type":"string","enum":["pending","succeeded","failed","canceled"]},"organizationId":{"type":"string"},"projectId":{"type":"string","nullable":true},"custodyWalletId":{"type":"string","nullable":true},"custodyWalletLabel":{"type":"string","nullable":true},"token":{"type":"string","nullable":true},"amount":{"type":"string","nullable":true},"counterpartyId":{"type":"string","nullable":true},"signature":{"type":"string","nullable":true},"createdAt":{"type":"string"},"module":{"type":"string","enum":["rings"]},"kind":{"type":"string","enum":["shield","transfer_registered","transfer_anonymous","withdraw","merge","timelock_create","timelock_settle","zone_create","ring_exit","ring_entry"]},"moduleStatus":{"type":"string","enum":["draft","preparing","approval_required","proving","ready_to_sign","submitted","indexing","completed","failed","voided"]}},"required":["id","moduleId","status","organizationId","projectId","custodyWalletId","custodyWalletLabel","token","amount","counterpartyId","signature","createdAt","module","kind","moduleStatus"]}]}},"nextCursor":{"type":"string","nullable":true}},"required":["transactions","nextCursor"]}},"required":["data"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"429":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"503":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/compliance/address-screenings":{"post":{"tags":["Compliance"],"summary":"Screen an address across configured compliance providers","operationId":"screenComplianceAddress","description":"Runs address screening against configured compliance providers and returns provider-level risk scores.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","minLength":1,"description":"Address to screen.","example":"8dHEsGLpCZHZbXnFVvqWq4kMfM2pVDuNrXvVJVhQWRGZ"},"network":{"type":"string","minLength":1,"maxLength":64,"default":"solana","description":"Network identifier expected by the compliance provider.","example":"solana"},"intent":{"type":"string","enum":["transfer_destination","wallet_address_addition","unknown"],"default":"unknown","description":"Business intent for address screening.","example":"transfer_destination"}},"required":["address"],"description":"Address compliance screening request payload."}}}},"responses":{"200":{"description":"Address screening results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"screening":{"type":"object","properties":{"address":{"type":"string","description":"Address that was screened.","example":"8dHEsGLpCZHZbXnFVvqWq4kMfM2pVDuNrXvVJVhQWRGZ"},"network":{"type":"string","description":"Network that was screened.","example":"solana"},"intent":{"type":"string","enum":["transfer_destination","wallet_address_addition","unknown"],"description":"Business intent for address screening.","example":"transfer_destination"},"checkedAt":{"type":"string","format":"date-time","description":"Timestamp when all provider checks completed.","example":"2025-01-01T00:00:00.000Z"},"providers":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string","enum":["range","elliptic","trm","chainalysis"],"description":"Compliance provider identifier.","example":"range"},"status":{"type":"string","enum":["ok","pending","unavailable","error"],"description":"Provider response status.","example":"ok"},"riskScore":{"type":"number","nullable":true,"description":"Risk score returned by the provider.","example":7},"riskLevel":{"type":"string","description":"Provider-specific risk level label.","example":"High risk"},"providerStatus":{"type":"string","description":"The provider's own status word, verbatim, retained for audit; the normalized status field is the decision.","example":"COMPLETE"},"message":{"type":"string","description":"Optional provider message, such as warnings or error details."},"evaluatedAt":{"type":"string","format":"date-time","description":"Timestamp when the provider result was produced.","example":"2025-01-01T00:00:00.000Z"}},"required":["provider","status","riskScore","evaluatedAt"],"description":"Address screening result for one provider."}}},"required":["address","network","intent","checkedAt","providers"],"description":"Aggregated address screening response."}},"required":["screening"],"description":"Address screening response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/counterparties/metadata":{"get":{"tags":["Counterparties"],"summary":"Get counterparty field options","operationId":"getCounterpartyFieldOptions","description":"Returns the enum option sets and country list needed to build a counterparty form.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Counterparty field options","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"fields":{"type":"object","properties":{"entityTypes":{"type":"array","items":{"type":"string","enum":["individual","business"]}},"countries":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"ISO 3166-1 alpha-2 code.","example":"US"},"name":{"type":"string","description":"English display name.","example":"United States"}},"required":["code","name"],"description":"Country option."}}},"required":["entityTypes","countries"]}},"required":["fields"],"description":"Field option sets for building a counterparty form: closed enums plus the country list."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/counterparties":{"get":{"tags":["Counterparties"],"summary":"List counterparties","operationId":"listCounterparties","description":"Lists counterparties for the authenticated organization.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"description":"Page number (1-based).","example":1},"required":false,"description":"Page number (1-based).","name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Items per page (max 100).","example":20},"required":false,"description":"Items per page (max 100).","name":"pageSize","in":"query"},{"schema":{"type":"boolean","description":"Include archived counterparties in results.","example":false},"required":false,"description":"Include archived counterparties in results.","name":"includeArchived","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Counterparties list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"counterparties":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","nullable":true,"minLength":1,"description":"Project scope when the counterparty is project-scoped.","example":"prj_example"},"externalId":{"type":"string","nullable":true,"description":"Caller-supplied opaque identifier for cross-system reference. Do not place personal data in this indexed field.","example":"customer_42"},"entityType":{"type":"string","enum":["individual","business"],"description":"Counterparty entity type.","example":"individual"},"displayName":{"type":"string","description":"Human-readable, searchable display name. Keep it minimal because this indexed field is not application-encrypted.","example":"Jane Doe"},"status":{"type":"string","enum":["active","archived"],"description":"Counterparty status.","example":"active"},"createdBy":{"type":"string","nullable":true,"minLength":1,"description":"User who created the counterparty. Null when created via API key.","example":"usr_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","projectId","externalId","entityType","displayName","status","createdBy","createdAt","updatedAt"],"description":"Counterparty record."},"description":"Counterparties."},"total":{"type":"integer","minimum":0,"description":"Total counterparties matching the query.","example":42},"page":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Current page number.","example":1},"pageSize":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Items per page.","example":20}},"required":["counterparties","total","page","pageSize"],"description":"Paginated list of counterparties."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"post":{"tags":["Counterparties"],"summary":"Create counterparty","operationId":"createCounterparty","description":"Creates a counterparty. If externalId is provided, it must be unique within the organization.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":256,"description":"Caller-supplied opaque identifier for cross-system reference. Do not place personal data in this indexed field.","example":"customer_42"},"entityType":{"type":"string","enum":["individual","business"],"description":"Counterparty entity type.","example":"individual"},"displayName":{"type":"string","minLength":1,"maxLength":512,"description":"Human-readable, searchable display name. Keep it minimal because this indexed field is not application-encrypted.","example":"Jane Doe"}},"required":["entityType","displayName"],"description":"Create counterparty request body."}}}},"responses":{"201":{"description":"Counterparty created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"counterparty":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","nullable":true,"minLength":1,"description":"Project scope when the counterparty is project-scoped.","example":"prj_example"},"externalId":{"type":"string","nullable":true,"description":"Caller-supplied opaque identifier for cross-system reference. Do not place personal data in this indexed field.","example":"customer_42"},"entityType":{"type":"string","enum":["individual","business"],"description":"Counterparty entity type.","example":"individual"},"displayName":{"type":"string","description":"Human-readable, searchable display name. Keep it minimal because this indexed field is not application-encrypted.","example":"Jane Doe"},"status":{"type":"string","enum":["active","archived"],"description":"Counterparty status.","example":"active"},"createdBy":{"type":"string","nullable":true,"minLength":1,"description":"User who created the counterparty. Null when created via API key.","example":"usr_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","projectId","externalId","entityType","displayName","status","createdBy","createdAt","updatedAt"],"description":"Counterparty record."}},"required":["counterparty"],"description":"Counterparty response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/counterparties/{counterpartyId}":{"get":{"tags":["Counterparties"],"summary":"Get counterparty","operationId":"getCounterparty","description":"Gets counterparty details by id.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"required":true,"description":"Counterparty identifier.","name":"counterpartyId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Counterparty","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"counterparty":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","nullable":true,"minLength":1,"description":"Project scope when the counterparty is project-scoped.","example":"prj_example"},"externalId":{"type":"string","nullable":true,"description":"Caller-supplied opaque identifier for cross-system reference. Do not place personal data in this indexed field.","example":"customer_42"},"entityType":{"type":"string","enum":["individual","business"],"description":"Counterparty entity type.","example":"individual"},"displayName":{"type":"string","description":"Human-readable, searchable display name. Keep it minimal because this indexed field is not application-encrypted.","example":"Jane Doe"},"status":{"type":"string","enum":["active","archived"],"description":"Counterparty status.","example":"active"},"createdBy":{"type":"string","nullable":true,"minLength":1,"description":"User who created the counterparty. Null when created via API key.","example":"usr_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","projectId","externalId","entityType","displayName","status","createdBy","createdAt","updatedAt"],"description":"Counterparty record."}},"required":["counterparty"],"description":"Counterparty response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"patch":{"tags":["Counterparties"],"summary":"Update counterparty","operationId":"updateCounterparty","description":"Updates counterparty attributes. At least one field must be provided. Use null on externalId to clear it.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"required":true,"description":"Counterparty identifier.","name":"counterpartyId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"externalId":{"type":"string","nullable":true,"minLength":1,"maxLength":256,"description":"Updated opaque external ID. Do not include personal data. Use null to clear.","example":"customer_42"},"entityType":{"type":"string","enum":["individual","business"],"description":"Updated counterparty entity type.","example":"business"},"displayName":{"type":"string","minLength":1,"maxLength":512,"description":"Updated searchable display name. Keep it minimal.","example":"Jane Q. Doe"}},"description":"Update counterparty request body. At least one field must be provided.","minProperties":1}}}},"responses":{"200":{"description":"Counterparty updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"counterparty":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","nullable":true,"minLength":1,"description":"Project scope when the counterparty is project-scoped.","example":"prj_example"},"externalId":{"type":"string","nullable":true,"description":"Caller-supplied opaque identifier for cross-system reference. Do not place personal data in this indexed field.","example":"customer_42"},"entityType":{"type":"string","enum":["individual","business"],"description":"Counterparty entity type.","example":"individual"},"displayName":{"type":"string","description":"Human-readable, searchable display name. Keep it minimal because this indexed field is not application-encrypted.","example":"Jane Doe"},"status":{"type":"string","enum":["active","archived"],"description":"Counterparty status.","example":"active"},"createdBy":{"type":"string","nullable":true,"minLength":1,"description":"User who created the counterparty. Null when created via API key.","example":"usr_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","projectId","externalId","entityType","displayName","status","createdBy","createdAt","updatedAt"],"description":"Counterparty record."}},"required":["counterparty"],"description":"Counterparty response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"409":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"delete":{"tags":["Counterparties"],"summary":"Archive counterparty","operationId":"archiveCounterparty","description":"Archives a counterparty. Archived counterparties are hidden from default lists.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"required":true,"description":"Counterparty identifier.","name":"counterpartyId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"204":{"description":"Counterparty archived"},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/counterparties/{counterpartyId}/requirements":{"get":{"tags":["Counterparties"],"summary":"Get counterparty ramp requirements","operationId":"getCounterpartyRequirements","description":"Evaluates whether a counterparty is ready to create a quote with the selected ramp provider and returns any fields or provider-hosted actions still required. Lightspark off-ramp requests may include destinationCountry to reuse an active payout account for that corridor.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"required":true,"description":"Counterparty identifier.","name":"counterpartyId","in":"path"},{"schema":{"anyOf":[{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe"]},{"type":"string","enum":["lightspark"]},{"type":"string","enum":["moonpay","bvnk","moneygram"]}],"description":"Ramp provider to evaluate.","example":"moonpay"},"required":true,"description":"Ramp provider to evaluate.","name":"provider","in":"query"},{"schema":{"type":"string","enum":["onramp","offramp"],"description":"Ramp direction.","example":"onramp"},"required":true,"description":"Ramp direction.","name":"direction","in":"query"},{"schema":{"type":"string","enum":["sol.solana","usdc.solana","usdt.solana","usdg.solana","pyusd.solana"],"description":"Canonical SDP crypto asset rail.","example":"usdc.solana"},"required":true,"description":"Canonical SDP crypto asset rail.","name":"assetRail","in":"query"},{"schema":{"type":"string","enum":["AED","AFN","ALL","AMD","AOA","ARS","AUD","AWG","BAM","BBD","BDT","BHD","BIF","BMD","BND","BOB","BRL","BSD","BTN","BWP","BZD","CAD","CDF","CHF","CLP","CNY","COP","CRC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SOS","SRD","SSP","STN","SYP","SZL","THB","TJS","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYU","UZS","VND","VUV","WST","XAF","XCD","XOF","XPF","YER","ZAR","ZMW"],"description":"Fiat currency code.","example":"USD"},"required":true,"description":"Fiat currency code.","name":"fiatCurrency","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Custody wallet ID (the `id` returned by the wallets API). Required when direction is onramp.","example":"cwlt_example"},"required":false,"description":"Custody wallet ID (the `id` returned by the wallets API). Required when direction is onramp.","name":"destinationCustodyWalletId","in":"query"},{"schema":{"type":"string","description":"Destination payout country as an ISO 3166-1 alpha-2 code, validated against the supported country set. Valid only for Lightspark off-ramp requirements.","example":"US"},"required":false,"description":"Destination payout country as an ISO 3166-1 alpha-2 code, validated against the supported country set. Valid only for Lightspark off-ramp requirements.","name":"destinationCountry","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Counterparty ramp requirements","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"type":"object","properties":{"direction":{"type":"string","enum":["onramp","offramp"],"description":"Ramp direction evaluated for this counterparty.","example":"onramp"},"provider":{"type":"string","enum":["moonpay","bvnk","moneygram","coinbase","stripe"]},"status":{"type":"string","enum":["ready"]}},"required":["direction","provider","status"]},{"type":"object","properties":{"direction":{"type":"string","enum":["onramp"]},"provider":{"type":"string","enum":["lightspark"]},"status":{"type":"string","enum":["ready"]}},"required":["direction","provider","status"]},{"type":"object","properties":{"direction":{"type":"string","enum":["offramp"]},"provider":{"type":"string","enum":["lightspark"]},"status":{"type":"string","enum":["ready"]},"providerAccountId":{"type":"string"},"payout":{"type":"object","properties":{"countryRails":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"]}}},"railFields":{"type":"object","additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["text"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"pattern":{"type":"string"},"minLength":{"type":"integer","minimum":0},"maxLength":{"type":"integer","minimum":0},"placeholder":{"type":"string"},"mask":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["select"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"]}}},"required":["kind","key","label","required","options"]},{"type":"object","properties":{"kind":{"type":"string","enum":["country"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of country codes the client may offer; absent means every supported country."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["currency"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of fiat currencies the client may offer; absent means every supported currency."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["date"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"before":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["address"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"fields":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["text"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"pattern":{"type":"string"},"minLength":{"type":"integer","minimum":0},"maxLength":{"type":"integer","minimum":0},"placeholder":{"type":"string"},"mask":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["select"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"]}}},"required":["kind","key","label","required","options"]},{"type":"object","properties":{"kind":{"type":"string","enum":["country"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of country codes the client may offer; absent means every supported country."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["currency"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of fiat currencies the client may offer; absent means every supported currency."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["date"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"before":{"type":"string"}},"required":["kind","key","label","required"]}]}}},"required":["kind","key","label","required","fields"]}]}}},"accounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"destinationCountry":{"type":"string","description":"ISO 3166-1 alpha-2 country code. Documented as a string; the API validates against the supported country set.","example":"US"},"paymentRail":{"type":"string","nullable":true},"status":{"type":"string"},"bankName":{"type":"string"},"accountNumberLast4":{"type":"string"}},"required":["id","destinationCountry","paymentRail","status"]}}},"required":["countryRails","railFields","accounts"]}},"required":["direction","provider","status","providerAccountId"]},{"type":"object","properties":{"direction":{"type":"string","enum":["onramp","offramp"],"description":"Ramp direction evaluated for this counterparty.","example":"onramp"},"provider":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe"]},"status":{"type":"string","enum":["collect"]},"fields":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["text"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"pattern":{"type":"string"},"minLength":{"type":"integer","minimum":0},"maxLength":{"type":"integer","minimum":0},"placeholder":{"type":"string"},"mask":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["select"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"]}}},"required":["kind","key","label","required","options"]},{"type":"object","properties":{"kind":{"type":"string","enum":["country"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of country codes the client may offer; absent means every supported country."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["currency"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of fiat currencies the client may offer; absent means every supported currency."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["date"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"before":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["address"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"fields":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["text"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"pattern":{"type":"string"},"minLength":{"type":"integer","minimum":0},"maxLength":{"type":"integer","minimum":0},"placeholder":{"type":"string"},"mask":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["select"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"]}}},"required":["kind","key","label","required","options"]},{"type":"object","properties":{"kind":{"type":"string","enum":["country"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of country codes the client may offer; absent means every supported country."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["currency"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of fiat currencies the client may offer; absent means every supported currency."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["date"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"before":{"type":"string"}},"required":["kind","key","label","required"]}]}}},"required":["kind","key","label","required","fields"]}]}}},"required":["direction","provider","status","fields"]},{"type":"object","properties":{"direction":{"type":"string","enum":["onramp","offramp"],"description":"Ramp direction evaluated for this counterparty.","example":"onramp"},"provider":{"type":"string","enum":["lightspark"]},"status":{"type":"string","enum":["collect_counterparty"]},"fields":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["text"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"pattern":{"type":"string"},"minLength":{"type":"integer","minimum":0},"maxLength":{"type":"integer","minimum":0},"placeholder":{"type":"string"},"mask":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["select"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"]}}},"required":["kind","key","label","required","options"]},{"type":"object","properties":{"kind":{"type":"string","enum":["country"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of country codes the client may offer; absent means every supported country."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["currency"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of fiat currencies the client may offer; absent means every supported currency."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["date"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"before":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["address"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"fields":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["text"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"pattern":{"type":"string"},"minLength":{"type":"integer","minimum":0},"maxLength":{"type":"integer","minimum":0},"placeholder":{"type":"string"},"mask":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["select"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"]}}},"required":["kind","key","label","required","options"]},{"type":"object","properties":{"kind":{"type":"string","enum":["country"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of country codes the client may offer; absent means every supported country."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["currency"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of fiat currencies the client may offer; absent means every supported currency."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["date"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"before":{"type":"string"}},"required":["kind","key","label","required"]}]}}},"required":["kind","key","label","required","fields"]}]}}},"required":["direction","provider","status","fields"]},{"type":"object","properties":{"direction":{"type":"string","enum":["onramp","offramp"],"description":"Ramp direction evaluated for this counterparty.","example":"onramp"},"provider":{"type":"string","enum":["bvnk"]},"status":{"type":"string","enum":["collect_counterparty"]},"fields":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["text"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"pattern":{"type":"string"},"minLength":{"type":"integer","minimum":0},"maxLength":{"type":"integer","minimum":0},"placeholder":{"type":"string"},"mask":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["select"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"]}}},"required":["kind","key","label","required","options"]},{"type":"object","properties":{"kind":{"type":"string","enum":["country"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of country codes the client may offer; absent means every supported country."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["currency"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of fiat currencies the client may offer; absent means every supported currency."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["date"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"before":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["address"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"fields":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["text"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"pattern":{"type":"string"},"minLength":{"type":"integer","minimum":0},"maxLength":{"type":"integer","minimum":0},"placeholder":{"type":"string"},"mask":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["select"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"]}}},"required":["kind","key","label","required","options"]},{"type":"object","properties":{"kind":{"type":"string","enum":["country"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of country codes the client may offer; absent means every supported country."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["currency"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of fiat currencies the client may offer; absent means every supported currency."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["date"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"before":{"type":"string"}},"required":["kind","key","label","required"]}]}}},"required":["kind","key","label","required","fields"]}]}}},"required":["direction","provider","status","fields"]},{"type":"object","properties":{"direction":{"type":"string","enum":["onramp","offramp"],"description":"Ramp direction evaluated for this counterparty.","example":"onramp"},"provider":{"type":"string","enum":["bvnk"]},"status":{"type":"string","enum":["collect_counterparty_residence"]},"fields":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["text"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"pattern":{"type":"string"},"minLength":{"type":"integer","minimum":0},"maxLength":{"type":"integer","minimum":0},"placeholder":{"type":"string"},"mask":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["select"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"]}}},"required":["kind","key","label","required","options"]},{"type":"object","properties":{"kind":{"type":"string","enum":["country"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of country codes the client may offer; absent means every supported country."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["currency"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of fiat currencies the client may offer; absent means every supported currency."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["date"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"before":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["address"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"fields":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["text"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"pattern":{"type":"string"},"minLength":{"type":"integer","minimum":0},"maxLength":{"type":"integer","minimum":0},"placeholder":{"type":"string"},"mask":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["select"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"]}}},"required":["kind","key","label","required","options"]},{"type":"object","properties":{"kind":{"type":"string","enum":["country"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of country codes the client may offer; absent means every supported country."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["currency"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of fiat currencies the client may offer; absent means every supported currency."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["date"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"before":{"type":"string"}},"required":["kind","key","label","required"]}]}}},"required":["kind","key","label","required","fields"]}]}}},"required":["direction","provider","status","fields"]},{"type":"object","properties":{"direction":{"type":"string","enum":["onramp","offramp"],"description":"Ramp direction evaluated for this counterparty.","example":"onramp"},"provider":{"type":"string","enum":["lightspark"]},"status":{"type":"string","enum":["collect_account"]},"payout":{"type":"object","properties":{"countryRails":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"]}}},"railFields":{"type":"object","additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["text"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"pattern":{"type":"string"},"minLength":{"type":"integer","minimum":0},"maxLength":{"type":"integer","minimum":0},"placeholder":{"type":"string"},"mask":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["select"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"]}}},"required":["kind","key","label","required","options"]},{"type":"object","properties":{"kind":{"type":"string","enum":["country"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of country codes the client may offer; absent means every supported country."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["currency"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of fiat currencies the client may offer; absent means every supported currency."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["date"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"before":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["address"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"fields":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["text"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"pattern":{"type":"string"},"minLength":{"type":"integer","minimum":0},"maxLength":{"type":"integer","minimum":0},"placeholder":{"type":"string"},"mask":{"type":"string"}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["select"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"]}}},"required":["kind","key","label","required","options"]},{"type":"object","properties":{"kind":{"type":"string","enum":["country"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of country codes the client may offer; absent means every supported country."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["currency"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"options":{"type":"array","items":{"type":"string"},"description":"Subset of fiat currencies the client may offer; absent means every supported currency."}},"required":["kind","key","label","required"]},{"type":"object","properties":{"kind":{"type":"string","enum":["date"]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"before":{"type":"string"}},"required":["kind","key","label","required"]}]}}},"required":["kind","key","label","required","fields"]}]}}},"accounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"destinationCountry":{"type":"string","description":"ISO 3166-1 alpha-2 country code. Documented as a string; the API validates against the supported country set.","example":"US"},"paymentRail":{"type":"string","nullable":true},"status":{"type":"string"},"bankName":{"type":"string"},"accountNumberLast4":{"type":"string"}},"required":["id","destinationCountry","paymentRail","status"]}}},"required":["countryRails","railFields","accounts"]}},"required":["direction","provider","status","payout"]},{"type":"object","properties":{"direction":{"type":"string","enum":["onramp","offramp"],"description":"Ramp direction evaluated for this counterparty.","example":"onramp"},"provider":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe"]},"status":{"type":"string","enum":["unsupported"]},"reason":{"type":"string"}},"required":["direction","provider","status","reason"]},{"type":"object","properties":{"direction":{"type":"string","enum":["onramp","offramp"],"description":"Ramp direction evaluated for this counterparty.","example":"onramp"},"provider":{"type":"string","enum":["lightspark"]},"status":{"type":"string","enum":["onboarding_not_started"]}},"required":["direction","provider","status"]},{"type":"object","properties":{"direction":{"type":"string","enum":["onramp","offramp"],"description":"Ramp direction evaluated for this counterparty.","example":"onramp"},"provider":{"type":"string","enum":["bvnk"]},"status":{"type":"string","enum":["counterparty_collect_agreement"]},"agreements":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"BVNK agreement identifier (v1 agreements have no id)."},"displayName":{"type":"string","description":"Agreement display name."},"description":{"type":"string","description":"Agreement summary text."},"url":{"type":"string","format":"uri","description":"Agreement text URL, stored statically on the customer link."},"privacyPolicyUrl":{"type":"string","format":"uri","description":"Privacy policy URL, stored statically on the customer link."}},"required":["name","displayName","description","url","privacyPolicyUrl"]}}},"required":["direction","provider","status","agreements"]},{"type":"object","properties":{"direction":{"type":"string","enum":["onramp","offramp"],"description":"Ramp direction evaluated for this counterparty.","example":"onramp"},"provider":{"type":"string","enum":["bvnk"]},"status":{"type":"string","enum":["customer_verification_required"]},"verificationUrl":{"type":"string","format":"uri"}},"required":["direction","provider","status","verificationUrl"]},{"type":"object","properties":{"direction":{"type":"string","enum":["onramp","offramp"],"description":"Ramp direction evaluated for this counterparty.","example":"onramp"},"provider":{"type":"string","enum":["bvnk"]},"status":{"type":"string","enum":["customer_verifying","customer_verification_failed"]}},"required":["direction","provider","status"]},{"type":"object","properties":{"direction":{"type":"string","enum":["onramp","offramp"],"description":"Ramp direction evaluated for this counterparty.","example":"onramp"},"provider":{"type":"string","enum":["bvnk"]},"status":{"type":"string","enum":["counterparty_agreement_signing"]}},"required":["direction","provider","status"]},{"type":"object","properties":{"direction":{"type":"string","enum":["onramp","offramp"],"description":"Ramp direction evaluated for this counterparty.","example":"onramp"},"provider":{"type":"string","enum":["bvnk"]},"status":{"type":"string","enum":["customer_funding_account_provisioning"]}},"required":["direction","provider","status"]},{"type":"object","properties":{"direction":{"type":"string","enum":["onramp","offramp"],"description":"Ramp direction evaluated for this counterparty.","example":"onramp"},"provider":{"type":"string","enum":["bvnk"]},"status":{"type":"string","enum":["customer_funding_account_provisioning_failed"]}},"required":["direction","provider","status"]}],"description":"Current provider-specific readiness state and any fields or actions required before creating a ramp quote."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/counterparties/{counterpartyId}/accounts":{"get":{"tags":["Counterparties"],"summary":"List counterparty accounts","operationId":"listCounterpartyAccounts","description":"Lists payment accounts for a counterparty. Crypto-wallet accounts can be used by payment flows that send funds to a counterparty wallet.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"required":true,"description":"Counterparty identifier.","name":"counterpartyId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"description":"Page number (1-based).","example":1},"required":false,"description":"Page number (1-based).","name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Items per page (max 100).","example":20},"required":false,"description":"Items per page (max 100).","name":"pageSize","in":"query"},{"schema":{"type":"boolean","description":"Include archived counterparty accounts in results.","example":false},"required":false,"description":"Include archived counterparty accounts in results.","name":"includeArchived","in":"query"},{"schema":{"type":"string","enum":["crypto_wallet"],"description":"Filter accounts by account kind.","example":"crypto_wallet"},"required":false,"description":"Filter accounts by account kind.","name":"accountKind","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Counterparty account list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"accounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Counterparty account identifier.","example":"cpa_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"counterpartyId":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"accountKind":{"type":"string","enum":["crypto_wallet"],"description":"Counterparty account kind.","example":"crypto_wallet"},"label":{"type":"string","nullable":true,"description":"Optional human-readable account label.","example":"USDC wallet"},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Account details. For crypto_wallet accounts, include network: \"solana\" and address as a Solana wallet address.","example":{"network":"solana","address":"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"}},"providerAccountData":{"type":"object","additionalProperties":{"nullable":true},"description":"Provider-specific account metadata preserved by SDP.","example":{}},"status":{"type":"string","enum":["active","archived"],"description":"Counterparty account status.","example":"active"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","projectId","counterpartyId","accountKind","label","details","providerAccountData","status","createdAt","updatedAt"],"description":"Counterparty payment account record."},"description":"Counterparty accounts."},"total":{"type":"integer","minimum":0,"description":"Total counterparty accounts matching the query.","example":2},"page":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Current page number.","example":1},"pageSize":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Items per page.","example":20}},"required":["accounts","total","page","pageSize"],"description":"Paginated list of counterparty accounts."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"post":{"tags":["Counterparties"],"summary":"Create counterparty account","operationId":"createCounterpartyAccount","description":"Creates a payment account for a counterparty. For accountKind \"crypto_wallet\", details.network must be \"solana\" and details.address must be a Solana wallet address.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"required":true,"description":"Counterparty identifier.","name":"counterpartyId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountKind":{"type":"string","enum":["crypto_wallet"],"description":"Counterparty account kind.","example":"crypto_wallet"},"label":{"type":"string","minLength":1,"maxLength":256,"description":"Optional account label.","example":"USDC wallet"},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"For crypto_wallet accounts, must include network: \"solana\" and address as a Solana wallet address.","example":{"network":"solana","address":"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"}},"providerAccountData":{"type":"object","additionalProperties":{"nullable":true},"description":"Provider-specific metadata to preserve with the account.","example":{}}},"required":["accountKind"],"description":"Create counterparty account request body."}}}},"responses":{"201":{"description":"Counterparty account created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"account":{"type":"object","properties":{"id":{"type":"string","description":"Counterparty account identifier.","example":"cpa_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"counterpartyId":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"accountKind":{"type":"string","enum":["crypto_wallet"],"description":"Counterparty account kind.","example":"crypto_wallet"},"label":{"type":"string","nullable":true,"description":"Optional human-readable account label.","example":"USDC wallet"},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Account details. For crypto_wallet accounts, include network: \"solana\" and address as a Solana wallet address.","example":{"network":"solana","address":"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"}},"providerAccountData":{"type":"object","additionalProperties":{"nullable":true},"description":"Provider-specific account metadata preserved by SDP.","example":{}},"status":{"type":"string","enum":["active","archived"],"description":"Counterparty account status.","example":"active"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","projectId","counterpartyId","accountKind","label","details","providerAccountData","status","createdAt","updatedAt"],"description":"Counterparty payment account record."}},"required":["account"],"description":"Counterparty account response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/counterparties/{counterpartyId}/provider-accounts":{"get":{"tags":["Counterparties"],"summary":"List counterparty provider accounts","operationId":"listCounterpartyProviderAccounts","description":"Lists provider-owned fiat payout accounts for a counterparty. Provider details are fetched just in time and account numbers are returned only as last-four digits.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"required":true,"description":"Counterparty identifier.","name":"counterpartyId","in":"path"},{"schema":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe"],"description":"Filter by ramp provider.","example":"lightspark"},"required":false,"description":"Filter by ramp provider.","name":"provider","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Filter by fiat currency.","example":"USD"},"required":false,"description":"Filter by fiat currency.","name":"fiatCurrency","in":"query"},{"schema":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","VG","BN","BG","BF","BI","KH","CM","CA","CV","BQ","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","KP","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","KR","SS","ES","LK","BL","SH","KN","LC","MF","PM","VC","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UM","VI","UG","UA","AE","GB","US","UY","UZ","VU","VA","VE","VN","WF","EH","YE","ZM","ZW"],"description":"Filter by ISO 3166-1 alpha-2 destination country.","example":"US"},"required":false,"description":"Filter by ISO 3166-1 alpha-2 destination country.","name":"destinationCountry","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Counterparty provider-account list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"accounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Counterparty provider-account row identifier.","example":"counterparty_provider_account_example"},"provider":{"type":"string","enum":["moonpay","lightspark","bvnk","moneygram","coinbase","stripe","hercle","mural"],"description":"Ramp provider owning the account. A retired provider's accounts keep its id.","example":"lightspark"},"kind":{"type":"string","enum":["customer_link","payout_account","funding_wallet","merchant_wallet"],"description":"Provider-account resource kind.","example":"payout_account"},"fiatCurrency":{"type":"string","nullable":true,"description":"Fiat currency for the provider account corridor. Null on customer-link rows.","example":"USD"},"destinationCountry":{"type":"string","nullable":true,"enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","VG","BN","BG","BF","BI","KH","CM","CA","CV","BQ","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","KP","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","KR","SS","ES","LK","BL","SH","KN","LC","MF","PM","VC","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UM","VI","UG","UA","AE","GB","US","UY","UZ","VU","VA","VE","VN","WF","EH","YE","ZM","ZW",null],"description":"Destination country for the provider account corridor. Null on customer-link rows.","example":"US"},"paymentRail":{"type":"string","nullable":true,"description":"Payment rail selected for the corridor row.","example":"ACH"},"status":{"type":"string","enum":["active","archived"],"description":"Counterparty account status.","example":"active"},"providerStatus":{"type":"string","nullable":true,"description":"Current provider-side account status when known.","example":"ACTIVE"},"createdAt":{"type":"string","format":"date-time","description":"SDP row creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"bankName":{"type":"string","description":"Bank name returned by the provider when available.","example":"Example Bank"},"accountNumberLast4":{"type":"string","description":"Last four digits of the provider account number.","example":"6789"},"paymentRails":{"type":"array","items":{"type":"string"},"description":"Payment rails returned by the provider when available.","example":["ACH","WIRE"]},"customerLink":{"oneOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["bvnk"]},"id":{"type":"string","description":"Customer-link row identifier.","example":"counterparty_provider_account_customer"},"status":{"type":"string","enum":["active","archived"],"description":"Counterparty account status.","example":"active"},"providerStatus":{"type":"string","nullable":true,"description":"Provider-side customer status when known; for BVNK links before the customer exists, one of PENDING_AGREEMENT / AGREEMENT_SIGNED.","example":"ACTIVE"},"createdAt":{"type":"string","format":"date-time","description":"Customer-link row creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"providerCustomerReference":{"type":"string","nullable":true,"description":"BVNK customer reference; null until the v1 customer exists.","example":"2a9c8a29-5030-456d-87c2-7f6cc2ee6bf3"},"residenceCountryCode":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","VG","BN","BG","BF","BI","KH","CM","CA","CV","BQ","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","KP","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","KR","SS","ES","LK","BL","SH","KN","LC","MF","PM","VC","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UM","VI","UG","UA","AE","GB","US","UY","UZ","VU","VA","VE","VN","WF","EH","YE","ZM","ZW"],"description":"Tax-residence country the agreement session was minted for.","example":"US"},"agreements":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Agreement identifier.","example":"EMBEDDED_PARTNER_PLATFORM_CUSTOMERS_US"},"displayName":{"type":"string","description":"Human-readable agreement title.","example":"Embedded US Partner Platform Customers Agreement"},"url":{"type":"string","description":"Agreement document URL.","example":"https://help.bvnk.com/hc/en-us/sections/example"},"privacyPolicyUrl":{"type":"string","description":"Privacy policy document URL.","example":"https://help.bvnk.com/hc/en-us/articles/example"},"signedAt":{"type":"string","nullable":true,"format":"date-time","description":"When the counterparty signed the agreement session; null while consent is pending.","example":"2025-01-01T00:00:00.000Z"}},"required":["name","displayName","url","privacyPolicyUrl","signedAt"]},"description":"Agreements of the session with their signing state."}},"required":["provider","id","status","providerStatus","createdAt","providerCustomerReference","residenceCountryCode","agreements"]},{"type":"object","properties":{"provider":{"type":"string","enum":["moonpay","lightspark","moneygram","coinbase","stripe","hercle","mural"]},"id":{"type":"string","description":"Customer-link row identifier.","example":"counterparty_provider_account_customer"},"status":{"type":"string","enum":["active","archived"],"description":"Counterparty account status.","example":"active"},"providerStatus":{"type":"string","nullable":true,"description":"Provider-side customer status when known; for BVNK links before the customer exists, one of PENDING_AGREEMENT / AGREEMENT_SIGNED.","example":"ACTIVE"},"createdAt":{"type":"string","format":"date-time","description":"Customer-link row creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"providerCustomerReference":{"type":"string","description":"Provider-side customer identifier for the counterparty.","example":"Customer:0193b2c4"}},"required":["provider","id","status","providerStatus","createdAt","providerCustomerReference"]}],"description":"The counterparty's provider customer link, present once the provider onboarding has started."},"providerAccountReference":{"type":"string","description":"The provider's own wallet/account id; present on wallet kinds once the provider assigned it.","example":"a:26091815750755:c1aVEgc:1"},"balance":{"oneOf":[{"type":"object","properties":{"state":{"type":"string","enum":["available"]},"amount":{"type":"string","description":"Live wallet balance as a decimal string.","example":"9.90"},"currency":{"type":"string","description":"Balance currency.","example":"USD"}},"required":["state","amount","currency"]},{"type":"object","properties":{"state":{"type":"string","enum":["unavailable"]}},"required":["state"]}],"description":"Live provider-wallet balance, fetched just in time; present only on wallet kinds whose reference exists. unavailable keeps the row visible when the provider read fails."}},"required":["id","provider","kind","fiatCurrency","destinationCountry","paymentRail","status","providerStatus","createdAt"],"description":"Counterparty provider-account row with optional JIT provider details."},"description":"External provider accounts for the counterparty."}},"required":["accounts"],"description":"Counterparty provider-account list."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"503":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/counterparties/{counterpartyId}/accounts/{counterpartyAccountId}":{"get":{"tags":["Counterparties"],"summary":"Get counterparty account","operationId":"getCounterpartyAccount","description":"Gets a counterparty payment account by id.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"required":true,"description":"Counterparty identifier.","name":"counterpartyId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Counterparty account identifier.","example":"cpa_example"},"required":true,"description":"Counterparty account identifier.","name":"counterpartyAccountId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Counterparty account","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"account":{"type":"object","properties":{"id":{"type":"string","description":"Counterparty account identifier.","example":"cpa_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"counterpartyId":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"accountKind":{"type":"string","enum":["crypto_wallet"],"description":"Counterparty account kind.","example":"crypto_wallet"},"label":{"type":"string","nullable":true,"description":"Optional human-readable account label.","example":"USDC wallet"},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Account details. For crypto_wallet accounts, include network: \"solana\" and address as a Solana wallet address.","example":{"network":"solana","address":"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"}},"providerAccountData":{"type":"object","additionalProperties":{"nullable":true},"description":"Provider-specific account metadata preserved by SDP.","example":{}},"status":{"type":"string","enum":["active","archived"],"description":"Counterparty account status.","example":"active"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","projectId","counterpartyId","accountKind","label","details","providerAccountData","status","createdAt","updatedAt"],"description":"Counterparty payment account record."}},"required":["account"],"description":"Counterparty account response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"patch":{"tags":["Counterparties"],"summary":"Update counterparty account","operationId":"updateCounterpartyAccount","description":"Updates a counterparty payment account. At least one field must be provided.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"required":true,"description":"Counterparty identifier.","name":"counterpartyId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Counterparty account identifier.","example":"cpa_example"},"required":true,"description":"Counterparty account identifier.","name":"counterpartyAccountId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","nullable":true,"minLength":1,"maxLength":256,"description":"Updated account label. Use null to clear.","example":"Primary USDC wallet"},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Updated account details. Crypto-wallet accounts must retain network: \"solana\" and a valid Solana wallet address.","example":{"network":"solana","address":"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"}},"providerAccountData":{"type":"object","additionalProperties":{"nullable":true},"description":"Updated provider-specific metadata.","example":{}}},"description":"Update counterparty account request body. At least one field must be provided.","minProperties":1}}}},"responses":{"200":{"description":"Counterparty account updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"account":{"type":"object","properties":{"id":{"type":"string","description":"Counterparty account identifier.","example":"cpa_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"counterpartyId":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"accountKind":{"type":"string","enum":["crypto_wallet"],"description":"Counterparty account kind.","example":"crypto_wallet"},"label":{"type":"string","nullable":true,"description":"Optional human-readable account label.","example":"USDC wallet"},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Account details. For crypto_wallet accounts, include network: \"solana\" and address as a Solana wallet address.","example":{"network":"solana","address":"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"}},"providerAccountData":{"type":"object","additionalProperties":{"nullable":true},"description":"Provider-specific account metadata preserved by SDP.","example":{}},"status":{"type":"string","enum":["active","archived"],"description":"Counterparty account status.","example":"active"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","projectId","counterpartyId","accountKind","label","details","providerAccountData","status","createdAt","updatedAt"],"description":"Counterparty payment account record."}},"required":["account"],"description":"Counterparty account response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"delete":{"tags":["Counterparties"],"summary":"Archive counterparty account","operationId":"archiveCounterpartyAccount","description":"Archives a counterparty payment account. Archived accounts are hidden from default lists.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Counterparty identifier.","example":"cpty_example"},"required":true,"description":"Counterparty identifier.","name":"counterpartyId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Counterparty account identifier.","example":"cpa_example"},"required":true,"description":"Counterparty account identifier.","name":"counterpartyAccountId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"204":{"description":"Counterparty account archived"},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/asset-profiles/field-options":{"get":{"tags":["Asset Profiles"],"summary":"Get asset profile field options","operationId":"getAssetProfileFieldOptions","description":"Returns the supported asset categories and the asset types available within each, for building an asset profile form.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Asset profile field options","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"fields":{"type":"object","properties":{"categories":{"type":"array","items":{"type":"string","enum":["generic","stablecoin","tokenized_security"]}},"types":{"type":"object","properties":{"generic":{"type":"array","items":{"type":"string","enum":["generic","commodity","real_estate","collectible"]}},"stablecoin":{"type":"array","items":{"type":"string","enum":["fiat_backed","crypto_backed","generic"]}},"tokenized_security":{"type":"array","items":{"type":"string","enum":["generic","equity","debt","fund"]}}},"required":["generic","stablecoin","tokenized_security"]}},"required":["categories","types"]}},"required":["fields"],"description":"Field option sets for building an asset profile form: supported categories and the asset types available within each."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/asset-profiles":{"get":{"tags":["Asset Profiles"],"summary":"List asset profiles","operationId":"listAssetProfiles","description":"Lists asset profiles for the authenticated organization and project.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1,"description":"Page number (1-based).","example":1},"required":false,"description":"Page number (1-based).","name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Items per page (max 100).","example":20},"required":false,"description":"Items per page (max 100).","name":"pageSize","in":"query"},{"schema":{"type":"boolean","description":"Include archived asset profiles in results.","example":false},"required":false,"description":"Include archived asset profiles in results.","name":"includeArchived","in":"query"},{"schema":{"type":"string","enum":["generic","stablecoin","tokenized_security"],"description":"Filter by asset category.","example":"stablecoin"},"required":false,"description":"Filter by asset category.","name":"category","in":"query"},{"schema":{"type":"string","description":"Restrict results to these token ids as a comma-separated list (max 100). Lets a client hydrate exactly the tokens on the page it is rendering.","example":"tok_abc123,tok_def456"},"required":false,"description":"Restrict results to these token ids as a comma-separated list (max 100). Lets a client hydrate exactly the tokens on the page it is rendering.","name":"tokenIds","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Asset profiles list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"assetProfiles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Asset profile identifier.","example":"asset_profile_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"tokenId":{"type":"string","description":"Identifier of the issued token this profile describes.","example":"tok_example"},"assetCategory":{"type":"string","enum":["generic","stablecoin","tokenized_security"],"description":"Broad product/regulatory grouping for an issued asset.","example":"stablecoin"},"assetType":{"type":"string","description":"Concrete asset type within the category.","example":"fiat_backed"},"assetTypeVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Version of the asset type registry contract this profile was validated against.","example":2},"issuanceMetadata":{"type":"object","properties":{"asset":{"type":"object","additionalProperties":{"nullable":true}},"compliance":{"type":"object","additionalProperties":{"nullable":true}},"chain":{"type":"object","additionalProperties":{"nullable":true}},"custom":{"type":"object","properties":{"customer":{"type":"object","additionalProperties":{"nullable":true}},"integration":{"type":"object","additionalProperties":{"nullable":true}}}},"visibility":{"type":"object","properties":{"public":{"type":"array","items":{"type":"string"}}}},"settings":{"type":"object","properties":{"version":{"type":"integer","minimum":0,"exclusiveMinimum":true},"selected":{"type":"object","additionalProperties":{"type":"object","properties":{"params":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}}},"additionalProperties":false}}},"required":["selected"],"additionalProperties":false}},"additionalProperties":{"nullable":true},"description":"Canonical, private master metadata for the asset. SDP-owned namespaces (asset, compliance, chain) plus a namespaced custom bucket (customer, integration). The optional `visibility.public` array holds the issuance_metadata dot-paths the issuer chose to expose publicly; when omitted, the asset type's registry default is used. Only asset.* and chain.decimals paths can ever be projected publicly — compliance and custom fields are private by default and can never be exposed, even if listed in visibility.public. The optional `settings` namespace holds the selected advanced (Token-2022) settings; `version` is server-stamped and each selected key is validated against the asset type's capability.","example":{"asset":{"name":"Acme USD","issuerName":"Acme Financial Inc.","pegCurrency":"USD","website":"https://acme.example"},"compliance":{"transferRestrictions":"reg_d"},"chain":{"decimals":6},"custom":{"customer":{"internalDeskId":"FX-22"},"integration":{}},"visibility":{"public":["asset.name","asset.issuerName","asset.pegCurrency","chain.decimals"]},"settings":{"version":1,"selected":{"pauseTransfers":{},"freezeAccounts":{},"transferFee":{"params":{"basisPoints":50,"maxFee":"100"}}}}}},"publicMetadata":{"type":"object","additionalProperties":{"nullable":true},"description":"Safe public subset of the issuance metadata, derived via the asset type's projection rules. Served by the public token metadata URI.","example":{"asset":{"name":"Acme USD","issuerName":"Acme Financial Inc.","pegCurrency":"USD"},"chain":{"decimals":6}}},"status":{"type":"string","enum":["active","archived"],"description":"Asset profile status.","example":"active"},"createdBy":{"type":"string","nullable":true,"minLength":1,"description":"User who created the profile. Null when created via API key.","example":"usr_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","projectId","tokenId","assetCategory","assetType","assetTypeVersion","issuanceMetadata","publicMetadata","status","createdBy","createdAt","updatedAt"],"description":"Asset profile record: SDP-owned description of what an issued token represents."},"description":"Asset profiles."},"total":{"type":"integer","minimum":0,"description":"Total asset profiles matching the query.","example":7},"page":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Current page number.","example":1},"pageSize":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Items per page.","example":20}},"required":["assetProfiles","total","page","pageSize"],"description":"Paginated list of asset profiles."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"post":{"tags":["Asset Profiles"],"summary":"Create token with asset profile","operationId":"createTokenWithAssetProfile","description":"Creates an issued token and its asset profile atomically in a single transaction: if either write fails, both roll back, so a token is never persisted without a profile. Requires the Asset Profiles feature to be enabled.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Token name.","example":"Example Token"},"symbol":{"type":"string","minLength":1,"maxLength":10,"pattern":"^[A-Za-z0-9]+(?:\\.[A-Za-z0-9]+)*$","description":"Ticker symbol.","example":"EXM"},"signingCustodyWalletId":{"type":"string","minLength":1,"description":"Optional exact SDP Wallet ID for direct deployment. A draft may defer selection until deploy.","example":"cwlt_example"},"decimals":{"type":"integer","minimum":0,"maximum":18,"description":"Token decimals.","example":6},"description":{"type":"string","maxLength":500,"description":"Token description.","example":"Example token description."},"uri":{"type":"string","maxLength":512,"format":"uri","description":"Metadata URI passed to on-chain token metadata (points to off-chain JSON).","example":"https://example.com/metadata.json"},"imageUrl":{"type":"string","maxLength":512,"format":"uri","description":"Token image URL.","example":"https://example.com/token.png"},"maxSupply":{"type":"string","description":"Maximum supply as a string (UI units).","example":"1000000"},"template":{"type":"string","enum":["stablecoin","arcade","tokenized-security","custom"],"description":"Token template preset. Defaults to 'custom' if not specified.","example":"stablecoin"},"overrides":{"type":"object","properties":{"extensions":{"type":"object","properties":{"transferFee":{"anyOf":[{"type":"boolean","enum":[false]},{"type":"object","properties":{"basisPoints":{"type":"integer","minimum":0,"maximum":10000,"description":"Transfer fee in basis points.","example":50},"maxFee":{"type":"string","description":"Maximum fee in UI units.","example":"0.5"},"transferFeeConfigAuthority":{"type":"string","description":"Authority to configure transfer fees. Defaults to platform authority.","example":"So11111111111111111111111111111111111111112"},"withdrawWithheldAuthority":{"type":"string","description":"Authority to withdraw withheld fees. Defaults to platform authority.","example":"So11111111111111111111111111111111111111112"}},"required":["basisPoints","maxFee"]}],"description":"Transfer fee configuration or false to disable."},"interestBearing":{"anyOf":[{"type":"boolean","enum":[false]},{"type":"object","properties":{"rate":{"type":"number","description":"Interest rate in percent.","example":2.5},"rateAuthority":{"type":"string","description":"Authority that can update the rate. Defaults to platform authority.","example":"So11111111111111111111111111111111111111112"}},"required":["rate"]}],"description":"Interest-bearing configuration or false to disable."},"permanentDelegate":{"anyOf":[{"type":"boolean","enum":[false]},{"type":"string"}],"description":"Permanent delegate authority address, or false to disable.","example":"So11111111111111111111111111111111111111112"},"pausable":{"anyOf":[{"type":"boolean","enum":[false]},{"type":"object","properties":{"authority":{"type":"string","description":"Authority that can pause/resume transfers. Defaults to platform authority.","example":"So11111111111111111111111111111111111111112"}}}],"description":"Pausable configuration or false to disable."},"nonTransferable":{"type":"boolean","description":"Enable/disable non-transferable.","example":false},"defaultAccountState":{"type":"string","enum":["initialized","frozen"],"description":"Override default account state.","example":"frozen"},"scaledUiAmount":{"anyOf":[{"type":"boolean","enum":[false]},{"type":"object","properties":{"authority":{"type":"string","description":"Authority that can update scaled UI parameters. Defaults to platform authority.","example":"So11111111111111111111111111111111111111112"},"multiplier":{"type":"number","description":"Current UI multiplier.","example":1},"newMultiplier":{"type":"number","description":"Scheduled multiplier.","example":2},"newMultiplierEffectiveTimestamp":{"type":"integer","description":"Unix timestamp (seconds) when the new multiplier takes effect.","example":1735689600}},"required":["multiplier"]}],"description":"Scaled UI amount configuration or false to disable."},"transferHook":{"anyOf":[{"type":"boolean","enum":[false]},{"type":"object","properties":{"programId":{"type":"string","description":"Transfer hook program id.","example":"So11111111111111111111111111111111111111112"},"authority":{"type":"string","description":"Authority that can update the hook program. Defaults to platform authority.","example":"So11111111111111111111111111111111111111112"}},"required":["programId"]}],"description":"Transfer hook configuration or false to disable."}},"description":"Override template extension configuration."},"requiresAllowlist":{"type":"boolean","description":"Override allowlist requirement (if template allows).","example":true}},"description":"Template overrides to customize defaults.","example":{"extensions":{"transferFee":{"basisPoints":50,"maxFee":"0.5"}}}},"requiresAllowlist":{"type":"boolean","description":"Require allowlist checks for transfers.","example":true},"isMintable":{"type":"boolean","description":"Allow minting after creation.","example":true},"isFreezable":{"type":"boolean","description":"Allow freezing token accounts.","example":true},"assetCategory":{"type":"string","enum":["generic","stablecoin","tokenized_security"],"default":"generic","description":"Asset category for the token's profile. Defaults to generic.","example":"stablecoin"},"assetType":{"type":"string","minLength":1,"maxLength":128,"default":"generic","description":"Asset type within the category. Must be supported for the category.","example":"fiat_backed"},"issuanceMetadata":{"type":"object","properties":{"asset":{"type":"object","additionalProperties":{"nullable":true}},"compliance":{"type":"object","additionalProperties":{"nullable":true}},"chain":{"type":"object","additionalProperties":{"nullable":true}},"custom":{"type":"object","properties":{"customer":{"type":"object","additionalProperties":{"nullable":true}},"integration":{"type":"object","additionalProperties":{"nullable":true}}}},"visibility":{"type":"object","properties":{"public":{"type":"array","items":{"type":"string"}}}},"settings":{"type":"object","properties":{"version":{"type":"integer","minimum":0,"exclusiveMinimum":true},"selected":{"type":"object","additionalProperties":{"type":"object","properties":{"params":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}}},"additionalProperties":false}}},"required":["selected"],"additionalProperties":false}},"additionalProperties":{"nullable":true},"description":"Optional canonical issuance metadata for the profile. Public metadata is derived from it.","example":{"asset":{"name":"Acme USD","issuerName":"Acme Financial Inc.","pegCurrency":"USD"},"compliance":{"transferRestrictions":"reg_d"},"chain":{"decimals":6},"custom":{"customer":{"internalDeskId":"FX-22"},"integration":{}}}}},"required":["name","symbol"],"additionalProperties":false,"description":"Create token + asset profile request body: the token-create fields plus the asset profile's category, type, and issuance metadata. The token and its profile are created atomically."}}}},"responses":{"201":{"description":"Token and asset profile created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"token":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"signingCustodyWalletId":{"type":"string","nullable":true,"minLength":1,"description":"Exact deployment wallet selected for a pending token, or historical deployment attribution after deployment. This is not the current signer for later authority operations.","example":"cwlt_example"},"mintAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint address once deployed.","example":"So11111111111111111111111111111111111111112"},"mintAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Mint authority address, if set.","example":"So11111111111111111111111111111111111111112"},"freezeAuthority":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"Freeze authority address, if set.","example":"So11111111111111111111111111111111111111112"},"ablListAddress":{"type":"string","nullable":true,"minLength":32,"maxLength":44,"description":"On-chain allowlist/blocklist address, if enabled.","example":"So11111111111111111111111111111111111111112"},"name":{"type":"string","description":"Token name.","example":"Example Token"},"symbol":{"type":"string","description":"Token symbol.","example":"EXM"},"decimals":{"type":"integer","description":"Token decimals.","example":9},"description":{"type":"string","nullable":true,"description":"Token description.","example":"Example token description."},"uri":{"type":"string","nullable":true,"description":"Metadata URI passed to on-chain token metadata (points to off-chain JSON).","example":"https://example.com/metadata.json"},"imageUrl":{"type":"string","nullable":true,"description":"Token image URL.","example":"https://example.com/token.png"},"template":{"type":"string","enum":["stablecoin","arcade","tokenized-security","custom","rwa"],"description":"Token template identifier.","example":"stablecoin"},"extensions":{"type":"object","nullable":true,"properties":{"transferFee":{"type":"object","properties":{"basisPoints":{"type":"integer","minimum":0,"maximum":10000,"description":"Transfer fee in basis points (0-10000).","example":25},"maxFee":{"type":"string","description":"Maximum fee in UI units.","example":"0.5"},"transferFeeConfigAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority to configure transfer fees.","example":"So11111111111111111111111111111111111111112"},"withdrawWithheldAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority to withdraw withheld fees.","example":"So11111111111111111111111111111111111111112"}},"required":["basisPoints","maxFee","transferFeeConfigAuthority","withdrawWithheldAuthority"],"description":"Transfer fee configuration."},"interestBearing":{"type":"object","properties":{"rate":{"type":"number","description":"Interest rate in percent.","example":2.5},"rateAuthority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update the rate.","example":"So11111111111111111111111111111111111111112"}},"required":["rate","rateAuthority"],"description":"Interest-bearing configuration."},"permanentDelegate":{"type":"string","minLength":32,"maxLength":44,"description":"Permanent delegate address.","example":"So11111111111111111111111111111111111111112"},"pausable":{"type":"object","properties":{"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can pause/resume transfers.","example":"So11111111111111111111111111111111111111112"}},"description":"Pausable configuration."},"nonTransferable":{"type":"boolean","description":"Mark token as non-transferable.","example":false},"defaultAccountState":{"type":"string","enum":["initialized","frozen"],"description":"Default account state.","example":"initialized"},"scaledUiAmount":{"type":"object","properties":{"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update scaled UI parameters.","example":"So11111111111111111111111111111111111111112"},"multiplier":{"type":"number","description":"Current UI multiplier.","example":1},"newMultiplier":{"type":"number","description":"Scheduled multiplier.","example":2},"newMultiplierEffectiveTimestamp":{"type":"integer","description":"Unix timestamp (seconds) when the new multiplier takes effect.","example":1735689600}},"required":["multiplier","newMultiplier","newMultiplierEffectiveTimestamp"],"description":"Scaled UI amount configuration."},"transferHook":{"type":"object","properties":{"programId":{"type":"string","minLength":32,"maxLength":44,"description":"Transfer hook program id.","example":"So11111111111111111111111111111111111111112"},"authority":{"type":"string","minLength":32,"maxLength":44,"description":"Authority that can update the transfer hook program.","example":"So11111111111111111111111111111111111111112"}},"required":["programId"],"description":"Transfer hook configuration."}},"additionalProperties":false,"description":"Token-2022 extensions configuration."},"totalSupply":{"type":"string","description":"Cached total supply in UI units (stored to avoid frequent RPC reads). Use POST /v1/issuance/tokens/{tokenId}/supply/refresh to force an on-chain refresh.","example":"1000000"},"totalSupplyUpdatedAt":{"type":"string","nullable":true,"format":"date-time","description":"Timestamp when supply was last refreshed.","example":null},"maxSupply":{"type":"string","nullable":true,"description":"Maximum supply in UI units, if capped.","example":"10000000"},"isMintable":{"type":"boolean","description":"Whether additional minting is allowed.","example":true},"isFreezable":{"type":"boolean","description":"Whether freeze authority is enabled.","example":true},"requiresAllowlist":{"type":"boolean","description":"Whether transfers require allowlist approval.","example":false},"status":{"type":"string","enum":["pending","active","paused","revoked"],"description":"Token lifecycle status.","example":"active"},"deployedAt":{"type":"string","nullable":true,"format":"date-time","description":"Deployment timestamp, if deployed.","example":"2025-01-05T00:00:00.000Z"},"createdBy":{"type":"string","description":"Actor identifier that created the token.","example":"key_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","projectId","organizationId","signingCustodyWalletId","mintAddress","mintAuthority","freezeAuthority","ablListAddress","name","symbol","decimals","description","uri","imageUrl","template","extensions","totalSupply","totalSupplyUpdatedAt","maxSupply","isMintable","isFreezable","requiresAllowlist","status","deployedAt","createdBy","createdAt","updatedAt"],"description":"The created token."},"assetProfile":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Asset profile identifier.","example":"asset_profile_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"tokenId":{"type":"string","description":"Identifier of the issued token this profile describes.","example":"tok_example"},"assetCategory":{"type":"string","enum":["generic","stablecoin","tokenized_security"],"description":"Broad product/regulatory grouping for an issued asset.","example":"stablecoin"},"assetType":{"type":"string","description":"Concrete asset type within the category.","example":"fiat_backed"},"assetTypeVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Version of the asset type registry contract this profile was validated against.","example":2},"issuanceMetadata":{"type":"object","properties":{"asset":{"type":"object","additionalProperties":{"nullable":true}},"compliance":{"type":"object","additionalProperties":{"nullable":true}},"chain":{"type":"object","additionalProperties":{"nullable":true}},"custom":{"type":"object","properties":{"customer":{"type":"object","additionalProperties":{"nullable":true}},"integration":{"type":"object","additionalProperties":{"nullable":true}}}},"visibility":{"type":"object","properties":{"public":{"type":"array","items":{"type":"string"}}}},"settings":{"type":"object","properties":{"version":{"type":"integer","minimum":0,"exclusiveMinimum":true},"selected":{"type":"object","additionalProperties":{"type":"object","properties":{"params":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}}},"additionalProperties":false}}},"required":["selected"],"additionalProperties":false}},"additionalProperties":{"nullable":true},"description":"Canonical, private master metadata for the asset. SDP-owned namespaces (asset, compliance, chain) plus a namespaced custom bucket (customer, integration). The optional `visibility.public` array holds the issuance_metadata dot-paths the issuer chose to expose publicly; when omitted, the asset type's registry default is used. Only asset.* and chain.decimals paths can ever be projected publicly — compliance and custom fields are private by default and can never be exposed, even if listed in visibility.public. The optional `settings` namespace holds the selected advanced (Token-2022) settings; `version` is server-stamped and each selected key is validated against the asset type's capability.","example":{"asset":{"name":"Acme USD","issuerName":"Acme Financial Inc.","pegCurrency":"USD","website":"https://acme.example"},"compliance":{"transferRestrictions":"reg_d"},"chain":{"decimals":6},"custom":{"customer":{"internalDeskId":"FX-22"},"integration":{}},"visibility":{"public":["asset.name","asset.issuerName","asset.pegCurrency","chain.decimals"]},"settings":{"version":1,"selected":{"pauseTransfers":{},"freezeAccounts":{},"transferFee":{"params":{"basisPoints":50,"maxFee":"100"}}}}}},"publicMetadata":{"type":"object","additionalProperties":{"nullable":true},"description":"Safe public subset of the issuance metadata, derived via the asset type's projection rules. Served by the public token metadata URI.","example":{"asset":{"name":"Acme USD","issuerName":"Acme Financial Inc.","pegCurrency":"USD"},"chain":{"decimals":6}}},"status":{"type":"string","enum":["active","archived"],"description":"Asset profile status.","example":"active"},"createdBy":{"type":"string","nullable":true,"minLength":1,"description":"User who created the profile. Null when created via API key.","example":"usr_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","projectId","tokenId","assetCategory","assetType","assetTypeVersion","issuanceMetadata","publicMetadata","status","createdBy","createdAt","updatedAt"],"description":"The created asset profile."}},"required":["token","assetProfile"],"description":"Token + asset profile response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/asset-profiles/by-token/{tokenId}":{"get":{"tags":["Asset Profiles"],"summary":"Get asset profile by token","operationId":"getAssetProfileByToken","description":"Gets the active asset profile for an issued token, if one exists.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Token identifier.","example":"tok_example"},"required":true,"description":"Token identifier.","name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Asset profile","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"assetProfile":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Asset profile identifier.","example":"asset_profile_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"tokenId":{"type":"string","description":"Identifier of the issued token this profile describes.","example":"tok_example"},"assetCategory":{"type":"string","enum":["generic","stablecoin","tokenized_security"],"description":"Broad product/regulatory grouping for an issued asset.","example":"stablecoin"},"assetType":{"type":"string","description":"Concrete asset type within the category.","example":"fiat_backed"},"assetTypeVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Version of the asset type registry contract this profile was validated against.","example":2},"issuanceMetadata":{"type":"object","properties":{"asset":{"type":"object","additionalProperties":{"nullable":true}},"compliance":{"type":"object","additionalProperties":{"nullable":true}},"chain":{"type":"object","additionalProperties":{"nullable":true}},"custom":{"type":"object","properties":{"customer":{"type":"object","additionalProperties":{"nullable":true}},"integration":{"type":"object","additionalProperties":{"nullable":true}}}},"visibility":{"type":"object","properties":{"public":{"type":"array","items":{"type":"string"}}}},"settings":{"type":"object","properties":{"version":{"type":"integer","minimum":0,"exclusiveMinimum":true},"selected":{"type":"object","additionalProperties":{"type":"object","properties":{"params":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}}},"additionalProperties":false}}},"required":["selected"],"additionalProperties":false}},"additionalProperties":{"nullable":true},"description":"Canonical, private master metadata for the asset. SDP-owned namespaces (asset, compliance, chain) plus a namespaced custom bucket (customer, integration). The optional `visibility.public` array holds the issuance_metadata dot-paths the issuer chose to expose publicly; when omitted, the asset type's registry default is used. Only asset.* and chain.decimals paths can ever be projected publicly — compliance and custom fields are private by default and can never be exposed, even if listed in visibility.public. The optional `settings` namespace holds the selected advanced (Token-2022) settings; `version` is server-stamped and each selected key is validated against the asset type's capability.","example":{"asset":{"name":"Acme USD","issuerName":"Acme Financial Inc.","pegCurrency":"USD","website":"https://acme.example"},"compliance":{"transferRestrictions":"reg_d"},"chain":{"decimals":6},"custom":{"customer":{"internalDeskId":"FX-22"},"integration":{}},"visibility":{"public":["asset.name","asset.issuerName","asset.pegCurrency","chain.decimals"]},"settings":{"version":1,"selected":{"pauseTransfers":{},"freezeAccounts":{},"transferFee":{"params":{"basisPoints":50,"maxFee":"100"}}}}}},"publicMetadata":{"type":"object","additionalProperties":{"nullable":true},"description":"Safe public subset of the issuance metadata, derived via the asset type's projection rules. Served by the public token metadata URI.","example":{"asset":{"name":"Acme USD","issuerName":"Acme Financial Inc.","pegCurrency":"USD"},"chain":{"decimals":6}}},"status":{"type":"string","enum":["active","archived"],"description":"Asset profile status.","example":"active"},"createdBy":{"type":"string","nullable":true,"minLength":1,"description":"User who created the profile. Null when created via API key.","example":"usr_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","projectId","tokenId","assetCategory","assetType","assetTypeVersion","issuanceMetadata","publicMetadata","status","createdBy","createdAt","updatedAt"],"description":"Asset profile record: SDP-owned description of what an issued token represents."}},"required":["assetProfile"],"description":"Asset profile response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}},"/v1/issuance/asset-profiles/{profileId}":{"get":{"tags":["Asset Profiles"],"summary":"Get asset profile","operationId":"getAssetProfile","description":"Gets an asset profile by id.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Asset profile identifier.","example":"asset_profile_example"},"required":true,"description":"Asset profile identifier.","name":"profileId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"200":{"description":"Asset profile","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"assetProfile":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Asset profile identifier.","example":"asset_profile_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"tokenId":{"type":"string","description":"Identifier of the issued token this profile describes.","example":"tok_example"},"assetCategory":{"type":"string","enum":["generic","stablecoin","tokenized_security"],"description":"Broad product/regulatory grouping for an issued asset.","example":"stablecoin"},"assetType":{"type":"string","description":"Concrete asset type within the category.","example":"fiat_backed"},"assetTypeVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Version of the asset type registry contract this profile was validated against.","example":2},"issuanceMetadata":{"type":"object","properties":{"asset":{"type":"object","additionalProperties":{"nullable":true}},"compliance":{"type":"object","additionalProperties":{"nullable":true}},"chain":{"type":"object","additionalProperties":{"nullable":true}},"custom":{"type":"object","properties":{"customer":{"type":"object","additionalProperties":{"nullable":true}},"integration":{"type":"object","additionalProperties":{"nullable":true}}}},"visibility":{"type":"object","properties":{"public":{"type":"array","items":{"type":"string"}}}},"settings":{"type":"object","properties":{"version":{"type":"integer","minimum":0,"exclusiveMinimum":true},"selected":{"type":"object","additionalProperties":{"type":"object","properties":{"params":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}}},"additionalProperties":false}}},"required":["selected"],"additionalProperties":false}},"additionalProperties":{"nullable":true},"description":"Canonical, private master metadata for the asset. SDP-owned namespaces (asset, compliance, chain) plus a namespaced custom bucket (customer, integration). The optional `visibility.public` array holds the issuance_metadata dot-paths the issuer chose to expose publicly; when omitted, the asset type's registry default is used. Only asset.* and chain.decimals paths can ever be projected publicly — compliance and custom fields are private by default and can never be exposed, even if listed in visibility.public. The optional `settings` namespace holds the selected advanced (Token-2022) settings; `version` is server-stamped and each selected key is validated against the asset type's capability.","example":{"asset":{"name":"Acme USD","issuerName":"Acme Financial Inc.","pegCurrency":"USD","website":"https://acme.example"},"compliance":{"transferRestrictions":"reg_d"},"chain":{"decimals":6},"custom":{"customer":{"internalDeskId":"FX-22"},"integration":{}},"visibility":{"public":["asset.name","asset.issuerName","asset.pegCurrency","chain.decimals"]},"settings":{"version":1,"selected":{"pauseTransfers":{},"freezeAccounts":{},"transferFee":{"params":{"basisPoints":50,"maxFee":"100"}}}}}},"publicMetadata":{"type":"object","additionalProperties":{"nullable":true},"description":"Safe public subset of the issuance metadata, derived via the asset type's projection rules. Served by the public token metadata URI.","example":{"asset":{"name":"Acme USD","issuerName":"Acme Financial Inc.","pegCurrency":"USD"},"chain":{"decimals":6}}},"status":{"type":"string","enum":["active","archived"],"description":"Asset profile status.","example":"active"},"createdBy":{"type":"string","nullable":true,"minLength":1,"description":"User who created the profile. Null when created via API key.","example":"usr_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","projectId","tokenId","assetCategory","assetType","assetTypeVersion","issuanceMetadata","publicMetadata","status","createdBy","createdAt","updatedAt"],"description":"Asset profile record: SDP-owned description of what an issued token represents."}},"required":["assetProfile"],"description":"Asset profile response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"patch":{"tags":["Asset Profiles"],"summary":"Update asset profile","operationId":"updateAssetProfile","description":"Updates an asset profile. At least one field must be provided. The resulting category/type pair must be supported. Public metadata is recomputed when metadata or the asset type changes; set issuanceMetadata.visibility.public to control which fields are exposed (asset.* and chain.decimals only).","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Asset profile identifier.","example":"asset_profile_example"},"required":true,"description":"Asset profile identifier.","name":"profileId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetCategory":{"type":"string","enum":["generic","stablecoin","tokenized_security"],"description":"Updated asset category. Must remain consistent with the asset type.","example":"stablecoin"},"assetType":{"type":"string","minLength":1,"maxLength":128,"description":"Updated asset type. Must be supported for the (resulting) category.","example":"fiat_backed"},"issuanceMetadata":{"type":"object","properties":{"asset":{"type":"object","additionalProperties":{"nullable":true}},"compliance":{"type":"object","additionalProperties":{"nullable":true}},"chain":{"type":"object","additionalProperties":{"nullable":true}},"custom":{"type":"object","properties":{"customer":{"type":"object","additionalProperties":{"nullable":true}},"integration":{"type":"object","additionalProperties":{"nullable":true}}}},"visibility":{"type":"object","properties":{"public":{"type":"array","items":{"type":"string"}}}},"settings":{"type":"object","properties":{"version":{"type":"integer","minimum":0,"exclusiveMinimum":true},"selected":{"type":"object","additionalProperties":{"type":"object","properties":{"params":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}}},"additionalProperties":false}}},"required":["selected"],"additionalProperties":false}},"additionalProperties":{"nullable":true},"description":"Updated issuance metadata. Replaces the existing object; public metadata is recomputed.","example":{"asset":{"name":"Acme USD","issuerName":"Acme Financial Inc.","pegCurrency":"USD","website":"https://acme.example"},"compliance":{"transferRestrictions":"reg_d"},"chain":{"decimals":6},"custom":{"customer":{"internalDeskId":"FX-22"},"integration":{}},"visibility":{"public":["asset.name","asset.issuerName","asset.pegCurrency","chain.decimals"]},"settings":{"version":1,"selected":{"pauseTransfers":{},"freezeAccounts":{},"transferFee":{"params":{"basisPoints":50,"maxFee":"100"}}}}}}},"description":"Update asset profile request body. At least one field must be provided.","minProperties":1}}}},"responses":{"200":{"description":"Asset profile updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"assetProfile":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Asset profile identifier.","example":"asset_profile_example"},"organizationId":{"type":"string","minLength":1,"description":"Organization identifier.","example":"org_example"},"projectId":{"type":"string","minLength":1,"description":"Project identifier.","example":"prj_example"},"tokenId":{"type":"string","description":"Identifier of the issued token this profile describes.","example":"tok_example"},"assetCategory":{"type":"string","enum":["generic","stablecoin","tokenized_security"],"description":"Broad product/regulatory grouping for an issued asset.","example":"stablecoin"},"assetType":{"type":"string","description":"Concrete asset type within the category.","example":"fiat_backed"},"assetTypeVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Version of the asset type registry contract this profile was validated against.","example":2},"issuanceMetadata":{"type":"object","properties":{"asset":{"type":"object","additionalProperties":{"nullable":true}},"compliance":{"type":"object","additionalProperties":{"nullable":true}},"chain":{"type":"object","additionalProperties":{"nullable":true}},"custom":{"type":"object","properties":{"customer":{"type":"object","additionalProperties":{"nullable":true}},"integration":{"type":"object","additionalProperties":{"nullable":true}}}},"visibility":{"type":"object","properties":{"public":{"type":"array","items":{"type":"string"}}}},"settings":{"type":"object","properties":{"version":{"type":"integer","minimum":0,"exclusiveMinimum":true},"selected":{"type":"object","additionalProperties":{"type":"object","properties":{"params":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]}}},"additionalProperties":false}}},"required":["selected"],"additionalProperties":false}},"additionalProperties":{"nullable":true},"description":"Canonical, private master metadata for the asset. SDP-owned namespaces (asset, compliance, chain) plus a namespaced custom bucket (customer, integration). The optional `visibility.public` array holds the issuance_metadata dot-paths the issuer chose to expose publicly; when omitted, the asset type's registry default is used. Only asset.* and chain.decimals paths can ever be projected publicly — compliance and custom fields are private by default and can never be exposed, even if listed in visibility.public. The optional `settings` namespace holds the selected advanced (Token-2022) settings; `version` is server-stamped and each selected key is validated against the asset type's capability.","example":{"asset":{"name":"Acme USD","issuerName":"Acme Financial Inc.","pegCurrency":"USD","website":"https://acme.example"},"compliance":{"transferRestrictions":"reg_d"},"chain":{"decimals":6},"custom":{"customer":{"internalDeskId":"FX-22"},"integration":{}},"visibility":{"public":["asset.name","asset.issuerName","asset.pegCurrency","chain.decimals"]},"settings":{"version":1,"selected":{"pauseTransfers":{},"freezeAccounts":{},"transferFee":{"params":{"basisPoints":50,"maxFee":"100"}}}}}},"publicMetadata":{"type":"object","additionalProperties":{"nullable":true},"description":"Safe public subset of the issuance metadata, derived via the asset type's projection rules. Served by the public token metadata URI.","example":{"asset":{"name":"Acme USD","issuerName":"Acme Financial Inc.","pegCurrency":"USD"},"chain":{"decimals":6}}},"status":{"type":"string","enum":["active","archived"],"description":"Asset profile status.","example":"active"},"createdBy":{"type":"string","nullable":true,"minLength":1,"description":"User who created the profile. Null when created via API key.","example":"usr_example"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2025-01-02T00:00:00.000Z"}},"required":["id","organizationId","projectId","tokenId","assetCategory","assetType","assetTypeVersion","issuanceMetadata","publicMetadata","status","createdBy","createdAt","updatedAt"],"description":"Asset profile record: SDP-owned description of what an issued token represents."}},"required":["assetProfile"],"description":"Asset profile response payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp.","example":"2025-01-01T00:00:00.000Z"}},"required":["requestId","timestamp"],"description":"Response metadata."}},"required":["data","meta"],"description":"Standard success response envelope."}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}},"delete":{"tags":["Asset Profiles"],"summary":"Archive asset profile","operationId":"archiveAssetProfile","description":"Archives an asset profile. Archived profiles are hidden from default lists.","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Asset profile identifier.","example":"asset_profile_example"},"required":true,"description":"Asset profile identifier.","name":"profileId","in":"path"},{"schema":{"type":"string","minLength":1,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","example":"prj_example"},"required":false,"description":"Selects the active project for this request. Required for Clerk (dashboard) callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.","name":"x-project-id","in":"header"}],"responses":{"204":{"description":"Asset profile archived"},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}},"500":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","RATE_LIMITED","SERVICE_UNAVAILABLE","INTERNAL_ERROR","NOT_ALLOWLISTED","INVALID_API_KEY","EXPIRED_API_KEY","REVOKED_API_KEY","INSUFFICIENT_PERMISSIONS","INVALID_INVITATION","EXPIRED_INVITATION","INVALID_TOKEN","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_NOT_MINTABLE","TOKEN_NOT_DEPLOYED","TOKEN_PAUSED","NOT_ON_TOKEN_ALLOWLIST","ON_TOKEN_BLOCKLIST","ACCOUNT_FROZEN","ACCOUNT_NOT_FROZEN","MAX_SUPPLY_EXCEEDED","INSUFFICIENT_TOKEN_BALANCE","SOLANA_RPC_ERROR","CUSTODY_ERROR","TRANSACTION_FAILED","SIGNING_FAILED","SIGNING_REJECTED","PROVIDER_NOT_CONFIGURED","PROVIDER_UNAVAILABLE","UNSUPPORTED_CORRIDOR","VAULT_EXPOSURE_CAP"],"description":"Machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."},"details":{"type":"object","additionalProperties":{"nullable":true},"description":"Optional error details for debugging."}},"required":["code","message"],"description":"Standard error payload."},"meta":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"description":"Request identifier for tracing.","example":"req_example"}}}},"required":["error"],"description":"Standard error response envelope."}}}}}}}}}