apyhub
Back
▣ VERIFICATION KIT

ECB Currency Converter API

What it does

The Currency Converter API converts an amount from one currency to another using European Central Bank (ECB) reference rates. Currencies without an ECB rate use their fixed official parity.

Send from and to as ISO 4217 codes and an amount (default 1). Add date to use a past day's rates, or leave it out for the latest. The response gives the converted amount, the rate used and the date that rate was published.

The ECB does not publish on weekends or TARGET holidays. If you ask for one of those days, the API uses the last published day before it and tells you the date you asked for. The response also flags any pegged currency, whose rate comes from a fixed parity, and includes a source note.

Call the currencies endpoint to see every tracked currency and whether it is active, retired or pegged before you convert.

Teams use the Currency Converter API to show prices in a buyer's currency at checkout and to convert amounts on invoices. Expense tools use it to total costs in one currency at the rate of each date.

For full rate tables, past days and daily series, use the ECB Exchange Rates API. To create invoices in the converted currency, use the Generate Invoice Document from JSON API.

▣ ENDPOINT 01 / 02
GET
List currencies
https://api.eu.apyhub.com/callable-labs/ecb-currency-converter/v1/currencies

QUICKSTART

GUIDE

Quickstart

Fetch the latest list of currencies supported by the API.

curl -X GET "https://api.eu.apyhub.com/callable-labs/ecb-currency-converter/v1/currencies" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with count as an integer, latest as a date string, and currencies as an array of currency objects.

Each currency object includes code, name, kind, first_date, last_date, and current, with optional parity when applicable.

{
  "count": 66,
  "latest": "2026-10-06",
  "currencies": [
    {
      "code": "AED",
      "name": "UAE dirham",
      "kind": "peg",
      "first_date": "1999-01-04",
      "last_date": "2026-10-06",
      "current": true,
      "parity": "3.6725 per USD (fixed)"
    }
  ]
}
TRY ITLIVE · 3 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Returns the list of currencies available from the currency conversion service, along with publication metadata and per-currency details.

Response

Returns a JSON object with count as an integer, latest as a date string, and currencies as an array of currency objects. Each currency object includes the currency code, name, kind, parity, current flag, first available date, and last available date.

ParameterTypeDescription
countIntegerTotal number of currencies in the list.
latestStringLatest publication date in date format. Latest publication.
currenciesObject ArrayArray of currency records. Each item includes: code, name, kind, parity, current, first_date, last_date.
currencies[].codeStringCurrency code.
currencies[].kindStringCurrency kind. Allowed values: ecb (ECB reference rate), peg (fixed parity), euro.
currencies[].nameStringCurrency name.
currencies[].parityStringOfficial parity for pegged currencies.
currencies[].currentBooleantrue when the currency has a rate on the latest publication, otherwise false.
currencies[].last_dateStringLast day with a rate in date format. A retired currency stops here.
currencies[].first_dateStringFirst day with a rate in date format.
▣ ENDPOINT 02 / 02
GET
Convert currency
https://api.eu.apyhub.com/callable-labs/ecb-currency-converter/v1/convert

QUICKSTART

GUIDE

Quickstart

Convert 100 USD to EUR using the current exchange rate.

curl -X GET "https://api.eu.apyhub.com/callable-labs/ecb-currency-converter/v1/convert?from=USD&to=EUR&amount=100" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with source, notice, pegged, from, to, amount, rate, result, and date fields, and may also include requested_date. source and notice are strings, pegged is an array of currency codes, rate and result are numbers, and the remaining fields describe the conversion details.

{
  "source": "European Central Bank euro foreign exchange reference rates; fixed-parity currencies derived from their official pegs",
  "notice": "Reference rates for information, published around 16:00 CET on TARGET business days; not for trading.",
  "pegged": [],
  "from": "USD",
  "to": "EUR",
  "amount": 100,
  "rate": 0.88738131,
  "result": 88.738131,
  "date": "2026-10-06",
  "requested_date": null
}
TRY ITLIVE · 3 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
ISO 4217 code
ISO 4217 code
Use that day's rates; default latest
Amount in `from`

About this endpoint

What it does

Converts an amount from one currency to another using the query parameters from, to, amount, and optionally date. The response returns the conversion metadata and calculated result in a JSON object.

Query Parameter(s)

AttributeTypeMandatoryDescription
toStringYesISO 4217 code; 3 characters long.
dateStringNoUse that day's rates; default latest. Format: date.
fromStringYesISO 4217 code; 3 characters long.
amountNumberNoAmount in from; default: 1. Must be greater than 0 and no more than 1000000000000000.

Response

Returns a JSON object with the converted amount, the exchange rate applied, the rate date, source details, and any pegged currencies.

ParameterTypeDescription
sourceStringSource of the conversion data.
noticeStringNotice about the reference rates.
peggedString ArrayCurrencies in this answer derived from a fixed official parity rather than an ECB rate.
fromStringSource currency code.
toStringTarget currency code.
amountNumberAmount converted.
rateNumberConversion rate used.
resultNumberamount × rate, rounded to 6 decimal places.
dateStringRate date in date format.
requested_dateStringRequested date, or null when no date was supplied.
▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.