Developer Reference
Complete reference for the Interest Rates API — central bank rates, interbank benchmarks, and treasury yields.
Sections
Rates API aggregates interest-rate data from official sources — the Federal Reserve (FRED), European Central Bank, and Bank for International Settlements (BIS) — and normalizes it under a single REST interface. Instead of parsing institution-specific formats and schedules, you query one consistent schema with predictable symbols and response structures.
The API covers four rate categories: central bank policy rates (50+ countries, including Fed Funds, ECB MRO, BoE Bank Rate, SELIC, TIIE, PBOC LPR, and 40+ more), interbank benchmarks (SOFR, SONIA, €STR, TONAR, EURIBOR 1W/1M/3M/6M/12M, STIBOR, NIBOR, CIBOR, WIBOR, PRIBOR, MIBOR), treasury yields (US 2Y, 5Y, 10Y, 30Y), and reference rates (Prime Rate, 30Y Mortgage). All endpoints return JSON.
Data update frequency follows each institution's own publication schedule: SOFR and US Treasuries update daily, ECB policy rates and EURIBOR averages update monthly. The dates field in every response tells you the exact observation date per symbol.
Base URL
https://interestratesapi.com/api/v1
All requests must include your API key using the api_key query parameter.
Replace YOUR_API_KEY with your actual key from your dashboard.
Try in your browser
https://interestratesapi.com/api/v1/latest?symbols=FED_FUNDS,SOFR&api_key=YOUR_API_KEY
Example using cURL
curl -G https://interestratesapi.com/api/v1/latest \
--data-urlencode "symbols=FED_FUNDS,SOFR" \
--data-urlencode "api_key=YOUR_API_KEY"
Keep your API key secret. Never expose it in client-side JavaScript or public repositories. If a key is compromised, rotate it immediately from the dashboard.
Every rate is identified by a normalized symbol — a stable string like FED_FUNDS or EURIBOR_3M. Symbols are grouped into four categories:
Central Bank category=central_bank
Policy rates set by central banks globally. Examples: FED_FUNDS, ECB_MRO, ECB_DEPOSIT, BOE_BANK_RATE, BOJ_POLICY_RATE, SELIC, BANXICO_RATE, PBOC_LPR_1Y, RBI_REPO_RATE, SNB_POLICY_RATE, RBA_CASH_RATE, and 40+ more.
Interbank category=interbank
Overnight and term benchmarks. Examples: SOFR, SONIA, ESTR, TONAR, EURIBOR_1W, EURIBOR_1M, EURIBOR_3M, EURIBOR_6M, EURIBOR_12M, STIBOR, NIBOR, CIBOR, WIBOR, PRIBOR, MIBOR.
Treasury category=treasury
Sovereign yield curve tenors. Examples: US_TREASURY_2Y, US_TREASURY_5Y, US_TREASURY_10Y, US_TREASURY_30Y.
Reference category=reference
Derived or composite rates. Examples: PRIME_RATE (3 pp above Fed Funds target), MORTGAGE_30Y (Freddie Mac Primary Mortgage Market Survey).
Use GET /symbols to list all active symbols with metadata. Pass category or base to filter. The base parameter filters by currency code (e.g. base=EUR returns all EUR-denominated rates), not FX conversion.
Validation note: if base does not match a supported active currency code, the API returns 422.
/symbols
Discover all available rate symbols with their metadata. Use this endpoint to build dynamic symbol pickers or validate that a symbol exists before querying other endpoints.
| Param | Type | Required | Description |
|---|---|---|---|
| base | string (3) | optional | Filter rates by currency code. Must be a supported active currency code; otherwise returns 422. |
| category | string | optional | One of: central_bank, interbank, treasury, reference. Invalid values return 422 including the allowed list. |
| provider | string | optional | One of: fred, ecb, bis. Invalid values return 422 including the allowed list. |
Try in your browser
https://interestratesapi.com/api/v1/symbols?category=interbank&api_key=YOUR_API_KEY
Example using cURL
curl -G https://interestratesapi.com/api/v1/symbols \
--data-urlencode "category=interbank" \
--data-urlencode "api_key=YOUR_API_KEY"
{
"success": true,
"count": 6,
"symbols": [
{
"symbol": "EURIBOR_1M",
"name": "EURIBOR 1-Month",
"category": "interbank",
"country_code": "EU",
"currency_code": "EUR",
"frequency": "monthly",
"description": "Euro Interbank Offered Rate, 1-month tenor. Monthly average published by the ECB."
},
{
"symbol": "SOFR",
"name": "Secured Overnight Financing Rate",
"category": "interbank",
"country_code": "US",
"currency_code": "USD",
"frequency": "daily",
"description": "Volume-weighted median of overnight Treasury repo transactions. Published daily by NY Fed."
}
// ... more symbols
]
}
/latest
Returns the most recent available value for each requested symbol.
| Param | Type | Required | Description |
|---|---|---|---|
| symbols | string | required | Comma-separated symbol names. E.g. FED_FUNDS,SOFR,ECB_MRO. |
| base | string (3) | optional | Filter by currency code. Must be a supported active currency code; otherwise returns 422. |
| category | string | optional | Filter by category. One of: central_bank, interbank, treasury, reference. |
Try in your browser
https://interestratesapi.com/api/v1/latest?symbols=FED_FUNDS,SOFR,ECB_MRO,SONIA&api_key=YOUR_API_KEY
Example using cURL
curl -G https://interestratesapi.com/api/v1/latest \
--data-urlencode "symbols=FED_FUNDS,SOFR,ECB_MRO,SONIA" \
--data-urlencode "api_key=YOUR_API_KEY"
{
"success": true,
"date": "2026-04-20",
"base": "MIXED",
"rates": {
"FED_FUNDS": 4.33,
"SOFR": 4.31,
"ECB_MRO": 2.65,
"SONIA": 4.70
},
"dates": {
"FED_FUNDS": "2026-04-20",
"SOFR": "2026-04-19",
"ECB_MRO": "2026-03-31",
"SONIA": "2026-04-20"
},
"currencies": {
"FED_FUNDS": "USD",
"SOFR": "USD",
"ECB_MRO": "EUR",
"SONIA": "GBP"
}
}
base, symbols with a different currency code are excluded. For example, with base=USD, EUR/GBP symbols like ECB_MRO or SONIA will not be returned.
date is the most recent date across all returned rates. Use the dates object to see the exact observation date per symbol — daily rates (SOFR, SONIA) and monthly rates (ECB, BIS) will naturally differ.
/historical
Returns values for all requested symbols on a specific date. Monthly-frequency symbols (ECB, BIS) are stored on the last day of the month — query any day in that month to retrieve the monthly value.
| Param | Type | Required | Description |
|---|---|---|---|
| date | date (YYYY-MM-DD) | required | The date to query. |
| symbols | string | required | Comma-separated symbol names. |
| base | string (3) | optional | Filter rates by currency code. Must be a supported active currency code; otherwise returns 422. |
Try in your browser
https://interestratesapi.com/api/v1/historical?date=2025-09-15&symbols=FED_FUNDS,EURIBOR_3M&api_key=YOUR_API_KEY
Example using cURL
curl -G https://interestratesapi.com/api/v1/historical \
--data-urlencode "date=2025-09-15" \
--data-urlencode "symbols=FED_FUNDS,EURIBOR_3M" \
--data-urlencode "api_key=YOUR_API_KEY"
{
"success": true,
"date": "2025-09-15",
"base": "MIXED",
"rates": {
"FED_FUNDS": 5.33,
"EURIBOR_3M": 3.52
},
"currencies": {
"FED_FUNDS": "USD",
"EURIBOR_3M": "EUR"
}
}
FED_FUNDS is monthly average; if you need daily Fed series use FED_FUNDS_DAILY. This is why one symbol can have fewer data points than another in the same range.
/timeseries
Returns all observations for the requested symbols between start and end, keyed by date. Ideal for charting and trend analysis.
| Param | Type | Required | Description |
|---|---|---|---|
| start | date (YYYY-MM-DD) | required | Start date (inclusive). |
| end | date (YYYY-MM-DD) | required | End date (inclusive). Must be ≥ start. |
| symbols | string | required | Comma-separated symbol names. |
| base | string (3) | optional | Filter rates by currency code. Must be a supported active currency code; otherwise returns 422. |
Try in your browser
https://interestratesapi.com/api/v1/timeseries?start=2025-01-01&end=2025-03-31&symbols=FED_FUNDS,SOFR&api_key=YOUR_API_KEY
Example using cURL
curl -G https://interestratesapi.com/api/v1/timeseries \
--data-urlencode "start=2025-01-01" \
--data-urlencode "end=2025-03-31" \
--data-urlencode "symbols=FED_FUNDS,SOFR" \
--data-urlencode "api_key=YOUR_API_KEY"
{
"success": true,
"base": "MIXED",
"start_date": "2025-01-01",
"end_date": "2025-03-31",
"rates": {
"FED_FUNDS": {
"2025-01-31": 4.33,
"2025-02-28": 4.33,
"2025-03-31": 4.33
},
"SOFR": {
"2025-01-02": 4.30,
"2025-01-03": 4.31,
"2025-01-06": 4.31
// ... daily observations
}
},
"frequencies": {
"FED_FUNDS": "monthly",
"SOFR": "daily"
},
"currencies": {
"FED_FUNDS": "USD",
"SOFR": "USD"
}
}
/fluctuation
Returns the start value, end value, absolute change, and percentage change for each symbol over the requested period. Calculations use the first and last available observations inside the requested range (not synthetic values for missing days).
| Param | Type | Required | Description |
|---|---|---|---|
| start | date (YYYY-MM-DD) | required | Start date of the period. |
| end | date (YYYY-MM-DD) | required | End date of the period. |
| symbols | string | required | Comma-separated symbol names. |
| base | string (3) | optional | Filter rates by currency code. Must be a supported active currency code; otherwise returns 422. |
Try in your browser
https://interestratesapi.com/api/v1/fluctuation?start=2025-01-01&end=2026-01-01&symbols=SOFR,SONIA&api_key=YOUR_API_KEY
Example using cURL
curl -G https://interestratesapi.com/api/v1/fluctuation \
--data-urlencode "start=2025-01-01" \
--data-urlencode "end=2026-01-01" \
--data-urlencode "symbols=SOFR,SONIA" \
--data-urlencode "api_key=YOUR_API_KEY"
{
"success": true,
"base": "USD",
"start_date": "2025-01-01",
"end_date": "2026-01-01",
"rates": {
"SOFR": {
"requested_start_date": "2025-01-01",
"requested_end_date": "2026-01-01",
"start_date": "2025-01-02",
"end_date": "2025-12-31",
"start_value": 4.30,
"end_value": 4.31,
"change": 0.01,
"change_pct": 0.2326
},
"SONIA": {
"requested_start_date": "2025-01-01",
"requested_end_date": "2026-01-01",
"start_date": "2025-01-02",
"end_date": "2025-12-31",
"start_value": 4.70,
"end_value": 4.45,
"change": -0.25,
"change_pct": -5.3191
}
}
}
start_date and end_date may differ from the requested dates. Use requested_start_date and requested_end_date to see the original input.
/ohlc
Returns open/high/low/close aggregates for each symbol over weekly, monthly, or quarterly periods. Designed for charting libraries and volatility analysis dashboards.
| Param | Type | Required | Description |
|---|---|---|---|
| symbols | string | required | Comma-separated symbol names. |
| period | string | optional | One of: weekly, monthly (default), quarterly. |
| start | date (YYYY-MM-DD) | optional | Start date. Defaults to 1 year ago. |
| end | date (YYYY-MM-DD) | optional | End date. Defaults to today. |
| base | string (3) | optional | Filter rates by currency code. Must be a supported active currency code; otherwise returns 422. |
Try in your browser
https://interestratesapi.com/api/v1/ohlc?symbols=SOFR&period=monthly&start=2025-01-01&end=2025-06-30&api_key=YOUR_API_KEY
Example using cURL
curl -G https://interestratesapi.com/api/v1/ohlc \
--data-urlencode "symbols=SOFR" \
--data-urlencode "period=monthly" \
--data-urlencode "start=2025-01-01" \
--data-urlencode "end=2025-06-30" \
--data-urlencode "api_key=YOUR_API_KEY"
{
"success": true,
"period": "monthly",
"start_date": "2025-01-01",
"end_date": "2025-06-30",
"rates": {
"SOFR": [
{
"period": "2025-01",
"open": 4.30,
"high": 4.34,
"low": 4.28,
"close": 4.31,
"data_points": 22
},
{
"period": "2025-02",
"open": 4.31,
"high": 4.35,
"low": 4.29,
"close": 4.33,
"data_points": 20
}
// ... more periods
]
}
}
/convert
Compares the total interest cost of a loan amount under two different rate symbols. Given a principal and term, returns the total interest and payment for each rate, plus the spread and interest savings between them.
Use cases: SOFR vs EURIBOR loan comparison, fixed vs floating rate analysis, cross-border lending cost benchmarking.
| Param | Type | Required | Description |
|---|---|---|---|
| from | string | required | The base rate symbol (e.g. SOFR). |
| to | string | required | The comparison rate symbol (e.g. EURIBOR_3M). |
| amount | numeric | required | Loan principal amount. |
| term_months | integer | optional | Loan term in months. Min 1, max 360. Defaults to 12. |
Try in your browser
https://interestratesapi.com/api/v1/convert?from=SOFR&to=EURIBOR_3M&amount=500000&term_months=24&api_key=YOUR_API_KEY
Example using cURL
curl -G https://interestratesapi.com/api/v1/convert \
--data-urlencode "from=SOFR" \
--data-urlencode "to=EURIBOR_3M" \
--data-urlencode "amount=500000" \
--data-urlencode "term_months=24" \
--data-urlencode "api_key=YOUR_API_KEY"
{
"success": true,
"amount": 500000,
"term_months": 24,
"from": {
"symbol": "SOFR",
"rate": 4.31,
"date": "2026-04-19",
"total_interest": 43100.00,
"total_payment": 543100.00
},
"to": {
"symbol": "EURIBOR_3M",
"rate": 2.41,
"date": "2026-03-31",
"total_interest": 24100.00,
"total_payment": 524100.00
},
"difference": {
"rate_spread": 1.9,
"interest_saved": 19000.00
}
}
All errors return a consistent JSON payload with success: false and a human-readable error message.
{
"success": false,
"error": "No symbols matched the requested base currency (USD). Requested symbol currencies: BANXICO_RATE=MXN."
}
| HTTP Code | Meaning | Common cause |
|---|---|---|
| 401 | Unauthorized | Missing or invalid api_key query parameter. |
| 404 | Not Found | No data found for the given symbols or date. |
| 422 | Validation Error | Missing required parameter, invalid date format, or unsupported value (e.g. unknown category). |
| 429 | Too Many Requests | Per-minute rate limit exceeded. Back off and retry after a few seconds. |
Each plan has a monthly request quota and a per-minute rate limit. Both are enforced independently. Quota resets on the 1st of each month. Monitor usage in real time from your dashboard.
| Plan | Requests / month | Requests / minute |
|---|---|---|
| Starter | 250 | 60 |
| Professional | 750 | 120 |
| Business | 4,000 | 240 |
• When the per-minute limit is exceeded the API returns HTTP 429. Implement exponential back-off in your client.
• When the monthly quota is exhausted the API returns HTTP 429 until the quota resets or you upgrade your plan.
• Use the symbols parameter to request only what you need — this is the most effective way to reduce quota consumption.
• Need more than 4,000 requests/month? Contact us for a custom plan.
Get your API key, make your first request in under 2 minutes, and start shipping interest-rate features today.