ECB currency exchange rates and conversion API
ECB euro foreign exchange reference rates for about 30 currencies, latest or any date since 1999-01-04: base, rate date, rates for the requested currencies, optional converted amounts, and the unmodified ECB euro rates. Rates for non-EUR bases are cross rates calculated by Kit Rx from the ECB euro rates. Daily rates published for information, not transaction quotes. Source: ECB statistics, via the Frankfurter API; the ECB publishes these rates free of charge on its website.
$0.002 per call USDC over x402 v2 on Base, Polygon, Arbitrum, Avalanche or Sei. No signup, no API key. Requests that fail or match nothing are not charged.
Endpoint
GET https://api.kit-rx.com/v1/fx/rates
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
base | string | no | ISO 4217 code of the base currency; must be one the ECB quotes (about 30 current, e.g. USD, EUR, GBP, JPY, CHF, CNY, INR). Default USD. e.g. USD |
symbols | string | no | Comma-separated ISO 4217 codes to return (up to 50). Omit for every currency the ECB quoted on that date. e.g. EUR,GBP,JPY |
amount | string | no | Amount in the base currency to convert into each symbol: a positive number up to 1e12 with an optional decimal point. e.g. 100 |
date | string | no | Historical rate date, YYYY-MM-DD, 1999-01-04 or later. Weekends and TARGET holidays return the latest earlier ECB rates. Omit for the latest rates. e.g. 2024-01-15 |
Example request
https://api.kit-rx.com/v1/fx/rates?base=USD&symbols=EUR%2CGBP%2CJPY&amount=100
Without payment the server answers 402 Payment Required with the price (2000 atomic USDC) in the PAYMENT-REQUIRED header. Any x402 v2 client pays and retries automatically. A request with no parameters runs this example.
curl -i "https://api.kit-rx.com/v1/fx/rates?base=USD&symbols=EUR%2CGBP%2CJPY&amount=100"
Pay from an agent
AgentCash: fetch the URL. OpenDexter MCP: x402_fetch. Kit Rx MCP server: https://api.kit-rx.com/mcp. Code:
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(process.env.BUYER_KEY) });
const pay = wrapFetchWithPayment(fetch, client);
const res = await pay("https://api.kit-rx.com/v1/fx/rates?base=USD&symbols=EUR%2CGBP%2CJPY&amount=100");
console.log(await res.json());
Example response
{
"query": {
"base": "USD",
"symbols": [
"EUR",
"GBP",
"JPY"
],
"amount": 100
},
"result": {
"base": "USD",
"date": "2026-11-13",
"amount": 100,
"rates": {
"EUR": 0.904814,
"GBP": 0.756053,
"JPY": 159.998
},
"converted": {
"EUR": 90.48,
"GBP": 75.61,
"JPY": 15999.82
},
"rate_type": "cross rate calculated by Kit Rx from ECB euro reference rates",
"ecb_reference_rates": {
"base": "EUR",
"date": "2026-11-13",
"rates": {
"GBP": 0.83559,
"JPY": 176.83,
"USD": 1.1052
}
},
"provider": {
"name": "Frankfurter",
"url": "https://frankfurter.dev/",
"dataset": "ECB"
},
"source": {
"name": "European Central Bank euro foreign exchange reference rates",
"statement": "Source: ECB statistics.",
"url": "https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html",
"free_of_charge": "The ECB publishes these reference rates free of charge at the url above.",
"terms_url": "https://www.ecb.europa.eu/stats/ecb_statistics/governance_and_quality_framework/html/usage_policy.en.html"
}
},
"sources": [
{
"name": "European Central Bank euro foreign exchange reference rates",
"url": "https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html"
},
{
"name": "Frankfurter API (ECB provider endpoint)",
"url": "https://frankfurter.dev/"
}
],
"notes": [
"ECB euro foreign exchange reference rates are published for information purposes only; the ECB strongly discourages using them for transaction purposes. They come from a daily concertation procedure between central banks (normally around 14:10 CET) and are published around 16:00 CET on working days except TARGET closing days; they are not live market quotes.",
"Rates are units of each currency per 1 USD.",
"Cross rates against USD and converted amounts are calculated by Kit Rx from the ECB euro rates (rate = EUR rate of the currency / EUR rate of USD, 6 significant digits; amounts to 2 decimals, or 6 significant digits below 1); ecb_reference_rates holds the ECB figures unmodified."
],
"generated_at": "2026-11-15T00:24:43.062Z"
}
Kit Rx: Pay-per-call data and safety tools for AI agents, paid in USDC over x402. No signup, no API key. Machine-readable: OpenAPI, llms.txt, /.well-known/x402, agent skills.