Skip to content

Conventions ​

These hold for every route.

VersionsThe major version is in the path: /v1. New fields, routes and enum values can be added at any time and aren't breaking changes, so ignore fields you don't know.
JSONapplication/json, UTF-8, camelCase names. Unknown request fields are refused rather than ignored, so a typo can't silently drop a value.
MoneyDecimal strings in TxGold, such as "12.50": at most 2 places in, 2 places out. Never parse them as floats.
TimesISO 8601 UTC with Z, such as "2026-10-28T16:04:32.877Z".
IdsStrings, even when they look numeric. Don't do arithmetic on them.
Errorsapplication/problem+json with a stable code. See Errors.
Request idEvery response has an X-Request-Id header; errors repeat it as requestId.
Body sizeAt most 64 KB.

Lists ​

Lists answer with a page:

json
{ "data": [ … ], "nextCursor": "NjM5Mjk1ODMwOTQ0MDIwMjE4LjE0" }

Pass limit (1 to 200, default 50) and, for the next page, cursor set to the previous nextCursor. nextCursor is null on the last page. A cursor is opaque: don't build or parse one. The SDKs' listAll / list_all / ListAllAsync and transactionsAll walk every page for you.

Roles ​

What a key can do depends on its integration's role:

IntegrationDeviceDevice, no refunds
Send payments✓
Refund✓✓
Payment requests✓✓
See balances✓
Read accounts, history, rates✓✓✓

Anything else is forbidden (403).

The SDKs are MIT licensed.