Orchestration API
This API provides quotes for moving and converting between M0 extensions and other stablecoins
Base URL
https://gateway.m0.xyz/v1/orchestration
Authentication
The M0 Orchestration API requires authentication via API keys to access its endpoint. This ensures that only authorized users can interact with the API and access its data.
Contact us to obtain an API key.
Using API Keys
To authenticate your requests, include the API key in the Authentication header of your HTTP requests. For example post with curl:
curl -i \
--request GET \
--header "x-api-key: YOUR_API_KEY" \
https://gateway.m0.xyz/v1/orchestration/supported-assets
API keys should be kept secret and not exposed in public repositories or client-side code. If you believe your API key has been compromised, please contact us immediately to revoke the key and issue a new one
Usage Flow
- Check supported assets — Call
GET /supported-assetsto discover which tokens and chains are available for routing. - Request a quote — Call
POST /quotewith your desired route, amount, and sender address. The response includes ready-to-sign transaction payloads. - Sign and submit — Sign each payload in order using your wallet and submit the transactions on-chain. Wait for confirmation before sending the next payload.
- Track your order — For routes through the
limit-orderprovider, monitor progress on the M0 Explorer, or use theGET /orders/{originChain}/{orderId}endpoint to check order status programmatically. TheorderIdis returned as part of the limit-order quote/execution flow. You can also useGET /ordersto list existing orders and find the relevantorderId. For all other providers, a transaction hash is returned directly when submitting the payload on-chain.
Endpoints
GET /supported-assetsPOST /quoteGET /ordersGET /orders/{originChain}/{orderId}POST /orders/{originChain}/{orderId}/cancelGET /topology/routesGET /topology/stats
For detailed schema definitions and interactive testing, see the API Reference.
Errors
All API error responses share the same body shape:
{
"code": "BadQuoteRequest",
"message": "Human-readable description of what went wrong",
"requestId": "abc-123"
}
code— stable machine-readable identifier for the failure mode. Branch on it rather than on the HTTP status, since multiple errors may map to the same status over time.message— human-readable description, safe to surface in a UI.requestId— per-request correlation ID matching the server logs. Include it when filing support tickets.