You need Finland’s 10-year sovereign yield in your own tools—updated reliably, with historical context and curve shape—without building a data pipeline from scratch. By the end of this guide, you’ll pull the latest Finland 10Y yield, fetch intraday snapshots, compute spreads, assemble a full Finland curve, and integrate every endpoint of the Bonds API into dashboards, research notebooks, or risk systems.
What you get from the API and how to read it
Bonds API serves sovereign bond yields for Finland (ISO2: FI) across maturities from short bills to long bonds using simple GET endpoints. Yields are expressed in percent (for example, 4.52 means 4.52% yield). Spreads are returned in basis points (spread_bps), where 1 basis point equals 0.01%. Dates are strings in Y-m-d format (for example, 2026-10-04). When intraday snapshots include timestamps, they are in ISO 8601 with a Z suffix, meaning UTC (for example, 2026-10-04T12:00:00Z).
All requests use the base URL https://bonds-api.com/api/v1/ and the GET method, authenticated using the X-API-Key header. Endpoints provide latest values, historical points, time series, spreads versus benchmarks, full curves, intraday snapshots, and fluctuations. For coverage and product details, see bonds-api.com. To obtain access credentials, Register for Bonds API or Get started with Bonds API.
Latest Finland yields (focus on 10Y)
Use the latest endpoint to query current yields for one or more maturities. This is ideal for dashboards or intraday monitoring where you just need the latest print.
Endpoint
GET /api/v1/latest
- Required: countries (ISO2, comma-separated)
- Optional: maturities (comma-separated, e.g., 2Y,10Y)
cURL example (Finland: 2Y and 10Y)
curl -s "https://bonds-api.com/api/v1/latest?countries=US&maturities=10Y&api_key=YOUR_API_KEY"
JSON response example
{
"success": true,
"date": "2026-10-02",
"rates": {
"US_10Y": 5.28
},
"dates": {
"US_10Y": "2026-10-02"
},
"currencies": {
"US_10Y": "USD"
},
"meta": {
"request_id": "3d41dc17-0bd2-4e92-8213-d04717dc0c0d",
"timestamp": "2026-10-04T00:05:57+00:00"
}
}
Interpretation: Each maturity under FI returns a yield (percent), the observation date (Y-m-d), and a source label. If maturities is omitted, the endpoint returns all available maturities for Finland, which you can use to assemble a basic curve snapshot.
Python
import requests
resp = requests.get(
"https://bonds-api.com/api/v1/latest",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"countries": "FI", "maturities": "2Y,10Y"}
)
data = resp.json()
fi_10y = data["data"]["FI"]["10Y"]["yield"]
fi_10y_date = data["data"]["FI"]["10Y"]["date"]
print("FI 10Y:", fi_10y, "% on", fi_10y_date)
JavaScript (fetch)
const url = new URL("https://bonds-api.com/api/v1/latest");
url.searchParams.set("countries", "FI");
url.searchParams.set("maturities", "2Y,10Y");
fetch(url.toString(), {
method: "GET",
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(json => {
const y = json.data.FI["10Y"].yield;
const d = json.data.FI["10Y"].date;
console.log(`FI 10Y: ${y}% on ${d}`);
});
PHP
<?php
$context = stream_context_create([
'http' => [
'method' => 'GET',
'header' => "X-API-Key: YOUR_API_KEY\r\n"
]
]);
$url = "https://bonds-api.com/api/v1/latest?countries=FI&maturities=2Y,10Y";
$response = file_get_contents($url, false, $context);
$data = json_decode($response, true);
$fi10y = $data["data"]["FI"]["10Y"]["yield"];
$dt = $data["data"]["FI"]["10Y"]["date"];
echo "FI 10Y: {$fi10y}% on {$dt}";
Official sample payload (verbatim)
The following official sample demonstrates a response shape you may encounter for US data. Copy as-is when testing that exact sample.
When you work with Finland, use country code FI and the header-based authentication shown earlier. For US in the official sample above, the response groups values under rates/dates and includes metadata with an ISO 8601 UTC timestamp.
Historical Finland 10Y yield on a specific date
Use the historical endpoint to query the FI 10Y yield as of a particular date, useful for point-in-time backtesting or end-of-month reporting.
Endpoint
GET /api/v1/historical
- Required: country (ISO2), maturity (e.g., 10Y), date (Y-m-d)
cURL example
JSON response example
This returns a single yield observation (percent) for FI 10Y on the requested date. If the date is a non-business day, expect the closest available date per the dataset’s publishing cadence. If no data is available, you will receive a 404 error.
Python
import requests
r = requests.get(
"https://bonds-api.com/api/v1/historical",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "FI", "maturity": "10Y", "date": "2025-06-15"}
)
print(r.json())
JavaScript
const params = new URLSearchParams({ country: "FI", maturity: "10Y", date: "2025-06-15" });
fetch("https://bonds-api.com/api/v1/historical?" + params.toString(), {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(console.log);
PHP
<?php
$params = http_build_query(["country" => "FI", "maturity" => "10Y", "date" => "2025-06-15"]);
$opts = ["http" => ["method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n"]];
$ctx = stream_context_create($opts);
echo file_get_contents("https://bonds-api.com/api/v1/historical?$params", false, $ctx);
Time series for Finland 10Y
For modeling, drawdowns, or volatility, request a dated series of FI 10Y yields between a start and end date.
Endpoint
GET /api/v1/timeseries
- Required: country (ISO2), maturity, start (Y-m-d), end (Y-m-d)
cURL example
JSON response example
The series array contains daily observations (business days), each with date (Y-m-d) and yield (percent). Use this to compute averages, rolling changes, or regressions. If your requested period covers weekends or holidays, those dates are simply absent.
Python
import requests
r = requests.get(
"https://bonds-api.com/api/v1/timeseries",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "FI", "maturity": "10Y", "start": "2025-10-04", "end": "2026-10-04"}
)
series = r.json()["series"]
# Example: last yield in window
print(series[-1]["date"], series[-1]["yield"])
JavaScript
const q = new URLSearchParams({
country: "FI", maturity: "10Y", start: "2025-10-04", end: "2026-10-04"
});
fetch("https://bonds-api.com/api/v1/timeseries?" + q.toString(), {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(({ series }) => {
const last = series[series.length - 1];
console.log("Last:", last.date, last.yield);
});
PHP
<?php
$q = http_build_query([
"country" => "FI", "maturity" => "10Y",
"start" => "2025-10-04", "end" => "2026-10-04"
]);
$ctx = stream_context_create([
"http" => ["method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n"]
]);
echo file_get_contents("https://bonds-api.com/api/v1/timeseries?$q", false, $ctx);
Spread versus a benchmark (Finland vs US or Germany)
Spreads summarize relative value. The spread endpoint returns the Finland yield minus a benchmark yield, in basis points, at a given maturity (10Y by default).
Endpoint
GET /api/v1/spread
- Required: country (ISO2), benchmark (ISO2)
- Optional: maturity (defaults to 10Y)
cURL example (Finland vs US, 10Y)
JSON response example
Interpretation: spread_bps is (FI yield − US yield) × 100. A value of 215 means +2.15% in favor of Finland relative to the US at that maturity. Both country_yield and benchmark_yield are in percent.
Python
import requests
r = requests.get(
"https://bonds-api.com/api/v1/spread",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "FI", "benchmark": "US", "maturity": "10Y"}
)
print(r.json())
JavaScript
const p = new URLSearchParams({ country: "FI", benchmark: "US", maturity: "10Y" });
fetch("https://bonds-api.com/api/v1/spread?" + p.toString(), {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(console.log);
PHP
<?php
$p = http_build_query(["country" => "FI", "benchmark" => "US", "maturity" => "10Y"]);
$ctx = stream_context_create(["http" => ["method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n"]]);
echo file_get_contents("https://bonds-api.com/api/v1/spread?$p", false, $ctx);
Full Finland yield curve
The curve endpoint returns Finland’s full curve on the latest available date or a specified date. Use it to visualize curve shape, detect inversions, or interpolate missing points for pricing models.
Endpoint
GET /api/v1/curve
- Required: country (ISO2)
- Optional: date (Y-m-d)
cURL example
JSON response example
Fields: curve holds maturity-to-yield pairs (percent). inverted is a boolean flag indicating whether short maturities exceed longer ones in a way consistent with an inversion definition. Use the date field to stamp your cache and analytics.
Python
import requests
r = requests.get(
"https://bonds-api.com/api/v1/curve",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "FI"}
)
curve = r.json()["curve"]
tenor_order = ["1M", "3M", "6M", "1Y", "2Y", "5Y", "10Y", "30Y"]
points = [(t, curve[t]) for t in tenor_order if t in curve]
print(points)
JavaScript
const qp = new URLSearchParams({ country: "FI" });
fetch("https://bonds-api.com/api/v1/curve?" + qp.toString(), {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(({ curve, inverted, date }) => {
console.log("Date:", date, "Inverted:", inverted);
console.log("10Y:", curve["10Y"], "%");
});
PHP
<?php
$q = http_build_query(["country" => "FI"]);
$ctx = stream_context_create(["http" => ["method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n"]]);
$resp = file_get_contents("https://bonds-api.com/api/v1/curve?$q", false, $ctx);
echo $resp;
Finland curve snapshot (from response)
| Maturity | Yield (%) |
|---|---|
| 1M | 5.31 |
| 3M | 5.27 |
| 6M | 5.18 |
| 1Y | 4.98 |
| 2Y | 4.25 |
| 5Y | 4.39 |
| 10Y | 4.52 |
| 30Y | 4.71 |
Build curve-aware analytics by combining the curve endpoint with the spread endpoint (for cross-country comparisons) or the fluctuation endpoint (for recent volatility). For custom curves (e.g., subset of maturities), you can also call latest with maturities listed and plot the returned points.
Intraday snapshots for Finland 10Y
When your dashboard needs multiple updates within a single trading day, intraday provides discrete snapshots with UTC timestamps.
Endpoint
GET /api/v1/intraday
- Required: country (ISO2), maturity, date (Y-m-d)
cURL example
JSON response example
Fields: snapshots is an array of intraday yields (percent) each with fetched_at (ISO 8601 UTC). count is the number of snapshots returned. Use fetched_at to sequence data or compute intraday min/max spreads.
Python
import requests
r = requests.get(
"https://bonds-api.com/api/v1/intraday",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "FI", "maturity": "10Y", "date": "2026-10-04"}
)
snaps = r.json()["snapshots"]
print("Open:", snaps[0]["yield"], "Close-ish:", snaps[-1]["yield"])
JavaScript
const q = new URLSearchParams({ country: "FI", maturity: "10Y", date: "2026-10-04" });
fetch("https://bonds-api.com/api/v1/intraday?" + q.toString(), {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(({ snapshots }) => {
const min = Math.min(...snapshots.map(s => s.yield));
const max = Math.max(...snapshots.map(s => s.yield));
console.log("Intraday range:", min, "-", max);
});
PHP
<?php
$q = http_build_query(["country" => "FI", "maturity" => "10Y", "date" => "2026-10-04"]);
$ctx = stream_context_create(["http" => ["method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n"]]);
echo file_get_contents("https://bonds-api.com/api/v1/intraday?$q", false, $ctx);
Fluctuation: change, min, and max for Finland 10Y
Use fluctuation to retrieve the absolute change and range over a period—ideal for alerting, risk limits, or summary widgets.
Endpoint
GET /api/v1/fluctuation
- Required: countries (ISO2 comma-separated), maturity, start (Y-m-d), end (Y-m-d)
cURL example
JSON response example
Fields: start_yield and end_yield are in percent; change is end − start (percent); min and max are the period extremes. To compare Finland to peers, add more ISO2 codes to countries (comma-separated).
Python
import requests
r = requests.get(
"https://bonds-api.com/api/v1/fluctuation",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"countries": "FI", "maturity": "10Y", "start": "2025-10-04", "end": "2026-10-04"}
)
print(r.json()["data"]["FI"])
JavaScript
const qs = new URLSearchParams({
countries: "FI", maturity: "10Y", start: "2025-10-04", end: "2026-10-04"
});
fetch("https://bonds-api.com/api/v1/fluctuation?" + qs.toString(), {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(({ data }) => console.log(data.FI));
PHP
<?php
$qs = http_build_query([
"countries" => "FI", "maturity" => "10Y",
"start" => "2025-10-04", "end" => "2026-10-04"
]);
$ctx = stream_context_create(["http" => ["method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n"]]);
echo file_get_contents("https://bonds-api.com/api/v1/fluctuation?$qs", false, $ctx);
Practical details for a production-grade integration
- Maturities and symbols: Use canonical tenors like 1M, 3M, 6M, 1Y, 2Y, 5Y, 10Y, 30Y as seen in the curve response. The latest endpoint can return multiple maturities for Finland in one request via maturities=.
- Business days and holidays: Daily series exclude weekends and market holidays. Expect no entries on those dates; do not assume calendar continuity. Use the timeseries endpoint and rely on existing date keys rather than filling every calendar day.
- Update frequency: Latest values will reflect the most recent available market or official publication for the given country and maturity. For intraday monitoring, use the intraday endpoint on the trade date you care about.
- Units: Yields are percent. Spreads are basis points. When converting spread_bps to percent, divide by 100.
- Timestamps and time zones: Intraday fetched_at fields are UTC (Z suffix). Daily dates are in Y-m-d without time and can be treated as local-market close depending on the source noted in source.
- Caching: For web dashboards, cache /latest and /curve responses for 30–60 seconds during market hours to balance freshness and rate limits. For historical workloads, cache permanently by date since those values are immutable once published.
- Error handling: Handle JSON error shapes uniformly. Common HTTP codes are 401 (invalid or missing key), 403 (quota exceeded), 404 (no data for the given country/maturity/date), 422 (invalid parameter), 429 (rate limit), 500 (server error). Implement backoff for 429/500 and surface meaningful messages to users.
- Building a multi-country monitor: Use /latest with countries=FI,DE,US and maturities=10Y to get a cross-section quickly. Then call /spread for targeted pairs where you need explicit spread_bps.
- Yield curve construction: For an as-of date curve, use /curve?country=FI. For a “custom curve” or partial set, use /latest with specific maturities. The inverted flag on /curve helps flag macro signals.
Sovereign bond fundamentals (Finland, 10Y focus)
Finland’s sovereign curve provides risk-free reference rates in euros for asset pricing, macro analysis, and hedging. The 10-year tenor is a widely used benchmark for discounting cash flows, framing duration exposure, and computing term premia. Analysts watch the 2s10s slope (2Y vs 10Y from /latest or /curve) and cross-country spreads (for example, FI vs DE using /spread) to assess relative value and macro risk sentiment.
When integrating into analytics, normalize yields as decimals or percentages consistently in your codebase. For example, 4.52% can be stored as 0.0452 in models while presenting 4.52 to users. Cross-check timestamps to align daily bars across markets.
Error responses and retry logic
All error payloads include success=false and an error message string. Implement a small retry with exponential backoff for 429 and 500. For 404, check your parameters: ISO2 code (FI), maturity (e.g., 10Y), and date format. For 422, correct the bad parameter and retry once. Keep logs including the full request URL (excluding the API key) and status code for troubleshooting.
Common error shapes
- 401: Missing or invalid X-API-Key
- 403: Account quota exceeded
- 404: No data for requested country/maturity/date
- 422: Invalid parameter (format, unknown ISO2)
- 429: Rate limit exceeded
- 500: Server error
Use cases for developers and quant teams
- Real-time dashboards: Pin FI 10Y from /latest, sparkline from /timeseries, intraday tiles from /intraday, and a mini-curve from /curve.
- Portfolio risk: Use /fluctuation to monitor the last 1M/3M range. Trigger alerts if the FI 10Y change crosses a threshold. Compare FI vs DE or US from /spread.
- Macro research: Fetch panel data across maturities with /curve daily, compute slope changes, and run regressions on economic indicators.
- Pricing and scenario tools: Interpolate Finland’s curve from /curve, shock parallel or slope factors, and reprice fixed-income instruments.
End-to-end: assembling a Finland 10Y view
- Fetch headline: /latest?countries=FI&maturities=10Y to display current yield and data date.
- Load intraday: /intraday for the current date to show market session dynamics and range.
- Contextualize: /timeseries over the last 12 months to compute drawdowns and volatility.
- Relative value: /spread vs DE or US at 10Y for cross-market positioning in basis points.
- Curve shape: /curve to visualize Finland’s term structure and check the inverted flag.
- Risk summary: /fluctuation for recent min/max and net change over a risk window.
Quick links and tools
Explore the API and endpoints directly on bonds-api.com, or use the management console at Bonds API MCP. For authenticated exploration, open the developer console: MCP. If you need an API key, use these links: Get started with Bonds API or go straight here: Register.
Frequently asked questions
How are yields expressed and what does spread_bps mean?
Yields are in percent (e.g., 4.52 means 4.52%). spread_bps is in basis points, where 1 bp = 0.01%. Convert basis points to percent by dividing by 100.
What timezone are timestamps in?
Intraday timestamps (fetched_at) are ISO 8601 with Z, meaning UTC. Daily dates are Y-m-d without time and refer to the market’s latest available observation date.
How should I handle weekends and holidays in time series?
Use the dates returned by /timeseries and do not assume daily calendar continuity. If you need regular spacing for models, forward-fill or use business-day calendars in your analytics layer.
Can I build a custom Finland curve from a subset of maturities?
Yes: call /latest with countries=FI and maturities listing your desired tenors. For a canonical full curve with inversion detection, use /curve.
What’s the best way to compare Finland to other countries?
Use /spread with country=FI and benchmark set to another ISO2 (e.g., DE or US). The response includes spread_bps, country_yield, and benchmark_yield for fast relative-value analysis.
Ship your Finland 10Y integration today. Pull the latest yield, historical context, spreads, intraday snapshots, and a full curve with simple GET calls. Get an API key here: Register and explore endpoints in the console: MCP. For documentation and coverage, visit bonds-api.com.