What you can call
Full request and response shapes are in the
API reference.
Authentication
Server-to-server calls use an API key against the/v1 prefix. Keep the key on your
server. Browser access is separate: a publishable key tied to an origin allowlist, so
a key lifted from your page does not work from anywhere else. What a key is allowed
to settle - which chains and tokens as a destination - is part of your account setup,
not something you pass per request. See
Authentication.
Quotes
A quote prices the route and reserves liquidity, so it is valid for a short window. Two things follow: show the user how long is left and let them ask for a fresh quote, and never build a transaction from a quote you have been holding. Quotes work in both directions. Fix what the payer spends and whatever arrives arrives, or fix what has to land and let the payer’s side flex to cover it - the second is what you want when collecting a set price.Payment methods
What a user can pay with, per product:- Stablecoins from a connected wallet, on any supported network - see Coverage.
- Cards, priced before the user commits to anything.
- Bank transfers into a virtual account: local rails and international wires,
depending on the currency. The per-currency list is on Coverage and
served by
GET /v1/currencies.
Statuses
Each product has its own small status set: deposits reportpending, done,
failed, or expired; cards report pending, processing, completed, failed,
or unknown; bank transfers report awaiting_deposit or funded. In every set
there is exactly one state that means “credit the user” - done, completed,
funded - and you credit on that state only. A partner state we do not recognise is
reported as unknown and flagged, never quietly shown as “in progress”. See
Transaction statuses.
Limits
- Rate limit: your API key carries a request ceiling, agreed when it is
issued. Handle
429by backing off rather than retrying immediately. - Amount limits are per rail and per provider. The stablecoin path is bounded by
live liquidity on the route, which is why a quote can come back as no route
available - that is a normal, temporary answer, not an error to retry in a loop.
Fiat minimums and maximums are per currency and rail - read them from
GET /v1/limits.
Errors
Every error comes back in the same envelope:code is what you branch on; message is for your logs, not your users; fields is
present when the problem is a specific input. Three worth handling explicitly:
403 chain_not_allowed- the corridor was never enabled for your key. Retrying will not help; ask us to enable it.429- rate limited. Back off.no_route- no liquidity for that route right now. Re-quote later.