Currencies & FX
List FX Pairs
GET /api/fx Every currency pair ByteTree tracks, with its latest trend scores and metrics. See the FX Metrics overview for how this relates to the plain exchange rates at /api/rates and to /api/assets?type=fx.
Example
List FX pairs
curl "https://api.bytetree.io/api/fx?q=EURUSD&fields=byteTrendCapr200w%2CtrendRegimeCapr200w%2CchangeCapr200w" \
-H "Authorization: Bearer YOUR_API_KEY" const res = await fetch("https://api.bytetree.io/api/fx?q=EURUSD&fields=byteTrendCapr200w%2CtrendRegimeCapr200w%2CchangeCapr200w", {
headers: { "Authorization": "Bearer YOUR_API_KEY" },
});
const body = await res.json(); import requests
res = requests.get(
"https://api.bytetree.io/api/fx?q=EURUSD&fields=byteTrendCapr200w%2CtrendRegimeCapr200w%2CchangeCapr200w",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
body = res.json()
Response
200 {
"count": 1,
"total": 1,
"limit": 500,
"offset": 0,
"data": [
{
"symbol": "EURUSD",
"name": "EUR/USD",
"type": "fx",
"date": "2026-10-09T00:00:00.000Z",
"close": 1.12264,
"byteTrendCapr200w": 0,
"trendRegimeCapr200w": "Neutral",
"changeCapr200w": 0
}
]
} More requests
All pairs
curl https://api.bytetree.io/api/fx \
-H "Authorization: Bearer YOUR_API_KEY" Search by pair (substring match on symbol or pretty form)
curl "https://api.bytetree.io/api/fx?q=EUR" \
-H "Authorization: Bearer YOUR_API_KEY" Cherry-pick fields
curl "https://api.bytetree.io/api/fx?fields=byteTrendCapr200w%2CtrendRegimeCapr200w%2CchangeCapr200w" \
-H "Authorization: Bearer YOUR_API_KEY" Paginate
curl "https://api.bytetree.io/api/fx?limit=20&offset=0" \
-H "Authorization: Bearer YOUR_API_KEY" Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
q |
string |
No | Substring match on the concatenated symbol (EURUSD) or the slash-form pretty name (EUR/USD). Case-insensitive. |
fields |
string |
No | Comma-separated list of metric keys to include. symbol, name, type, date and close are always returned, whether or not you name them. A requested field the record doesn’t have comes back as null; a malformed name is a 400 — see Value validation. |
limit |
number |
No | Maximum number of pairs per page. Default 500, capped at 1000. |
offset |
number |
No | Number of records to skip. Default 0. |
Response
This endpoint uses the paginated list envelope:
| Field | Type | Description |
|---|---|---|
count |
number |
Length of the returned data array (records on this page) |
total |
number |
Full match count for the same filter, ignoring limit and offset |
limit |
number |
Echoed input limit |
offset |
number |
Echoed input offset |
data |
array |
Array of FX pair records |
Each record in data:
| Field | Type | Description |
|---|---|---|
symbol |
string |
Concatenated pair code (e.g. EURUSD) |
name |
string |
Pretty slash form (e.g. EUR/USD) |
type |
string |
Always "fx" |
date |
string |
ISO 8601 date of the latest record |
close |
number |
Latest close rate |
| metric fields | various | Computed metric fields merged at the top level — see Latest Metrics for the full set and definitions |
Without q, the list holds every tracked pair: count and total are 35.
Notes
- Use
?fields=to trim the response when you only need a subset of metrics (e.g. score and regime for a dashboard list). nameis the pair inBASE/QUOTEcode form (e.g.EUR/USD). For full currency names, use Currency Names, or the FX rows on/api/assets, which spell them out (e.g."Euro / US Dollar").- For a polymorphic call that returns FX rows alongside stocks, crypto, and others, see
/api/assets?type=fx.