API documentation

A field guide to current rates, conversions, keys, and request limits.

Authentication

Metered endpoints require an API key in the Authorization: Bearer <key> header. Get or create a key in API keys. The key is returned only once when created; keep it private and send requests over HTTPS in production.

Authorization header

HTTPS
Authorization: Bearer YOUR_API_KEY

Quotas and limits

The monthly quota applies per user across all keys, per UTC calendar month. Each plan sets its own quota and per-second limit; see Plans and limits. Accepted responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset. Quota and rate rejections return Retry-After.

Plans and limits

Each plan sets three limits. Compare them, with prices, on the pricing section.

Monthly quota
Every accepted request counts once toward the quota of your plan, across all of your keys. Rejected requests do not count. When the quota is used up, the API answers 429 API_QUOTA_EXCEEDED with Retry-After set to the seconds until the quota resets at 00:00 UTC on the 1st of the next month. You receive an email at 80% and at 100% of the quota.
Per-second limit
Each key may make up to the number of requests per second its plan allows. Going over returns 429 API_RATE_LIMITED with Retry-After: 1. The limit applies to each key separately. Requests rejected this way do not count toward the monthly quota.
Update interval
How often your plan can receive a new edition. Your plan sees a new edition at most that often. Responses include updatedAt (when the current edition was published) and nextUpdateAt (when the next one is due).

Endpoints

Base path /api/v1; API base URL https://api.currencyexchangerate-api.com/api/v1.

GET /latest

Returns current USD-based rates. Metered; requires a key.

ParameterRequiredDescription
symbolsNoComma-separated currency codes, at most 200, case-insensitive. Omit to return all.

Latest rates

cURL · shell
curl --fail-with-body -sS "https://api.currencyexchangerate-api.com/api/v1/latest?symbols=EUR,GBP" \  -H "Authorization: Bearer $EXCHANGE_API_KEY"

Response

JSON
{  "base": "USD",  "updatedAt": "2026-10-08T00:00:01.000Z",  "nextUpdateAt": "2026-10-09T00:00:01.000Z",  "rates": { "EUR": 0.8931, "GBP": 0.7567 }}

GET /convert

Converts any supported pair through USD. Metered; requires a key.

ParameterRequiredDescription
fromYesSource currency code, case-insensitive.
toYesTarget currency code, case-insensitive.
amountNoGreater than 0 and at most 1,000,000,000,000; defaults to 1.

Convert

cURL · shell
curl --fail-with-body -sS "https://api.currencyexchangerate-api.com/api/v1/convert?from=EUR&to=GBP&amount=100" \  -H "Authorization: Bearer $EXCHANGE_API_KEY"

Response

JSON
{  "from": "EUR",  "to": "GBP",  "amount": 100,  "rate": 0.8472735416,  "result": 84.727354,  "updatedAt": "2026-10-08T00:00:01.000Z"}

GET /currencies

Returns every code in the newest snapshot, sorted by code, with an English display name. Public and not metered. Cache-Control: public, max-age=3600.

Request

HTTPS
curl https://api.currencyexchangerate-api.com/api/v1/currencies

JavaScript fetch

JavaScript
const response = await fetch('https://api.currencyexchangerate-api.com/api/v1/currencies');const data = await response.json();

Response

JSON
[  {    "code": "AED",    "name": "United Arab Emirates Dirham"  }]

GET /preview

Returns a fixed selection of current rates. Public and not metered; no key required. Missing currencies are skipped. Cache-Control: public, max-age=300.

Request

HTTPS
curl https://api.currencyexchangerate-api.com/api/v1/preview

JavaScript fetch

JavaScript
const response = await fetch('https://api.currencyexchangerate-api.com/api/v1/preview');const data = await response.json();

Response

JSON
{  "base": "USD",  "updatedAt": "2026-10-08T00:00:01.000Z",  "nextUpdateAt": "2026-10-09T00:00:01.000Z",  "rates": { "EUR": 0.8931, "GBP": 0.7567 }}

Errors

Errors use application/problem+json and include a machine-readable code.

CodeStatusMeaning
RATES_INVALID_INPUT422A query parameter is missing or invalid.
RATES_UNSUPPORTED_CURRENCY422Code is validly formed but absent from the snapshot.
RATES_UNAVAILABLE503No snapshot is available.
API_KEY_INVALID401Missing or invalid API key.
API_QUOTA_EXCEEDED429Monthly quota is used.
API_RATE_LIMITED429Request limit exceeded.

Data

Rates are USD-based and cover about 160 currencies. Responses include updatedAt and nextUpdateAt. Only the newest snapshot is served; historical data is unavailable.

Supported currencies

Search the currencies available in the latest snapshot.

Loading currencies…