Create a Route
Create a persistent source → destination route. The response includes reusable settlement instructions — a wire memo for fiat sources, or one mint or redeem address per supported chain for blockchain sources — that the caller uses to initiate transfers. A single set of instructions is valid indefinitely; every inbound transfer matching them triggers a separate settlement to the route’s destination.
from.currency, to.currency, and the destination to.chain determine the route’s topology, returned as direction. to.accountId references a registered account from GET /v0/accounts.
No US dollars move in the sandbox. Fiat routes return fake wire instructions so you can build fiat flows. Never send a real wire to them. To test a mint, simulate the wire with POST /v0/sandbox/wires.
Supported topologies
200, 201, or 409
Route ids are deterministic from their canonical inputs (organization, destination account, chain, currency), so calling this endpoint again with the same inputs is safe:
201— no route existed for these inputs; one was created.200— a route for these inputs already existed. Nothing was written; the response is that existing route, in the same shape a201would have returned.409route_already_exists— the deterministic id is occupied by a route this call couldn’t read back cleanly. This is an internal inconsistency, not an ordinary duplicate create;context.routeIdnames the id. Contact support rather than retrying.
Authentication
Session JWT from POST /v0/auth/token, sent as Authorization: Bearer <sessionJwt>.
See Authentication for more details.
Request
Response
Deterministic route UUID; same canonical inputs always derive the same id.
Next-step instructions. Mint-fiat: one wire instruction with memo + beneficiary. On-chain directions: one deposit address per supported chain, alphabetical by chain.
User-set label, or null when unset.

