Reference

Errors & retries

HTTP status meanings for Partner Transfer, common Pro/Ledger failures, and how to retry safely.

01

Partner Transfer API

Base: https://araojncyittkahvvpdrn.supabase.co/functions/v1/partner-transfer-api

StatusMeaningAction
401Missing / invalid / revoked keyRotate key in partner portal; never ship keys to clients
403Origin not whitelistedAllowlist exact redirect / Origin in partner app settings
404Recipient or charge not foundResolve /accounts/:id first; verify charge id
400Validation / insufficient balanceFix amount, currency, or fund hot wallet — do not blind-retry
409Idempotency conflict (if returned)Reuse same Idempotency-Key; treat as success if body matches
429 / 5xxRate limit or upstreamExponential backoff; keep Idempotency-Key on transfers
# Safe transfer retry pattern
curl -X POST "https://araojncyittkahvvpdrn.supabase.co/functions/v1/partner-transfer-api/transfers" \
  -H "Authorization: Bearer opk_live_YOUR_KEY" \
  -H "Idempotency-Key: order_1234_transfer" \
  -H "Content-Type: application/json" \
  -d '{"to":"@alice","amount":10.00,"note":"Payout"}'

02

Charges (no webhooks)

  • Statuses: created, paid, canceled, expired (2h TTL).
  • After checkout return, poll GET /charges/:id until terminal — do not assume success from redirect alone.
  • Cancel only while created: POST /charges/:id/cancel.

03

Public Ledger API

  • 4xx — bad cursor / asset filter; fix query.
  • 5xx / empty — retry with backoff; page is append-only so duplicates are safe to ignore by id.
  • Full guide: /docs/ledger

04

MCP / Agent Connect

  • Not authenticated — complete OAuth; retry tool.
  • Tool handler errors return isError: true with a text message — surface to the user; do not invent balances.
  • See /docs/mcp#errors

05

Pro app / migrations

UI toasts that mention missing tables (e.g. asset_chat_messages, global_chat_messages) mean a Supabase migration was not applied — run the matching file under supabase/migrations. These are not Partner API errors.