Skip to main content
POST

OpenAPI

/specs/router-api.json post /quotes

Authorizations

X-API-Key
string
header
required

Service-account API key (tfk_test_/tfk_live_).

Body

application/json
user
string
required

Wallet that signs the order and funds the trade. On walletBroadcast quotes it also broadcasts the prepared settlement transaction.

Example:

"0x2e7E7cc62919eAf4c502dAC34753cFc5A29e9693"

intent
Intent · object
required

States what must go in and what must come out - not a route. Every asset carries its own chainId, so one intent can cross networks; multi-token shapes use multiple entries in inputs or outputs.

supportedTypes
string[]
required

Order payload types your signer understands. The current settlement payload is escrow-v0 - pass ["escrow-v0"].

Example:
minValidUntil
integer | null

Earliest quote expiry (unix seconds) you will accept. Firm quotes whose window closes sooner are dropped before ranking - set it when your flow needs headroom between quoting and signing.

solverOptions
Solver Options · object | null

Per-request solver tuning: pin or exclude specific roster ids from GET /solvers, or adjust the sweep timeout. Server-managed defaults apply when omitted.

Response

Successful Response

quotes
QuoteCandidate · object[]
required

Firm quotes ranked best price first. Every entry is a signed, executable commitment from a competing solver or LP - never a DEX, bridge, issuer, or indicative price. When no eligible counterparty can quote, the API returns a typed productUnavailable error instead of padding this list from another source.

totalQuotes
integer
required

Number of firm quotes returned.

metadata
QuoteMetadata · object | null

How the sweep went - the competition behind the response, at a glance.