CORRA 3-Month Interest Rate API

CORRA 3-Month Interest Rate API

You need the Canadian 3‑month interbank benchmark in your software and a clean way to query, cache, and analyze it. By the end of this guide you will fetch CORRA_3M from the Interest Rates API, read effective dates and currencies, compute spreads and loan costs, and stitch it into dashboards, risk models, or lending workflows using all seven REST endpoints.

What CORRA_3M represents and how it’s expressed

CORRA_3M is the Canadian 3‑Month Interbank Rate, available via the Interest Rates API as an interbank benchmark in CAD. In the available symbols catalogue it is designated as a monthly series. The API expresses rates as decimal percentages (for example, 5.33 represents 5.33% per annum), not basis points. Effective dates are provided alongside rates so you can align calculations to the correct period.

Illustration: CORRA 3-Month Interest Rate API

Typical uses include floating‑rate loan repricing, discount curves, benchmark comparisons, and macro dashboards. Because some client systems are daily time‑stepped, the API also supports daily-aligned time series derived from monthly values, along with OHLC aggregations computed from those daily points.

All requests use GET and authenticate with an api_key query parameter. Base URL and symbol handling are detailed below. For general product info, see interestratesapi.com. To evaluate models and coverage, visit the MCP.

Base URL, authentication, and symbols

Every request goes to this base URL and uses a GET method:

  • Base URL: https://interestratesapi.com/api/v1/
  • Authentication: append ?api_key=YOUR_KEY (never use headers for auth)
  • HTTP method: GET for all endpoints
  • Symbols: use exact identifiers from the catalogue. For this article: CORRA_3M

You can explore available rates with the catalogue endpoint. CORRA_3M is in the “interbank” category. See interestratesapi.com for more context. When ready, Register to obtain an API key.

Endpoint 1 — Symbols: discover CORRA_3M

Use the symbols catalogue to filter by category, base currency, or provider. This is useful to confirm that CORRA_3M is available and to read its metadata such as frequency.

cURL

curl -s "https://interestratesapi.com/api/v1/latest?api_key=YOUR_API_KEY&symbols=SOFR"

JSON response example

{
"success": true,
"date": "2026-09-30",
"base": "USD",
"rates": {
"SOFR": 3.9
},
"dates": {
"SOFR": "2026-09-30"
},
"currencies": {
"SOFR": "USD"
},
"base_filter_note": null
}

The symbols payload includes symbol, name, category, currency_code, frequency, and description. For CORRA_3M, use category=interbank and optionally base=CAD to locate its metadata.

Python

import requests

resp = requests.get(
'https://interestratesapi.com/api/v1/symbols',
params=dict(category='interbank', base='CAD', api_key='YOUR_KEY')
)
symbols = resp.json()
print(symbols)

JavaScript

const response = await fetch(
'https://interestratesapi.com/api/v1/symbols?category=interbank&base=CAD&api_key=YOUR_KEY'
);
const symbols = await response.json();
console.log(symbols);

PHP

<?php
$url = 'https://interestratesapi.com/api/v1/symbols?category=interbank&base=CAD&api_key=YOUR_KEY';
$json = file_get_contents($url);
$data = json_decode($json, true);
print_r($data);
?>

Endpoint 2 — Latest: get the current CORRA_3M value

The latest endpoint returns the most recent available value for each requested symbol, along with effective dates and currencies. Rates are in percent per annum. For monthly series like CORRA_3M, this returns the month’s current value with its effective date.

Required official sample (verbatim)

The following official sample demonstrates the structure of a latest response. While it uses SOFR, the same fields and semantics apply to CORRA_3M.

cURL (CORRA_3M)

JSON response example

Key fields:

  • rates: map of symbol → percentage rate value.
  • dates: map of symbol → effective date for that rate.
  • currencies: map of symbol → currency code for the benchmark.

Python

import requests

response = requests.get(
'https://interestratesapi.com/api/v1/latest',
params=dict(symbols='CORRA_3M', api_key='YOUR_KEY')
)
data = response.json()
rate = data['rates']['CORRA_3M']
as_of = data['dates']['CORRA_3M']
ccy = data['currencies']['CORRA_3M']
print(rate, as_of, ccy)

JavaScript

const response = await fetch(
'https://interestratesapi.com/api/v1/latest?symbols=CORRA_3M&api_key=YOUR_KEY'
);
const data = await response.json();
const rate = data.rates['CORRA_3M'];
const asOf = data.dates['CORRA_3M'];
const ccy = data.currencies['CORRA_3M'];
console.log(rate, asOf, ccy);

PHP

<?php
$url = 'https://interestratesapi.com/api/v1/latest?symbols=CORRA_3M&api_key=YOUR_KEY';
$json = file_get_contents($url);
$data = json_decode($json, true);
$rate = $data['rates']['CORRA_3M'];
$asOf = $data['dates']['CORRA_3M'];
$ccy = $data['currencies']['CORRA_3M'];
echo "$rate $asOf $ccy\n";
?>

Endpoint 3 — Historical: CORRA_3M on a given date

Request a specific date to anchor period calculations or to revisit point‑in‑time decisions. For monthly symbols, “the last day with data within that month” is returned when you query any day in the month.

cURL

JSON response example

Python

import requests

resp = requests.get(
'https://interestratesapi.com/api/v1/historical',
params=dict(date='2025-06-15', symbols='CORRA_3M', api_key='YOUR_KEY')
)
hist = resp.json()
print(hist['rates']['CORRA_3M'])

JavaScript

const r = await fetch(
'https://interestratesapi.com/api/v1/historical?date=2025-06-15&symbols=CORRA_3M&api_key=YOUR_KEY'
);
const hist = await r.json();
console.log(hist.rates['CORRA_3M']);

PHP

<?php
$url = 'https://interestratesapi.com/api/v1/historical?date=2025-06-15&symbols=CORRA_3M&api_key=YOUR_KEY';
echo file_get_contents($url);
?>

Endpoint 4 — Time series: CORRA_3M across a range

Fetch a continuous series to chart or compute rolling statistics. Even though CORRA_3M is monthly in the symbols list, the API can provide a business‑day‑aligned series, with constant values across days where appropriate for the period.

cURL

JSON response example

Key fields to use:

  • rates[CORRA_3M]: date → value map.
  • frequencies: the effective sampling of the returned series.
  • start_date/end_date: normalized bounds of the data returned.

Python

import requests

ts = requests.get(
'https://interestratesapi.com/api/v1/timeseries',
params=dict(start='2025-10-02', end='2026-10-02', symbols='CORRA_3M', api_key='YOUR_KEY')
).json()

series = ts['rates']['CORRA_3M']
for d, v in series.items():
pass # compute moving averages, spreads, etc.

JavaScript

const res = await fetch(
'https://interestratesapi.com/api/v1/timeseries?start=2025-10-02&end=2026-10-02&symbols=CORRA_3M&api_key=YOUR_KEY'
);
const ts = await res.json();
const series = ts.rates['CORRA_3M'];
// iterate dates -> values

PHP

<?php
$url = 'https://interestratesapi.com/api/v1/timeseries?start=2025-10-02&end=2026-10-02&symbols=CORRA_3M&api_key=YOUR_KEY';
$data = json_decode(file_get_contents($url), true);
$series = $data['rates']['CORRA_3M'];
foreach ($series as $date => $value) {
// use $date and $value
}
?>

Endpoint 5 — Fluctuation: CORRA_3M changes over time

Summarize change statistics between two dates, including start and end values, absolute change, percentage change, and the high/low over the period.

cURL

JSON response example

Use change and change_pct for rollup KPIs or to drive alerting. If start_value is zero, change_pct will be null.

Python

import requests

fl = requests.get(
'https://interestratesapi.com/api/v1/fluctuation',
params=dict(start='2025-10-02', end='2026-10-02', symbols='CORRA_3M', api_key='YOUR_KEY')
).json()

stats = fl['rates']['CORRA_3M']
print(stats['change'], stats['change_pct'])

JavaScript

const flResp = await fetch(
'https://interestratesapi.com/api/v1/fluctuation?start=2025-10-02&end=2026-10-02&symbols=CORRA_3M&api_key=YOUR_KEY'
);
const fl = await flResp.json();
console.log(fl.rates['CORRA_3M']);

PHP

<?php
$url = 'https://interestratesapi.com/api/v1/fluctuation?start=2025-10-02&end=2026-10-02&symbols=CORRA_3M&api_key=YOUR_KEY';
$data = json_decode(file_get_contents($url), true);
print_r($data['rates']['CORRA_3M']);
?>

Endpoint 6 — OHLC: monthly or weekly bars for CORRA_3M

OHLC is computed on‑the‑fly from daily data. This is useful for candlestick charts or to compact a long daily series to monthly points. For monthly series, OHLC captures open/high/low/close across the daily-aligned observations within each period.

cURL

JSON response example

Use open, high, low, and close for charts. data_points is the count of underlying daily observations within the period.

Python

import requests

ohlc = requests.get(
'https://interestratesapi.com/api/v1/ohlc',
params=dict(symbols='CORRA_3M', period='monthly', start='2025-10-02', end='2026-10-02', api_key='YOUR_KEY')
).json()

bars = ohlc['rates']['CORRA_3M']
print(bars)

JavaScript

const o = await fetch(
'https://interestratesapi.com/api/v1/ohlc?symbols=CORRA_3M&period=monthly&start=2025-10-02&end=2026-10-02&api_key=YOUR_KEY'
);
const bars = await o.json();
console.log(bars.rates['CORRA_3M']);

PHP

<?php
$url = 'https://interestratesapi.com/api/v1/ohlc?symbols=CORRA_3M&period=monthly&start=2025-10-02&end=2026-10-02&api_key=YOUR_KEY';
$data = json_decode(file_get_contents($url), true);
print_r($data['rates']['CORRA_3M']);
?>

Endpoint 7 — Convert: compare loan interest costs using CORRA_3M

This endpoint compares a simple loan’s total interest cost at the latest rate of a “from” symbol versus a “to” symbol. Use it to contextualize CORRA_3M against another benchmark for product design or internal pricing.

cURL

JSON response example

Fields include total_interest, total_payment, and a difference object with rate_spread (percentage points) and interest_saved. Use these to populate comparison UIs or product recommendations.

Python

import requests

cmp = requests.get(
'https://interestratesapi.com/api/v1/convert',
params=dict(from='CORRA_3M', to='ECB_MRO', amount=250000, term_months=24, api_key='YOUR_KEY')
).json()

spread = cmp['difference']['rate_spread']
saved = cmp['difference']['interest_saved']
print(spread, saved)

JavaScript

const url = 'https://interestratesapi.com/api/v1/convert?from=CORRA_3M&to=ECB_MRO&amount=250000&term_months=24&api_key=YOUR_KEY';
const cmp = await fetch(url).then(r => r.json());
console.log(cmp.difference.rate_spread, cmp.difference.interest_saved);

PHP

<?php
$url = 'https://interestratesapi.com/api/v1/convert?from=CORRA_3M&to=ECB_MRO&amount=250000&term_months=24&api_key=YOUR_KEY';
echo file_get_contents($url);
?>

How to read values, currencies, and effective dates

  • Units: numbers like 5.33 represent 5.33% per annum.
  • Effective dates: the dates map (in /latest) and the time series keys (/timeseries) tell you the date that value applies to. For monthly symbols, multiple business days in a month may show the same value.
  • Currencies: the currencies map clarifies the benchmark’s currency. Use it for cross‑currency dashboards and validation.
  • Frequencies: the frequencies map in /timeseries denotes the sampling of the returned series (e.g., daily). Monthly symbols may be represented with daily‑aligned observations.

Publication frequency, business days, and caching guidance

  • Frequency: CORRA_3M appears as a “monthly” symbol in the catalogue. When requesting daily‑aligned series or OHLC, the API repeats the period value across business days as applicable, which supports consistent time-stepping for analytics.
  • Business days: Time series keys are business-day dates. For monthly series, the historical endpoint uses “the last day with data within that month.”
  • Caching: Cache /latest responses per symbol for the calendar day or until your workflow requires a refresh. For /timeseries and /ohlc, cache by (symbol, start, end, period) tuple. Invalidate on month turnover for monthly benchmarks.
  • Rate limiting: If you receive HTTP 429, use the Retry-After header and the X-RateLimit-Limit/Remaining/Reset headers to back off. Common error codes are documented; always check success and handle gracefully.

Compute spreads and loan payments from CORRA_3M

Spread calculation is straightforward using the numbers returned by the API:

  • Spread (percentage points) = rate_A - rate_B using values from the rates map in /latest or aligned dates from /timeseries.
  • Spread in basis points = (rate_A - rate_B) * 100.

To compute a simple monthly interest cost at CORRA_3M for an amount P over m months (simple interest model like /convert):

  • Annual rate = r (e.g., 5.33 means 0.0533 as a decimal).
  • Total interest ≈ P * r * (m / 12).
  • Total payment ≈ P + P * r * (m / 12).

If you prefer an amortizing loan with equal monthly payments, convert the annual percentage to a monthly rate i = r / 12 (decimal) and use the standard annuity formula for payment M on principal P over n months: M = P * i / (1 - (1 + i)^(-n)). Use /latest to obtain r and drive your calculator, or call /convert to get a simple-interest comparison instantly across benchmarks.

Real‑world use cases for CORRA_3M data

  • Floating‑rate loan repricing: fetch /latest CORRA_3M for rate‑setting days and store the dates map for audit.
  • Risk and stress testing: use /timeseries and /fluctuation to quantify shocks and create scenario deltas.
  • Treasury dashboards: render /ohlc monthly bars alongside other interbank curves for management reporting.
  • Pricing comparison: with /convert, show how CORRA_3M‑linked products differ from ECB_MRO‑based products for cross‑border portfolios.
  • Macro research: pull /historical snapshots to reproduce vintage rate settings and trace policy interactions.

Explore more capabilities on interestratesapi.com, and check documentation references at the MCP.

Error handling and operational notes

  • 401: Missing or invalid api_key; verify your query parameter.
  • 403: Account not active; surface a user‑facing message and retry after account activation.
  • 404: No symbol match or no data in the requested range; check any details field for available ranges.
  • 422: Validation error (e.g., date format); ensure dates use Y‑m‑d.
  • 429: Quota exhausted; use Retry‑After and X‑RateLimit headers to schedule retries.

Always inspect the success flag in JSON. Log the request URL and response body for traceability, especially around month‑end when monthly series roll.

Putting it all together: minimal integration checklist

  • Validate symbol availability with /symbols (filter by interbank, CAD).
  • Fetch /latest for CORRA_3M and store rates, dates, and currencies.
  • Backfill /timeseries for charts and smoothing; cache by date range.
  • Summarize variance with /fluctuation; alert on change or high/low.
  • Provide OHLC charts with /ohlc; display data_points for transparency.
  • Offer loan comparisons via /convert to contextualize CORRA_3M against peers.
  • Handle errors and rate limits; apply sensible caching per endpoint.

FAQ

Q1: What unit is CORRA_3M returned in?
A: Percent per annum as a decimal number (e.g., 5.33 means 5.33%).

Q2: How do effective dates work for monthly series?
A: For /historical, querying any date within a month returns the last day with data for that month. In /timeseries, monthly values can appear on multiple business days to align with daily time‑stepped analytics.

Q3: Can I request multiple symbols along with CORRA_3M?
A: Yes, pass a comma‑separated list to the symbols parameter. The response includes maps for rates, dates, and currencies keyed by symbol.

Q4: How do I compute a spread versus another benchmark?
A: Get both values from /latest (or align dates via /timeseries), then subtract: spread = CORRA_3M - OTHER (in percentage points). For a loan cost comparison, call /convert.

Q5: What should I cache and for how long?
A: Cache /latest for the calendar day or your trading window; refresh on month turnover for monthly series. Cache /timeseries and /ohlc by their parameter tuple (symbol, start, end, period). Respect 429 backoff headers.

Build your CORRA_3M integration now: Register for an API key and start calling endpoints within minutes. Also see the MCP for coverage and model details.

Register for Interest Rates API

Interest Rates API MCP

Get started with Interest Rates API

Ready to get started?

Get your API key and start validating bank data in minutes.

Get API Key

Related posts