{"name":"Skerry","description":"Stablecoin and fiat infrastructure: verification, custody, accounts, payouts and standing conversion.","docs":"https://console.skerry.xyz/developers/reference","openapi":"https://api.skerry.xyz/openapi.json","authentication":"Every call but `/` sends `Authorization: Bearer sk_test_…` or `sk_live_…`. The environment is in the key, not in a header, so the same code runs against sandbox and live by swapping one value.","environments":["sandbox","live"],"resources":{"getting_started":["GET /","GET /openapi.json","GET /whoami","GET /capabilities","POST /terms"],"customers":["POST /customers","GET /customers","GET /customers/{id}","PATCH /customers/{id}","POST /customers/{id}/verification","GET /customers/{id}/verification"],"custody":["POST /customers/{id}/wallets","GET /customers/{id}/wallets","POST /customers/{id}/accounts","GET /customers/{id}/accounts","POST /customers/{id}/bank-link","POST /customers/{id}/cards","GET /customers/{id}/cards","POST /customers/{id}/memos","GET /customers/{id}/memos"],"paying_out":["POST /customers/{id}/payees","GET /customers/{id}/payees","POST /payouts/quote","POST /payouts","GET /payouts","GET /payouts/{id}","DELETE /payouts/{id}","GET /rates"],"standing_conversion":["POST /customers/{id}/standing-orders","GET /customers/{id}/standing-orders"],"events_and_webhooks":["GET /events","POST /events/{id}/replay","POST /webhooks","GET /webhooks","PATCH /webhooks/{id}","DELETE /webhooks/{id}"],"rewards_and_reporting":["GET /coins","POST /coins","GET /coins/{currency}/rewards","GET /usage","GET /compliance-requests"]},"conventions":{"authentication":"Every call but `/` sends `Authorization: Bearer sk_test_…` or `sk_live_…`. The environment is in the key, not in a header, so the same code runs against sandbox and live by swapping one value.","idempotency":"Send `Idempotency-Key` on every POST. A repeat returns the first response rather than acting twice; a repeat with a different body is refused. This is how a retry after a timeout stays safe.","errors":"Failures are `{ error: { code, message, detail, request_id } }`. Branch on `code`, never on `message` — messages are written for people and will change.","request_id":"Every response carries `x-request-id`. Keep it on anything you log: it is what lets us find one call out of millions.","pagination":"List endpoints return newest first and take `?limit=` and `?cursor=`. A response carrying `next_cursor` has more."}}