quality, and until when in expiresAt: read both before you order.
Firm, executable and indicative
How to recognise each, and what firmness does not cover
How to recognise each, and what firmness does not cover
firmandexpiresAtrepeatqualityin two fields. Treat aqualityyou do not recognise asindicative.lastLookis alwaysfalse: no venue re-checks an accepted price before it fills. An order inside a firm quote’s window trades at that price or is refused unsent.- Firmness does not waive funding, wallet, permission or pre-trade checks. It does not mean the order will be accepted or settle immediately.
- A price is never firm: only a quote can be.
Order an indicative quote
Order an indicative quote
Lifetime and requotes
- Order before
expiresAt, read from the quote, never a timer started on your side. - Until
retainUntil, ordering a lapsed quote answers410 QUOTE_EXPIREDwithnext.kind: "requote": requote the same id. - After it, a requote or an order answers
410 REQUOTE_WINDOW_CLOSEDwithnext.kind: "search": search again.
Ask for firm prices
Sendfirmness: "firm" to ask every eligible desk for a firm price up front, or filters.firmOnly: true to keep only firm quotes.
The two firmness fields
The two firmness fields
Two independent request fields control firmness:
How
filters.firmOnly behaves:- It drops executable estimates and indicative quotes after the venues answer. The same venues are asked, and the search counts against the quote limit as usual.
- A venue that gave only estimates still reads
answeredinsources, with no quote inquotes. - Send it when you are about to trade and compare only committed amounts. Leave it out when you compare prices: an order book or a pool may give the best one, protected by
minOut. filters.executableOnlyis refused with400 INVALID_REQUEST.
Quote times
Use the returnedexpiresAt: each venue type sets its own window, and network time or an older observation can leave less.
Every quote time
Every quote time
When
next.kind is requote, next.needs lists what the new quote needs from you, such as a trading wallet to name; an empty list means requote it as it is.Window by venue type
Window by venue type
Requote a quote
Send a quote’s id to ask its venue for a new price and get one new quote from that venue. Requote to change how it executes, to get an executable price for an indicative quote or a desk’s firm price when its quote readsnext.kind: "requote", or to refresh it after it expires.
1
Send the quote id
POST /api/v1/quotes with kind: "requote", requote set to the quote id, and only the fields you change.2
Order the new id
The new quote’s
requoteOf names the original.Response (shortened)
Why requote
Why requote
- Change how it executes: another trading wallet or venue account (
source), destination (deliverTo), corridor (corridor) or price protection (priceProtectionBps). - Get an executable price for an indicative quote, or a desk’s firm price when its quote reads
next.kind: "requote". - Refresh a quote that expired.
Requote fields
Requote fields
A field you leave out keeps the original’s. The pair, amount, side and filters cannot change: sending them is
400 REQUOTE_FIELDS_CONFLICT. For a different pair or amount, search again.How a requote behaves
How a requote behaves
- You get one new quote whose
requoteOfnames the original. Order the new id. - The answer is JSON, never a stream.
- The original stays orderable until its own
expiresAt. Each quote can still be ordered once. - Only that venue is asked (for a route, every venue on that same route). If it declines, you get a named refusal; TetraFi never substitutes another venue.
- A requote counts against the quote limit.
Example: a different price protection
Example: a different price protection
Here a requote at 50 basis points lowers
minOut from 4.99182 to 4.98181 on the same quoted amount:Refresh an expired quote
An expired quote is refused with410 QUOTE_EXPIRED and nothing is sent. Requote the same id.
Example
Example
Output
Refusals
Requote refusals
Requote refusals
Run the full script
Requotes a quote at another price protection and refreshes a quote that expired.
Next
Place an order
Order a quote you hold by its id.
Request quotes
Search again for a different pair or amount.