---
title: "Get a single pair from a provider"
method: GET
path: "/providers/{provider}/rate/{base}/{quote}"
---

# Get a single pair from a provider

`GET /providers/{provider}/rate/{base}/{quote}`

Returns one provider's rate for a single currency pair. Identical to `/rate/{base}/{quote}?providers={provider}`. The pair may be published directly or derived from the provider's own rates for both currencies. Returns 404 when the provider has no data for either currency on the date.

## Path parameters

- `provider` string, required
- `base` string, required
- `quote` string, required

## Query parameters

- `date` string, date

## Response `200`

Exchange rate

- Rate
  - `date` string, date, required — The date of the rate
  - `base` string, required — Base currency or accounting unit code
  - `quote` string, required — Quote currency or accounting unit code
  - `rate` number, required — Exchange rate value
  - `providers` object[] — Per-provider rates for this pair. Present only when `expand=providers` is set. Each entry has the provider's observation date and published rate (rebased to the row's base). Entries with `excluded: true` did not contribute to the blended `rate` — either flagged as outliers by the consensus filter, or overridden by a currency peg. Omitted on synthesized peg rows where no provider published the quote.
    - `key` string, required — Provider key
    - `date` string, date, required — Provider observation date used for this entry
    - `rate` number, required — Provider's rate, rebased to the row's base
    - `excluded` boolean — Present and true when this entry did not contribute to the blended rate

## Other responses

- `404` — No data found
- `422` — Invalid request
- `503` — The request deadline expired before the response could be computed, or the worker process is already running its limit of concurrent live daily-range computes (any daily range served live: with providers, with expand=providers, or before the precomputed blend is ready). In the second case a Retry-After header says how many seconds to wait before retrying. Otherwise retry with a narrower request: filter with quotes, aggregate with group, or split the range into shorter requests.

## Changes

- **2026-09-10** (v2) `479dfde7e7ba` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/lineofflight/apis/frankfurter-api/changes/providers/:provider/rate/:base/:quote/get.md)

---

[API](https://skmtc.dev/lineofflight/apis/frankfurter-api.md) · [All operations](https://skmtc.dev/lineofflight/apis/frankfurter-api/llms.txt) · [OpenAPI document](https://skmtc.dev/lineofflight/apis/frankfurter-api/revisions/b3b333b6ad08?raw)
