FX

Quote an exchange and lock its rate

POST/fx/quotes

Prices selling sellAmount for buyCurrency and locks the rate until expiresAt (about 30 seconds). Execute it with POST /fx/exchanges and quoteId — once: a quote is single-use. Nothing moves and nothing is reserved; an unused quote simply lapses, so no Idempotency-Key is needed. Requires fx:write.

A crypto pair settles on an execution venue: its quote has rateLocked: false, the rate is indicative, and the exchange fills at the venue's price.

Accounts: name sellAccountId / buyAccountId, or leave them out and your default account in that currency (isDefault: true on GET /accounts) is used — or the only one, when you hold just one. None in the sell currency is 400 no_account_for_currency, none in the buy currency 400 fx_target_account_not_found. A named account in another currency is 400 fx_account_currency_mismatch; one that is not yours is 404 not_found.

Authentication
ApiKeyAuth
Execution
synchronous

Parameters

  • X-Request-Idstringheader
    Optional client correlation id; echoed back unchanged.

    max length 128

Request body application/jsonrequired

  • sellAmountobjectrequired
    What you sell. No more decimals than its currency has (and never more than 8).
    • valuestringrequired

      Example: 149.90

      pattern ^-?\d{1,18}(\.\d{1,18})?$

    • currencystringrequired
      ISO 4217 code for fiat (EUR), asset ticker for crypto (USDT).

      Example: EUR

      pattern ^[A-Z0-9]{3,10}$

  • buyCurrencystringrequired
    ISO 4217 code for fiat (EUR), asset ticker for crypto (USDT).

    Example: EUR

    pattern ^[A-Z0-9]{3,10}$

  • sellAccountIdstring
    Optional. Left out, your default account in the sell currency (isDefault) — or the only one.

    Example: acc_AAAAAAAAAAc

    pattern ^acc_[A-Za-z0-9_-]{11}$

  • buyAccountIdstring
    Optional. Left out, your default account in the buy currency (isDefault) — or the only one.

    Example: acc_AAAAAAAAAAc

    pattern ^acc_[A-Za-z0-9_-]{11}$

Responses

The quote.

Headers

  • X-Request-Idstring
    The client's X-Request-Id if supplied, otherwise a server-generated id. Equals traceId in problems.
  • RateLimit-Limitinteger
  • RateLimit-Remaininginteger
  • RateLimit-Resetinteger
    Seconds until the window resets.

Schema application/json

  • objectstringrequired

    Allowed values: fx_quote

  • idstringrequired
    Send as quoteId to POST /fx/exchanges. Single use.
  • sellMoneyrequired
    Decimal amount as a string — never a float, never minor units. An amount you send may carry no more decimal places than its currency has (and never more than 8); trailing zeros do not count, so 10.100 EUR is fine and 10.123 EUR is 400 validation_failed on amount.value.
    • valuestringrequired

      Example: 149.90

      pattern ^-?\d{1,18}(\.\d{1,18})?$

    • currencystringrequired
      ISO 4217 code for fiat (EUR), asset ticker for crypto (USDT).

      Example: EUR

      pattern ^[A-Z0-9]{3,10}$

  • buyMoneyrequired
    Decimal amount as a string — never a float, never minor units. An amount you send may carry no more decimal places than its currency has (and never more than 8); trailing zeros do not count, so 10.100 EUR is fine and 10.123 EUR is 400 validation_failed on amount.value.
    • valuestringrequired

      Example: 149.90

      pattern ^-?\d{1,18}(\.\d{1,18})?$

    • currencystringrequired
      ISO 4217 code for fiat (EUR), asset ticker for crypto (USDT).

      Example: EUR

      pattern ^[A-Z0-9]{3,10}$

  • ratestringrequired
    Units of the buy currency per unit of the sell currency, your spread applied: buy = sell × rate. A string, never a float.

    Example: 0.8612

  • feeobjectrequired
    Charged on top of sell, in the sell currency.
    • valuestringrequired

      Example: 149.90

      pattern ^-?\d{1,18}(\.\d{1,18})?$

    • currencystringrequired
      ISO 4217 code for fiat (EUR), asset ticker for crypto (USDT).

      Example: EUR

      pattern ^[A-Z0-9]{3,10}$

  • totalDebitedobjectrequired
    What leaves the sell account: sell + fee.
    • valuestringrequired

      Example: 149.90

      pattern ^-?\d{1,18}(\.\d{1,18})?$

    • currencystringrequired
      ISO 4217 code for fiat (EUR), asset ticker for crypto (USDT).

      Example: EUR

      pattern ^[A-Z0-9]{3,10}$

  • sellAccountIdstringrequired
    Opaque account identifier. Treat as a string; never parse or construct it.

    Example: acc_AAAAAAAAAAc

    pattern ^acc_[A-Za-z0-9_-]{11}$

  • buyAccountIdstringrequired
    Opaque account identifier. Treat as a string; never parse or construct it.

    Example: acc_AAAAAAAAAAc

    pattern ^acc_[A-Za-z0-9_-]{11}$

  • rateLockedbooleanrequired
    True when the rate is held until expiresAt. False when it is not: crypto pairs fill at the venue's price, and rate is a guide.
  • expiresAtstring (date-time)required
    RFC 3339, UTC, with millisecond precision.

    Example: 2026-09-18T10:15:30.123Z