You need to track and react to changes in the Riksbank’s policy stance inside your applications. By the end of this guide, you will query, cache, and interpret the Riksbank Repo Rate (RIKSBANK_REPO) from the Interest Rates API, compute spreads and loan payments from returned values, and build robust time series and change analytics using all seven endpoints.
What the RIKSBANK_REPO Represents and How It’s Expressed
RIKSBANK_REPO is the Riksbank Repo Rate — Sweden’s main policy rate — and a key anchor for SEK cash markets, floating-rate loans, and macro models. In the Interest Rates API, this symbol:
- Belongs to the central_bank category.
- Has frequency: monthly (policy changes materialize on specific dates, and the API maps them to a daily time index for analysis convenience).
- Is expressed as a percentage per annum (e.g., 1.75 means 1.75% p.a.).
Effective dates: each rate value is paired with a date indicating when that value is in force. For monthly symbols, the API uses the last day with data within the given month when you query for a single date. In time series data, you may see a daily index where the same monthly value repeats until a change occurs.
Quick Start: Fetch the Latest RIKSBANK_REPO
The Interest Rates API is at https://interestratesapi.com and all requests are GET requests to the base URL https://interestratesapi.com/api/v1/ with api_key as a URL parameter.
Official cURL example (copy exactly):
curl -s "https://interestratesapi.com/api/v1/latest?api_key=YOUR_API_KEY&symbols=RIKSBANK_REPO"
Official JSON response (copy exactly):
{
"success": true,
"date": "2026-09-30",
"base": "SEK",
"rates": {
"RIKSBANK_REPO": 1.75
},
"dates": {
"RIKSBANK_REPO": "2026-09-30"
},
"currencies": {
"RIKSBANK_REPO": "SEK"
},
"base_filter_note": null
}
How to read this:
- rates map: symbol to latest rate (percentage p.a.).
- date: the API’s reference date for this latest snapshot.
- dates map: per-symbol effective date of the returned value.
- currencies map: per-symbol currency (SEK here).
- base: the base currency context when filtering by base; for latest it reflects the symbol’s currency.
JavaScript (fetch) — read the latest RIKSBANK_REPO
const response = await fetch(
'https://interestratesapi.com/api/v1/latest?symbols=RIKSBANK_REPO&api_key=YOUR_API_KEY'
);
const data = await response.json();
const rate = data.rates['RIKSBANK_REPO']; // percentage per annum
const effectiveDate = data.dates['RIKSBANK_REPO'];
Python (requests) — read the latest RIKSBANK_REPO
import requests
resp = requests.get(
'https://interestratesapi.com/api/v1/latest',
params={'symbols': 'RIKSBANK_REPO', 'api_key': 'YOUR_API_KEY'}
)
data = resp.json()
rate = data['rates']['RIKSBANK_REPO'] # percentage per annum
effective_date = data['dates']['RIKSBANK_REPO']
PHP — read the latest RIKSBANK_REPO
<?php
$url = 'https://interestratesapi.com/api/v1/latest?symbols=RIKSBANK_REPO&api_key=YOUR_API_KEY';
$json = file_get_contents($url);
$data = json_decode($json, true);
$rate = $data['rates']['RIKSBANK_REPO'];
$effectiveDate = $data['dates']['RIKSBANK_REPO'];
?>
Get your key to run these calls: Register for Interest Rates API or Register. For extension and tooling options, see Interest Rates API MCP or MCP.
Endpoint 1: Catalogue of Symbols (/symbols)
Use /symbols to discover central bank and interbank benchmarks. You can filter by category, base (ISO 3-letter currency), or provider. This is useful to confirm the exact identifier for RIKSBANK_REPO and related SEK series.
cURL
JSON
Python
import requests
r = requests.get(
'https://interestratesapi.com/api/v1/symbols',
params={'category': 'central_bank', 'base': 'SEK', 'api_key': 'YOUR_KEY'}
)
symbols = r.json()
JavaScript
const res = await fetch(
'https://interestratesapi.com/api/v1/symbols?category=central_bank&base=SEK&api_key=YOUR_KEY'
);
const symbols = await res.json();
PHP
<?php
$url = 'https://interestratesapi.com/api/v1/symbols?category=central_bank&base=SEK&api_key=YOUR_KEY';
$data = json_decode(file_get_contents($url), true);
?>
Tip: filter base=SEK and category=central_bank to focus on Sweden. For production code, cache the symbols index and refresh periodically.
Endpoint 2: Latest Value (/latest)
Pull the current RIKSBANK_REPO rate for pricing decisions and dashboards. Use the official example above (must be copied exactly) to validate connectivity and response parsing.
cURL (official)
JSON (official)
Python
import requests
response = requests.get(
'https://interestratesapi.com/api/v1/latest',
params=dict(symbols='RIKSBANK_REPO', api_key='YOUR_KEY')
)
latest = response.json()
JavaScript
const response = await fetch(
'https://interestratesapi.com/api/v1/latest?symbols=RIKSBANK_REPO&api_key=YOUR_KEY'
);
const latest = await response.json();
PHP
<?php
$url = 'https://interestratesapi.com/api/v1/latest?symbols=RIKSBANK_REPO&api_key=YOUR_KEY';
$latest = json_decode(file_get_contents($url), true);
?>
Field pointers:
- rates.RIKSBANK_REPO — policy rate in percent p.a.
- dates.RIKSBANK_REPO — effective date to display in UI or store alongside the value.
- currencies.RIKSBANK_REPO — SEK.
Endpoint 3: Historical Value on a Date (/historical)
Retrieve the rate as of a specific calendar date. For monthly series, the API uses the last day with data inside that month.
cURL
JSON
Python
import requests
r = requests.get(
'https://interestratesapi.com/api/v1/historical',
params={'date': '2025-06-15', 'symbols': 'RIKSBANK_REPO', 'api_key': 'YOUR_KEY'}
)
hist = r.json()
JavaScript
const res = await fetch(
'https://interestratesapi.com/api/v1/historical?date=2025-06-15&symbols=RIKSBANK_REPO&api_key=YOUR_KEY'
);
const hist = await res.json();
PHP
<?php
$url = 'https://interestratesapi.com/api/v1/historical?date=2025-06-15&symbols=RIKSBANK_REPO&api_key=YOUR_KEY';
$hist = json_decode(file_get_contents($url), true);
?>
Note on dates: when a given date falls in a month, the engine resolves the value based on the last available observation within that month for monthly frequencies.
Endpoint 4: Time Series (/timeseries)
Download a continuous series spanning a start and end date. Although RIKSBANK_REPO is monthly, the API may return a daily frequency index with repeated values until the next change. This makes charting and OHLC aggregation straightforward.
cURL
JSON
Python
import requests
r = requests.get(
'https://interestratesapi.com/api/v1/timeseries',
params={'start': '2025-10-29', 'end': '2026-10-29', 'symbols': 'RIKSBANK_REPO', 'api_key': 'YOUR_KEY'}
)
ts = r.json()
JavaScript
const res = await fetch(
'https://interestratesapi.com/api/v1/timeseries?start=2025-10-29&end=2026-10-29&symbols=RIKSBANK_REPO&api_key=YOUR_KEY'
);
const ts = await res.json();
PHP
<?php
$url = 'https://interestratesapi.com/api/v1/timeseries?start=2025-10-29&end=2026-10-29&symbols=RIKSBANK_REPO&api_key=YOUR_KEY';
$ts = json_decode(file_get_contents($url), true);
?>
Key fields:
- rates.RIKSBANK_REPO: date-to-value map for the chosen range.
- frequencies.RIKSBANK_REPO: the materialized index frequency (often “daily” to support OHLC).
- start_date, end_date: resolved boundaries for the request.
Endpoint 5: Fluctuation Statistics (/fluctuation)
Compute changes across a period — handy for showing rate deltas in dashboards or alerts.
cURL
JSON
Python
import requests
r = requests.get(
'https://interestratesapi.com/api/v1/fluctuation',
params={'start': '2025-10-29', 'end': '2026-10-29', 'symbols': 'RIKSBANK_REPO', 'api_key': 'YOUR_KEY'}
)
fluc = r.json()
JavaScript
const res = await fetch(
'https://interestratesapi.com/api/v1/fluctuation?start=2025-10-29&end=2026-10-29&symbols=RIKSBANK_REPO&api_key=YOUR_KEY'
);
const fluc = await res.json();
PHP
<?php
$url = 'https://interestratesapi.com/api/v1/fluctuation?start=2025-10-29&end=2026-10-29&symbols=RIKSBANK_REPO&api_key=YOUR_KEY';
$fluc = json_decode(file_get_contents($url), true);
?>
Field pointers per symbol:
- start_value, end_value — boundary values.
- change — arithmetic difference (end_value - start_value).
- change_pct — percent difference where start_value != 0.
- high, low — extrema over the range.
Endpoint 6: OHLC Aggregation (/ohlc)
Get candlestick-style aggregates for charting. OHLC is computed from the daily index on the fly. For monthly period, you receive one object per month.
cURL
JSON
Python
import requests
r = requests.get(
'https://interestratesapi.com/api/v1/ohlc',
params={'symbols': 'RIKSBANK_REPO', 'period': 'monthly', 'start': '2025-10-29', 'end': '2026-10-29', 'api_key': 'YOUR_KEY'}
)
ohlc = r.json()
JavaScript
const res = await fetch(
'https://interestratesapi.com/api/v1/ohlc?symbols=RIKSBANK_REPO&period=monthly&start=2025-10-29&end=2026-10-29&api_key=YOUR_KEY'
);
const ohlc = await res.json();
PHP
<?php
$url = 'https://interestratesapi.com/api/v1/ohlc?symbols=RIKSBANK_REPO&period=monthly&start=2025-10-29&end=2026-10-29&api_key=YOUR_KEY';
$ohlc = json_decode(file_get_contents($url), true);
?>
Field pointers:
- open/high/low/close — computed from the daily-indexed series in each period bucket.
- data_points — number of daily observations included in that bucket.
Endpoint 7: Rate Comparison and Loan Interest Cost (/convert)
Compare the total interest cost of a simple loan priced at the latest rate for two symbols. This also returns a spread (“rate_spread”), enabling quick side-by-side policy rate comparisons for treasury and product pricing.
cURL
JSON
Python
import requests
r = requests.get(
'https://interestratesapi.com/api/v1/convert',
params={'from': 'RIKSBANK_REPO', 'to': 'ECB_MRO', 'amount': 100000, 'term_months': 12, 'api_key': 'YOUR_KEY'}
)
comp = r.json()
JavaScript
const res = await fetch(
'https://interestratesapi.com/api/v1/convert?from=RIKSBANK_REPO&to=ECB_MRO&amount=100000&term_months=12&api_key=YOUR_KEY'
);
const comp = await res.json();
PHP
<?php
$url = 'https://interestratesapi.com/api/v1/convert?from=RIKSBANK_REPO&to=ECB_MRO&amount=100000&term_months=12&api_key=YOUR_KEY';
$comp = json_decode(file_get_contents($url), true);
?>
Returned elements:
- from, to — each includes symbol, latest rate, effective date, total_interest, total_payment for the simple loan.
- difference.rate_spread — arithmetic difference between the two latest rates.
- difference.interest_saved — difference in total interest at those latest rates for the given loan parameters.
How the RIKSBANK_REPO Is Published, Business Days, and Caching
Frequency: RIKSBANK_REPO is monthly in the symbols catalogue. The underlying policy rate changes on discrete decision days, and the API materializes those values across a daily index for convenience.
Business days and holidays: Central bank policy rates may not change daily. For monthly symbols, if a date you query does not align with an update, the latest applicable monthly value holds. Therefore, you can safely sample the series at business-day intervals without losing policy changes.
Caching: For production, consider:
- Caching /symbols for hours to days (the catalogue is relatively stable).
- Caching /latest for minutes to hours depending on the urgency of your application.
- ETL-friendly use of /timeseries for backfills; store raw JSON and normalize into your warehouse.
Rate limits: Monitor X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset headers. HTTP 429 includes Retry-After. Implement graceful backoff and cache hits to minimize duplicate calls.
Compute Spreads and Monthly Payments Safely
Spreads: If you have two latest values r1 and r2 (percent per annum), the spread in percentage points is simply r1 - r2. Use dates maps to ensure both values are contemporaneous if that matters to your model.
Monthly payment from RIKSBANK_REPO: Turning an annual percentage rate r into a monthly nominal rate is r_monthly = r / 12 / 100 when r is expressed in percent. For an amortizing loan with principal P and n months at monthly rate i, the fixed payment is:
Pmt = P × i / (1 - (1 + i)^(-n))
For interest-only, the monthly interest cost is P × i. Always extract the rate from rates['RIKSBANK_REPO'] and convert percent to decimal before using formulas. Do not assume weekends or month boundaries change the rate; instead, read effective dates from the dates map.
Real-World Use Cases with RIKSBANK_REPO
- Interest rate dashboards: Pin RIKSBANK_REPO next to other central bank rates and interbank tenors. Use /latest for a snapshot, /timeseries for charts, and /fluctuation for deltas.
- Loan repricing: Recompute SEK-linked variable-rate loans when RIKSBANK_REPO changes. Source the current rate via /latest and apply your margin mechanically.
- Treasury and risk: Build scenario and limit dashboards using /ohlc to visualize stability and /fluctuation to quantify recent volatility.
- Macro research: Backtest policy transmission by joining /timeseries with SEK interbank series (e.g., STIBOR_3M) and spreads computed in your analytics code.
Error Handling and Validation
Common error shapes:
- 401 — Missing or invalid api_key.
- 403 — Account without active plan.
- 404 — No symbols matched or no data for the requested date/range (may include details with available ranges).
- 422 — Validation error (e.g., invalid symbol or date format).
- 429 — Quota exhausted; observe Retry-After and rate limit headers.
Always check success=false with an error message in the JSON body and handle gracefully. Validate symbols against /symbols and enforce Y-m-d formatting for date inputs.
Development Notes That Save Time
- Authentication: Always a GET parameter — append ?api_key=YOUR_KEY (or &api_key=YOUR_KEY if other params exist). Do not send it in headers.
- Idempotency: All endpoints are GET; you can safely retry with exponential backoff.
- Date alignment: When aggregating across sources, use the dates map to align effective dates before computing spreads or deltas.
- Units: All rates are percentages per annum. Convert to decimals for math: decimal = percent / 100.
- OHLC: Computed on-the-fly from daily-indexed data; no separate storage of OHLC, so you can regenerate at any time for different periods.
FAQ
Q: What currency is RIKSBANK_REPO returned in?
A: The currencies map returns SEK for RIKSBANK_REPO. Always read currencies['RIKSBANK_REPO'] to confirm in code.
Q: How often should I poll /latest for RIKSBANK_REPO?
A: The symbol is monthly. Polling hourly or daily typically suffices; you can reduce calls by caching and invalidating around known decision or publication days. Use the dates map to confirm changes.
Q: Why does /timeseries show daily frequency for a monthly rate?
A: The API materializes a daily index to support charting and OHLC aggregation. Values repeat until a policy change occurs.
Q: How do I compute a loan payment from the API value?
A: Convert the percent p.a. to a monthly decimal (r/12/100), then apply your chosen formula (e.g., amortizing payment P × i / (1 - (1 + i)^(-n))). Use the effective date to ensure you’re using the current rate.
Q: What happens if I request a date with no data for RIKSBANK_REPO?
A: You may receive a 404 if data is unavailable for the requested range; for monthly symbols, /historical resolves to the last day with data within that month. Inspect error details when present.
Build your Riksbank Repo Rate integration now with the MCP tools and start calling the API in minutes. Register for an API key, or Get started with Interest Rates API. For product background and status, visit interestratesapi.com.