---
title: "Get an indicative FX rate for a pair"
method: GET
path: "/v1/fx/rates"
tags: ["FX"]
---

# Get an indicative FX rate for a pair

`GET /v1/fx/rates`

Returns an indicative (cached, ~30s-fresh) mid-market reference rate with the calling organization’s spread applied. Use this for browse/UX surfaces. This endpoint takes no amount — per-corridor amount limits apply only when committing to a firm price via `POST /v1/fx/quotes`.

## Query parameters

- `sourceCurrency` string, required
- `sourceNetwork` string
- `sourceRail` string
- `destinationCurrency` string, required
- `destinationNetwork` string
- `destinationRail` string
- `onBehalfOf` string

## Headers

- `X-API-Key` string

## Response `200`

Indicative rate.

- FxRateResponseDto
  - `rate` string, required — Indicative all-in customer rate for `destinationCurrency / sourceCurrency`, post-spread. Not a firm quote — request `POST /v1/fx/quotes` to commit a price.
  - `asOf` string, required — When the underlying reference rate was sourced (ISO 8601). Rates are cached briefly to stay inside vendor budgets; this is the cache anchor, not a per-request timestamp.
  - `pairKey` string, required — Canonical SOURCE:DEST pair key (uppercase).
  - `source` 'reference', required — Always `reference` for this endpoint. Discriminator left open for future indicative-rate sources without changing the response shape.

## Other responses

- `400` — Invalid pair shape (mismatched network/rail slots), the fiat source rail is not yet supported (`fx_source_rail_not_supported` — send `SEPA` or `SEPA_INSTANT` for EUR onramp or `FASTER_PAYMENTS` for GBP; slow rails such as SWIFT are not available today), or a fiat pair was requested without `onBehalfOf` (`fx_rates_on_behalf_of_required`).
- `401` — Unauthorized - Invalid or missing authentication credentials
- `403` — The indicative-rates endpoint is not enabled for this organization (`fx_rates_not_enabled`), or fiat pairs are not enabled (`fx_fiat_pairs_not_enabled`).
- `404` — The requested pair is not supported by any vendor (`fx_pair_unsupported`).
- `409` — FX is not enabled for this organization on the given pair (`fx_not_enabled_for_pair`).
- `422` — No rate is available for the pair right now (`fx_quote_capacity_exhausted` / `fx_quote_temporarily_unavailable`). The body includes a `hint` with a human-readable explanation; `limits`/`requested` are never present on this endpoint (it takes no amount).

---

[API](https://skmtc.dev/infinite/apis/infinite-api.md) · [All operations](https://skmtc.dev/infinite/apis/infinite-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/infinite/infinite-api/revisions/5426f2706725/schema)
