https://orchestration.flashnet.xyz
OpenAPI:
- Swagger UI:
GET /docs - OpenAPI JSON:
GET /openapi.json
GET /v1/orchestration/estimate.
This product is named Orchestra. The API path prefix is still /v1/orchestration/*.
Start here:
- Product overview: Orchestra
- End-to-end integration flow: Quickstart
Authentication
Authenticated endpoints require an API key:GET /v1/orchestration/estimate for unauthenticated price previews.
POST /v1/orchestration/quote is the start of a submit-able flow and should be called with Authorization. Quotes created without Authorization (if accepted) cannot be submitted.
A quote is bound to your partner account and can only be submitted by an API key for the same partner.
If a quote uses affiliateId, Authorization is required because affiliate profiles are partner-scoped.
Idempotency
Partner-authenticated mutating endpoints requireX-Idempotency-Key.
Rules:
- Key scope is
(partnerId, endpoint, key). - Replaying the same request returns the stored response and sets
X-Idempotency-Replayed: true. - Reusing a key with a different JSON body returns
409 idempotency_conflict.
Errors
Errors use a single envelope:error.code values:
unauthorized: Missing or invalid API keyauth_required: Authentication is required for this requestmissing_idempotency_key:X-Idempotency-Keymissingidempotency_conflict: Same idempotency key reused with a different payloadunsupported_route: Route is not supportedunsupported_amount_mode:amountModeis not supported for the selected routeunsupported_fee_plan:appFeesoraffiliateIdis not supported for the selected route or quote modeinvalid_request: Request body failed business validationinvalid_query: Invalid query parametersinvalid_address: Recipient or refund address is invalidinvalid_state: Endpoint was called in the wrong order stateconflict: State changed concurrently, retry the requestquote_expired: Quote has expirednot_found: Quote or order not foundamount_too_small: Swap input is below the Flashnet pool minimumamount_too_large: Amount is too large for the selected routerate_limited: Too many requestsflashnet_error: Swap simulation or execution failedprice_impact_too_high: Quote exceeds configured price impact constraintsinternal_error: Unhandled error
internal_error. Treat it as a request bug and retry only after fixing the payload.
Chains, Assets, Amounts
Routes are expressed as(sourceChain, sourceAsset) -> (destinationChain, destinationAsset).
Supported chains:
basesolanasparkbitcoinlightning
USDCUSDBBTCETH(Base)SOL(Solana)
Rate Limiting
Some public endpoints are IP rate-limited when rate limiting is enabled in the deployment:GET /v1/orchestration/routes: 60 requests per minuteGET /v1/orchestration/estimate: 120 requests per minutePOST /v1/orchestration/quote: 60 requests per minuteGET /v1/orchestration/order: 120 requests per minuteGET /v1/orchestration/status: 120 requests per minute
X-RateLimit-* headers and the API returns 429 rate_limited on exhaustion.
Reference Pages
- Quotes and Orders: Create quotes, submit deposits, and track order status
- Approval Flows: Resolve repricing requests and ZeroConf offers
- Resource Management: Manage affiliates, webhooks, accumulation addresses, and liquidation addresses