curl --request GET \
--url https://api.tetrafi.io/api/v1/quotes/requests/{quoteRequestId} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.tetrafi.io/api/v1/quotes/requests/{quoteRequestId}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.tetrafi.io/api/v1/quotes/requests/{quoteRequestId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tetrafi.io/api/v1/quotes/requests/{quoteRequestId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tetrafi.io/api/v1/quotes/requests/{quoteRequestId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tetrafi.io/api/v1/quotes/requests/{quoteRequestId}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tetrafi.io/api/v1/quotes/requests/{quoteRequestId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"orders": [
{
"orderId": "<string>",
"quoteId": "<string>"
}
],
"quoteRequestId": "<string>",
"quotes": [
{
"advisories": [],
"assurance": null,
"basis": "liveQuote",
"buy": {
"amount": "9996.0",
"asset": "USDT",
"chain": "eip155:8453",
"variant": {
"kind": "native",
"name": "USDT"
}
},
"corridors": [
{
"from": "eip155:1",
"to": "eip155:8453"
}
],
"eta": "PT40S",
"expiresAt": "2026-10-17T10:01:00Z",
"failureHandling": "refundOnSource",
"fees": [
{
"amount": "4.0",
"asset": "USDT",
"chain": null,
"included": true,
"kind": "provider",
"leg": 0,
"paidBy": "taker"
},
{
"amount": "0.0004",
"asset": "ETH",
"chain": "eip155:42161",
"included": false,
"kind": "network",
"leg": 0,
"paidBy": "taker"
}
],
"firm": false,
"id": "q_01JAY7Q5M3ZK8V2N4R6T8W0XYB",
"lastLook": false,
"legs": [
{
"expectedArrival": null,
"fundingModel": null,
"location": {
"from": "eip155:42161",
"kind": "crossChain",
"to": "eip155:8453"
},
"venue": {
"id": "tetrafi-solver",
"logoUrl": null,
"modality": "solver",
"name": "TetraFi Solver",
"protocolVersion": null
}
}
],
"location": {
"kind": "crossChain"
},
"minOut": "9966.01",
"minReceiveRequired": false,
"netReceived": {
"amount": "9994.8",
"kind": "known"
},
"next": {
"kind": "sign",
"typedData": {}
},
"observedAt": null,
"readiness": {
"kind": "ready"
},
"requoteOf": null,
"screening": "screened",
"sell": {
"amount": "10000",
"asset": "USDC",
"chain": "eip155:42161",
"variant": {
"kind": "native",
"name": "USDC"
}
},
"signaturesRequired": 1,
"spreadFromMidBps": {
"bps": 6,
"kind": "known"
},
"staleAfter": null
}
],
"request": {
"amount": "10000",
"pay": {
"asset": "USDC",
"chain": "eip155:8453"
},
"receive": {
"asset": "USDC",
"chain": "eip155:8453"
},
"side": "payExact",
"deliverTo": {
"financialAccountId": "<string>",
"kind": "financialAccount"
},
"filters": {
"firmOnly": true,
"locations": [
"singleChain"
],
"modalities": [
"amm"
],
"variants": {
"pay": "any",
"receive": "any"
},
"venues": {
"exclude": [
"<string>"
],
"include": [
"<string>"
]
}
},
"integrationAppId": "<string>",
"onBehalfOf": "<string>",
"preferredWallets": {},
"priceProtectionBps": 1,
"routingOptions": {
"exactRouteEdgeIds": [
"<string>"
],
"maxRouteCandidates": 1,
"maxRouteLegs": 1,
"routes": true
},
"sort": "netReceived",
"source": {
"fundingAccountId": "<string>",
"tradingWallets": {},
"venueAccountId": "<string>"
},
"timeout": "PT120S"
},
"requestedAt": "2023-11-07T05:31:56Z",
"requestedByYou": true,
"sources": [
{
"asked": true,
"detail": "<string>",
"status": "asking",
"venue": {
"id": "<string>",
"logoUrl": "<string>",
"modality": "amm",
"name": "<string>",
"protocolVersion": "<string>",
"integrationMode": "basic",
"venueId": "<string>",
"venueName": "<string>"
}
}
],
"venueAsked": true
}{
"docUrl": "<string>",
"error": "<string>",
"message": "<string>",
"retryable": true,
"timestamp": 123,
"details": {
"capabilityBlockers": [
{
"code": "WORKSPACE_NOT_FOUND",
"estimate": "minutes",
"message": "<string>",
"unlockStep": "finish_onboarding",
"currentlyDue": [
"<string>"
]
}
],
"conflicts": [
"<string>"
],
"field": "<string>",
"reason": "<string>",
"remediation": "<string>",
"retryAfter": "PT120S",
"value": "<string>"
},
"next": {
"kind": "order"
},
"requestId": "<string>"
}{
"docUrl": "<string>",
"error": "<string>",
"message": "<string>",
"retryable": true,
"timestamp": 123,
"details": {
"capabilityBlockers": [
{
"code": "WORKSPACE_NOT_FOUND",
"estimate": "minutes",
"message": "<string>",
"unlockStep": "finish_onboarding",
"currentlyDue": [
"<string>"
]
}
],
"conflicts": [
"<string>"
],
"field": "<string>",
"reason": "<string>",
"remediation": "<string>",
"retryAfter": "PT120S",
"value": "<string>"
},
"next": {
"kind": "order"
},
"requestId": "<string>"
}{
"docUrl": "<string>",
"error": "<string>",
"message": "<string>",
"retryable": true,
"timestamp": 123,
"details": {
"capabilityBlockers": [
{
"code": "WORKSPACE_NOT_FOUND",
"estimate": "minutes",
"message": "<string>",
"unlockStep": "finish_onboarding",
"currentlyDue": [
"<string>"
]
}
],
"conflicts": [
"<string>"
],
"field": "<string>",
"reason": "<string>",
"remediation": "<string>",
"retryAfter": "PT120S",
"value": "<string>"
},
"next": {
"kind": "order"
},
"requestId": "<string>"
}{
"docUrl": "<string>",
"error": "<string>",
"message": "<string>",
"retryable": true,
"timestamp": 123,
"details": {
"capabilityBlockers": [
{
"code": "WORKSPACE_NOT_FOUND",
"estimate": "minutes",
"message": "<string>",
"unlockStep": "finish_onboarding",
"currentlyDue": [
"<string>"
]
}
],
"conflicts": [
"<string>"
],
"field": "<string>",
"reason": "<string>",
"remediation": "<string>",
"retryAfter": "PT120S",
"value": "<string>"
},
"next": {
"kind": "order"
},
"requestId": "<string>"
}{
"docUrl": "<string>",
"error": "<string>",
"message": "<string>",
"retryable": true,
"timestamp": 123,
"details": {
"capabilityBlockers": [
{
"code": "WORKSPACE_NOT_FOUND",
"estimate": "minutes",
"message": "<string>",
"unlockStep": "finish_onboarding",
"currentlyDue": [
"<string>"
]
}
],
"conflicts": [
"<string>"
],
"field": "<string>",
"reason": "<string>",
"remediation": "<string>",
"retryAfter": "PT120S",
"value": "<string>"
},
"next": {
"kind": "order"
},
"requestId": "<string>"
}{
"docUrl": "<string>",
"error": "<string>",
"message": "<string>",
"retryable": true,
"timestamp": 123,
"details": {
"capabilityBlockers": [
{
"code": "WORKSPACE_NOT_FOUND",
"estimate": "minutes",
"message": "<string>",
"unlockStep": "finish_onboarding",
"currentlyDue": [
"<string>"
]
}
],
"conflicts": [
"<string>"
],
"field": "<string>",
"reason": "<string>",
"remediation": "<string>",
"retryAfter": "PT120S",
"value": "<string>"
},
"next": {
"kind": "order"
},
"requestId": "<string>"
}{
"docUrl": "<string>",
"error": "<string>",
"message": "<string>",
"retryable": true,
"timestamp": 123,
"details": {
"capabilityBlockers": [
{
"code": "WORKSPACE_NOT_FOUND",
"estimate": "minutes",
"message": "<string>",
"unlockStep": "finish_onboarding",
"currentlyDue": [
"<string>"
]
}
],
"conflicts": [
"<string>"
],
"field": "<string>",
"reason": "<string>",
"remediation": "<string>",
"retryAfter": "PT120S",
"value": "<string>"
},
"next": {
"kind": "order"
},
"requestId": "<string>"
}{
"docUrl": "<string>",
"error": "<string>",
"message": "<string>",
"retryable": true,
"timestamp": 123,
"details": {
"capabilityBlockers": [
{
"code": "WORKSPACE_NOT_FOUND",
"estimate": "minutes",
"message": "<string>",
"unlockStep": "finish_onboarding",
"currentlyDue": [
"<string>"
]
}
],
"conflicts": [
"<string>"
],
"field": "<string>",
"reason": "<string>",
"remediation": "<string>",
"retryAfter": "PT120S",
"value": "<string>"
},
"next": {
"kind": "order"
},
"requestId": "<string>"
}Read a quote request's recorded answer
The quotes, sources and orders of one asset-pair POST /quotes answer, as recorded off the hot path. Readable by the principal that asked, by a member session with view_orders in its workspace, and by an orders_read API key when an order was placed on one of its quotes in that workspace. Unknown and foreign ids are the same 404. requestedByYou says whether the caller asked; only then can it order these quotes.
curl --request GET \
--url https://api.tetrafi.io/api/v1/quotes/requests/{quoteRequestId} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.tetrafi.io/api/v1/quotes/requests/{quoteRequestId}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.tetrafi.io/api/v1/quotes/requests/{quoteRequestId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tetrafi.io/api/v1/quotes/requests/{quoteRequestId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tetrafi.io/api/v1/quotes/requests/{quoteRequestId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tetrafi.io/api/v1/quotes/requests/{quoteRequestId}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tetrafi.io/api/v1/quotes/requests/{quoteRequestId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"orders": [
{
"orderId": "<string>",
"quoteId": "<string>"
}
],
"quoteRequestId": "<string>",
"quotes": [
{
"advisories": [],
"assurance": null,
"basis": "liveQuote",
"buy": {
"amount": "9996.0",
"asset": "USDT",
"chain": "eip155:8453",
"variant": {
"kind": "native",
"name": "USDT"
}
},
"corridors": [
{
"from": "eip155:1",
"to": "eip155:8453"
}
],
"eta": "PT40S",
"expiresAt": "2026-10-17T10:01:00Z",
"failureHandling": "refundOnSource",
"fees": [
{
"amount": "4.0",
"asset": "USDT",
"chain": null,
"included": true,
"kind": "provider",
"leg": 0,
"paidBy": "taker"
},
{
"amount": "0.0004",
"asset": "ETH",
"chain": "eip155:42161",
"included": false,
"kind": "network",
"leg": 0,
"paidBy": "taker"
}
],
"firm": false,
"id": "q_01JAY7Q5M3ZK8V2N4R6T8W0XYB",
"lastLook": false,
"legs": [
{
"expectedArrival": null,
"fundingModel": null,
"location": {
"from": "eip155:42161",
"kind": "crossChain",
"to": "eip155:8453"
},
"venue": {
"id": "tetrafi-solver",
"logoUrl": null,
"modality": "solver",
"name": "TetraFi Solver",
"protocolVersion": null
}
}
],
"location": {
"kind": "crossChain"
},
"minOut": "9966.01",
"minReceiveRequired": false,
"netReceived": {
"amount": "9994.8",
"kind": "known"
},
"next": {
"kind": "sign",
"typedData": {}
},
"observedAt": null,
"readiness": {
"kind": "ready"
},
"requoteOf": null,
"screening": "screened",
"sell": {
"amount": "10000",
"asset": "USDC",
"chain": "eip155:42161",
"variant": {
"kind": "native",
"name": "USDC"
}
},
"signaturesRequired": 1,
"spreadFromMidBps": {
"bps": 6,
"kind": "known"
},
"staleAfter": null
}
],
"request": {
"amount": "10000",
"pay": {
"asset": "USDC",
"chain": "eip155:8453"
},
"receive": {
"asset": "USDC",
"chain": "eip155:8453"
},
"side": "payExact",
"deliverTo": {
"financialAccountId": "<string>",
"kind": "financialAccount"
},
"filters": {
"firmOnly": true,
"locations": [
"singleChain"
],
"modalities": [
"amm"
],
"variants": {
"pay": "any",
"receive": "any"
},
"venues": {
"exclude": [
"<string>"
],
"include": [
"<string>"
]
}
},
"integrationAppId": "<string>",
"onBehalfOf": "<string>",
"preferredWallets": {},
"priceProtectionBps": 1,
"routingOptions": {
"exactRouteEdgeIds": [
"<string>"
],
"maxRouteCandidates": 1,
"maxRouteLegs": 1,
"routes": true
},
"sort": "netReceived",
"source": {
"fundingAccountId": "<string>",
"tradingWallets": {},
"venueAccountId": "<string>"
},
"timeout": "PT120S"
},
"requestedAt": "2023-11-07T05:31:56Z",
"requestedByYou": true,
"sources": [
{
"asked": true,
"detail": "<string>",
"status": "asking",
"venue": {
"id": "<string>",
"logoUrl": "<string>",
"modality": "amm",
"name": "<string>",
"protocolVersion": "<string>",
"integrationMode": "basic",
"venueId": "<string>",
"venueName": "<string>"
}
}
],
"venueAsked": true
}{
"docUrl": "<string>",
"error": "<string>",
"message": "<string>",
"retryable": true,
"timestamp": 123,
"details": {
"capabilityBlockers": [
{
"code": "WORKSPACE_NOT_FOUND",
"estimate": "minutes",
"message": "<string>",
"unlockStep": "finish_onboarding",
"currentlyDue": [
"<string>"
]
}
],
"conflicts": [
"<string>"
],
"field": "<string>",
"reason": "<string>",
"remediation": "<string>",
"retryAfter": "PT120S",
"value": "<string>"
},
"next": {
"kind": "order"
},
"requestId": "<string>"
}{
"docUrl": "<string>",
"error": "<string>",
"message": "<string>",
"retryable": true,
"timestamp": 123,
"details": {
"capabilityBlockers": [
{
"code": "WORKSPACE_NOT_FOUND",
"estimate": "minutes",
"message": "<string>",
"unlockStep": "finish_onboarding",
"currentlyDue": [
"<string>"
]
}
],
"conflicts": [
"<string>"
],
"field": "<string>",
"reason": "<string>",
"remediation": "<string>",
"retryAfter": "PT120S",
"value": "<string>"
},
"next": {
"kind": "order"
},
"requestId": "<string>"
}{
"docUrl": "<string>",
"error": "<string>",
"message": "<string>",
"retryable": true,
"timestamp": 123,
"details": {
"capabilityBlockers": [
{
"code": "WORKSPACE_NOT_FOUND",
"estimate": "minutes",
"message": "<string>",
"unlockStep": "finish_onboarding",
"currentlyDue": [
"<string>"
]
}
],
"conflicts": [
"<string>"
],
"field": "<string>",
"reason": "<string>",
"remediation": "<string>",
"retryAfter": "PT120S",
"value": "<string>"
},
"next": {
"kind": "order"
},
"requestId": "<string>"
}{
"docUrl": "<string>",
"error": "<string>",
"message": "<string>",
"retryable": true,
"timestamp": 123,
"details": {
"capabilityBlockers": [
{
"code": "WORKSPACE_NOT_FOUND",
"estimate": "minutes",
"message": "<string>",
"unlockStep": "finish_onboarding",
"currentlyDue": [
"<string>"
]
}
],
"conflicts": [
"<string>"
],
"field": "<string>",
"reason": "<string>",
"remediation": "<string>",
"retryAfter": "PT120S",
"value": "<string>"
},
"next": {
"kind": "order"
},
"requestId": "<string>"
}{
"docUrl": "<string>",
"error": "<string>",
"message": "<string>",
"retryable": true,
"timestamp": 123,
"details": {
"capabilityBlockers": [
{
"code": "WORKSPACE_NOT_FOUND",
"estimate": "minutes",
"message": "<string>",
"unlockStep": "finish_onboarding",
"currentlyDue": [
"<string>"
]
}
],
"conflicts": [
"<string>"
],
"field": "<string>",
"reason": "<string>",
"remediation": "<string>",
"retryAfter": "PT120S",
"value": "<string>"
},
"next": {
"kind": "order"
},
"requestId": "<string>"
}{
"docUrl": "<string>",
"error": "<string>",
"message": "<string>",
"retryable": true,
"timestamp": 123,
"details": {
"capabilityBlockers": [
{
"code": "WORKSPACE_NOT_FOUND",
"estimate": "minutes",
"message": "<string>",
"unlockStep": "finish_onboarding",
"currentlyDue": [
"<string>"
]
}
],
"conflicts": [
"<string>"
],
"field": "<string>",
"reason": "<string>",
"remediation": "<string>",
"retryAfter": "PT120S",
"value": "<string>"
},
"next": {
"kind": "order"
},
"requestId": "<string>"
}{
"docUrl": "<string>",
"error": "<string>",
"message": "<string>",
"retryable": true,
"timestamp": 123,
"details": {
"capabilityBlockers": [
{
"code": "WORKSPACE_NOT_FOUND",
"estimate": "minutes",
"message": "<string>",
"unlockStep": "finish_onboarding",
"currentlyDue": [
"<string>"
]
}
],
"conflicts": [
"<string>"
],
"field": "<string>",
"reason": "<string>",
"remediation": "<string>",
"retryAfter": "PT120S",
"value": "<string>"
},
"next": {
"kind": "order"
},
"requestId": "<string>"
}{
"docUrl": "<string>",
"error": "<string>",
"message": "<string>",
"retryable": true,
"timestamp": 123,
"details": {
"capabilityBlockers": [
{
"code": "WORKSPACE_NOT_FOUND",
"estimate": "minutes",
"message": "<string>",
"unlockStep": "finish_onboarding",
"currentlyDue": [
"<string>"
]
}
],
"conflicts": [
"<string>"
],
"field": "<string>",
"reason": "<string>",
"remediation": "<string>",
"retryAfter": "PT120S",
"value": "<string>"
},
"next": {
"kind": "order"
},
"requestId": "<string>"
}Authorizations
Send the API key in X-API-Key.
Request signing. A key with signing enabled (POST /api/v1/workspaces/{workspaceId}/users/me/api-keys/{keyId}/signing, which returns the signing secret once) must also sign every request:
X-Timestamp: the current Unix time in seconds, within 300 seconds of the server clock.X-Signature: lower-case hex HMAC-SHA256 of the canonical string, keyed with the signing secret's 32 bytes (the secret is 64 hex characters; decode it first).
The canonical string is four lines joined by \n, with no trailing newline: the X-Timestamp value, the upper-case method, the path with its query exactly as sent (/api/v1/orders?limit=1), and the lower-case hex SHA-256 of the exact body bytes (the SHA-256 of an empty body when there is none).
A write's signature (POST, PUT, PATCH, DELETE) is accepted once: sending the same signed write again is refused, so a retry signs again. A read (GET, HEAD) changes nothing, so an identical signed read inside the window is admitted again and polling needs no nonce.
A signing refusal is a 401 AUTH_REQUIRED whose details.reason names the cause: SIGNATURE_REQUIRED (a header is missing), SIGNATURE_INVALID (a malformed header or a wrong signature), TIMESTAMP_OUT_OF_RANGE or SIGNATURE_REPLAYED.
Headers
The workspace the request acts in. An API key bound to a workspace implies it: omit the header, or send that same id (another id answers 403 WORKSPACE_SCOPE_MISMATCH). A member session must send it (400 MISSING_WORKSPACE without it).
Path Parameters
The set's quoteRequestId (rq_…)
Response
The recorded quote request
GET /quotes/requests/{quoteRequestId}: a quote request's recorded
answer, read back by its owner. It carries no executable part.
Every order placed on one of these quotes.
Show child attributes
Show child attributes
A recorded card plus its current server-held state. Economics remain as served.
- Option 1
- Option 2
Show child attributes
Show child attributes
{ "advisories": [], "assurance": null, "basis": "liveQuote", "buy": { "amount": "9996.0", "asset": "USDT", "chain": "eip155:8453", "variant": { "kind": "native", "name": "USDT" } }, "corridors": [{ "from": "eip155:1", "to": "eip155:8453" }], "eta": "PT40S", "expiresAt": "2026-10-17T10:01:00Z", "failureHandling": "refundOnSource", "fees": [ { "amount": "4.0", "asset": "USDT", "chain": null, "included": true, "kind": "provider", "leg": 0, "paidBy": "taker" }, { "amount": "0.0004", "asset": "ETH", "chain": "eip155:42161", "included": false, "kind": "network", "leg": 0, "paidBy": "taker" } ], "firm": false, "id": "q_01JAY7Q5M3ZK8V2N4R6T8W0XYB", "lastLook": false, "legs": [ { "expectedArrival": null, "fundingModel": null, "location": { "from": "eip155:42161", "kind": "crossChain", "to": "eip155:8453" }, "venue": { "id": "tetrafi-solver", "logoUrl": null, "modality": "solver", "name": "TetraFi Solver", "protocolVersion": null } } ], "location": { "kind": "crossChain" }, "minOut": "9966.01", "minReceiveRequired": false, "netReceived": { "amount": "9994.8", "kind": "known" }, "next": { "kind": "sign", "typedData": {} }, "observedAt": null, "readiness": { "kind": "ready" }, "requoteOf": null, "screening": "screened", "sell": { "amount": "10000", "asset": "USDC", "chain": "eip155:42161", "variant": { "kind": "native", "name": "USDC" } }, "signaturesRequired": 1, "spreadFromMidBps": { "bps": 6, "kind": "known" }, "staleAfter": null }
The request as it was sent (the Binding by target id, never raw identity fields).
Show child attributes
Show child attributes
Whether the caller is the principal that asked. Only that principal can order these quotes:
another member (view_orders) or an orders_read key reads them, and each liveState is
the hold as its owner sees it, never the reader's authority to order.
One considered venue's outcome, a closed set tagged status:
| status | meaning |
|---|---|
asking | in flight on the stream only: the auction is consulting this venue now; its final outcome replaces it under the same venue key, and none remains at complete |
answered | the venue produced a quote |
needsWallet | no wallet of family to ask with |
walletRefused | the bound wallet is refused (Revoked, a confirmed sanctions hit) |
firmQuoteLimited | a desk's firm-quote cap applies; explanation is product copy |
priceOnRequest | no venue price was requested; quoteId identifies the held estimate or stub to Requote |
askLimitReached | the venue's ask limit is reached for now; retryAfter says when to ask again |
timedOut | no answer inside the deadline |
refused | the venue refused the live ask |
restricted | a gate kept the venue from this principal |
unsupported | the venue does not serve the pair |
filteredOut | the request's own filters exclude it (never a coverage or chain gap) |
unavailable | a read failed (admissionUnavailable, …) |
An unscreened default wallet is not a status: the quote carries screening. venue
is the venue block, its id the one quote legs and /prices rows carry. Durations
(retryAfter) are ISO 8601, counted from when the response was sent. Every entry
carries asked: whether this venue was consulted for this request: a live ask, or a
fresh read of its published book or live desk price within that source's freshness
window. An estimate no venue gave (a model or reference price) is not consulted, and
an answered entry is always consulted. How a card's price was obtained is its own
price basis, never this flag.
New values may be added; treat unknown values as other.
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
- Option 9
- Option 10
- Option 11
- Option 12
- Option 13
- Option 14
Show child attributes
Show child attributes