Live foreign-exchange reference rates (European Central Bank daily fixes, ~30 major curren
Live foreign-exchange reference rates (European Central Bank daily fixes, ~30 major currencies): any cross-rate from any base, optional amount conversion. Refreshed daily; response carries the rate date.
1000 (raw units)
price
4
calls / 30d
4
unique payers
2026-09-17
updated
Provider
workbot1.oddsys.org · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x15459498e1191d8787c83177809bd54022fA18c4",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "1000",
"maxTimeoutSeconds": 300
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"body": {
"amount": 100,
"base": "USD",
"symbols": [
"EUR",
"GBP",
"JPY"
]
},
"bodyType": "json",
"method": "POST",
"type": "http"
},
"output": {
"body": {
"base": "string",
"date": "string (rate date, ECB daily fix)",
"rates": "object — code -> rate, or code -> { rate, converted } when amount given",
"source": "string (attribution)"
},
"bodyType": "json",
"example": {
"amount": 100,
"base": "USD",
"date": "2026-08-14",
"rates": {
"EUR": {
"converted": 86.452,
"rate": 0.86452
},
"GBP": {
"converted": 74.41,
"rate": 0.7441
}
},
"source": "European Central Bank reference rates (attribution required if redistributed)"
}
}
},
"routeTemplate": "/fx",
"schema": {
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"description": "ALL fields optional — an empty (or absent) body returns all ~30 rates vs EUR.",
"properties": {
"amount": {
"description": "Optional amount to convert at each rate.",
"type": "number"
},
"base": {
"description": "ISO 4217 base currency (default EUR).",
"type": "string"
},
"symbols": {
"description": "Target currency codes (default: all ~30).",
"items": {
"type": "string"
},
"maxItems": 50,
"type": "array"
}
},
"type": "object"
},
"bodyType": {
"enum": [
"json"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
}
}
}
}
}Use it
curl
curl "https://workbot1.oddsys.org/fx" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://workbot1.oddsys.org/fx");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://workbot1.oddsys.org/fx")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/8667.json, and this resource appears in /discovery/resources and /discovery/search.