Skip to main content
By the end of this page an RFQ trade of yours will have settled on-chain. The route there: find a tradable corridor, put LPs in competition, authorize the winner, watch the escrow do its job.
Outcome: a working quote-to-settlement loop you can build on.Time: one coffee (10-15 minutes).Bring: EVM wallet basics, a grasp of token approvals, and an API key (tfk_test_ targets the sandbox).

Step 1 - Find What’s Tradable

What’s quotable is a moving target - LPs join, corridors open - so treat this data as a feed to poll, never a constant to pin.

List Tradable Pairs

Fetch the pairs currently quotable across your workspace’s eligible solvers:
Response (abridged):
Each entry names the exact input and output asset - use those chainId + address pairs verbatim in your quote requests. The networks themselves are listed on Supported Chains.

See Who’s Quoting

Solvers and LPs are the counterparties behind every RFQ quote. You can inspect the roster your workspace can reach:
Key discovery fields:
Keep it fresh: a daily re-pull of the pair list is the floor - inventory shifts and new listings land continuously.

Step 2 - Collect Firm Quotes

Every quote is a live commitment with a countdown attached (roughly a minute of validity) - collect them at decision time, not ahead of it.

Authentication

Requests without a credential are rejected with 401 AUTH_REQUIRED - there is no anonymous quoting.
Use a tfk_test_ key against the sandbox while you build, then switch to tfk_live_ for production. See Authentication for key setup.

A First Quote Request

The request body describes your intent:
Delivery is addressable: funding and signing belong to the input’s user, but each output lands wherever its receiver says - a third-party wallet included, whichever execution mode runs.
  • ExactInput fixes what you send - “sell 25 USDC, receive whatever it buys”
  • ExactOutput fixes what you get - “deliver exactly 20 USDC, charge what it takes”
So 250 USDC (6 decimals) travels on the wire as 250 × 10⁶ = 250000000
Example - moving 25 USDC from Optimism to Base:
Building a wallet or super-app? Quotes whose execution mode is apiSubmit let TetraFi handle on-chain submission for your users. The Order Submission guide covers that path end to end.

Making Sense of the Response

Every entry is a firm quote from a competing solver or LP - ranked, with the best first:
What to read first:
Never hardcode contract addresses. Approval spenders and settlement addresses come from the preflight nextActions for the quote you picked - they differ by chain, funding lock, and workspace: your trades enter through your workspace’s own router contract, deployed for your workspace at provisioning.See Settlement & Smart Contracts and the Token Approvals guide.

Step 3 - Sign and Settle

Preflight your chosen quote, run any approval actions it lists, then follow its plan: sign the escrow-v0 payload and submit - or broadcast the prepared transaction yourself when the quote’s mode is walletBroadcast.
Partial fills are supported when the intent sets partialFill: true. See the Partial Fills guide.
The preflight plan (nextActions) contains everything: approval transactions ready to broadcast, the typed data to sign, and where to submit it.
For the full apiSubmit path - signing the typed data and POSTing the order while TetraFi handles gas - see the Order Submission guide.
The moving parts:

Where Next

Ready for more? The guides go deeper:

Token Approvals

The approval loop and the three funding locks.

Order Submission

Gas-free UX for your users: TetraFi carries the transaction.

Partial Fills

Fill what’s available now, refund the rest.

Multi-Token Trades

Multiple inputs and outputs in a single order.