Lock an exchange rate for 60 seconds. The quote guarantees the rate for the duration — use it with POST /fx/conversions or POST /payments (with executionPreference: use_quote).
Amount semantics: Provide either sellAmount (how much to sell) or buyAmount (how much to receive), but not both. The system calculates the other side at the current market rate. The amountInputSide field on the response indicates which side was authoritative.
Quote lifecycle: active → expired (after 60s) or consumed (used in a conversion or payment). A consumed quote cannot be reused. Expired quotes must be recreated.
Use GET /fx/asset-pairs first to discover available pairs and min/max amounts.
API key issued at onboarding. Passed as a Bearer token in the Authorization header: Authorization: Bearer <api-key>. Identifies the caller and determines organization scope. Invalid or revoked keys return 401 with error type authentication_error.
Ed25519 or RSA-SHA256 asymmetric signature over the request payload (ADR-0015). Provides request integrity and non-repudiation. The signature covers the HTTP method, path, query string, request body, and timestamp. Invalid signatures return 401 with error type authentication_error.
Unix timestamp (seconds) of when the request was signed. Server rejects requests where the timestamp drifts beyond +/-60 seconds from server time to prevent replay attacks. Must match the timestamp used in the signature computation.
Idempotency key for this request. UUID v4 recommended. Max 128 characters. 24-hour retention. Same key + same body replays original response with Idempotency-Replayed: true. Same key + different body returns 409 (code: duplicate_idempotency_key). Same key while the original request is still processing returns 409 with a Retry-After header (code: idempotency_key_in_flight).
128"550e8400-e29b-41d4-a716-446655440000"
Provide exactly one of sellAmount or buyAmount (not both). The other side is calculated from the locked rate.
ISO 4217 currency code for fiat (USD, EUR, GBP) or crypto asset ticker (USDC, BTC, ETH). Uppercase, 2-10 characters. Use this type in contexts where both fiat currencies and crypto assets are accepted.
^[A-Z]{2,10}$"USD"
ISO 4217 currency code for fiat (USD, EUR, GBP) or crypto asset ticker (USDC, BTC, ETH). Uppercase, 2-10 characters. Use this type in contexts where both fiat currencies and crypto assets are accepted.
^[A-Z]{2,10}$"USD"
Monetary amount as a string. Always string, never float. Up to 8 decimal places for crypto precision.
^[0-9]+(\.[0-9]{1,8})?$"1500.00"
Monetary amount as a string. Always string, never float. Up to 8 decimal places for crypto precision.
^[0-9]+(\.[0-9]{1,8})?$"1500.00"
FX quote created.
A locked FX rate quote valid for 60 seconds. Use to guarantee a rate before executing a conversion or payment. Supports either sellAmount or buyAmount as input (not both).
FX quote resource identifier.
^qte_[A-Za-z0-9]+$"qte_01953e1a5f4b7006"
ISO 4217 currency code for fiat (USD, EUR, GBP) or crypto asset ticker (USDC, BTC, ETH). Uppercase, 2-10 characters. Use this type in contexts where both fiat currencies and crypto assets are accepted.
^[A-Z]{2,10}$"USD"
ISO 4217 currency code for fiat (USD, EUR, GBP) or crypto asset ticker (USDC, BTC, ETH). Uppercase, 2-10 characters. Use this type in contexts where both fiat currencies and crypto assets are accepted.
^[A-Z]{2,10}$"USD"
Locked exchange rate.
"1.0852"
Lifecycle status of an FX quote.
active, expired, consumed UTC timestamp in RFC 3339 / ISO 8601 format.
"2026-02-23T12:00:00Z"
UTC timestamp in RFC 3339 / ISO 8601 format.
"2026-02-23T12:00:00Z"
Monetary amount as a string. Always string, never float. Up to 8 decimal places for crypto precision.
^[0-9]+(\.[0-9]{1,8})?$"1500.00"
Monetary amount as a string. Always string, never float. Up to 8 decimal places for crypto precision.
^[0-9]+(\.[0-9]{1,8})?$"1500.00"
Discriminator indicating this is an FX quote.
fx, payment Inverse of the locked rate.
"0.9215"