Use when you need historical exchange rates, forex history or the recent trend o
Use when you need historical exchange rates, forex history or the recent trend of a currency. Do not use for rates older than 90 days, live quotes or crypto (one ECB rate per business day). Returns JSON with 90 days of daily ECB euro reference rates (free at ecb.europa.eu) for up to 10 currencies, rebased to any base as cross rates we calculate, with min, max and percent change for 0.005 USDC per call. Typical response time 1500 ms (p95). Category: Data.
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://x402-gateway.blackwoodstate8.workers.dev/v1/fx-history
| Category | Market data |
|---|---|
| Provider host | x402-gateway.blackwoodstate8.workers.dev |
| Networks | eip155:8453 |
| Payment schemes | exact, upto |
| Self-reported calls, 30 days | 3 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-10-18 | valid payment request | 402 | $0.005 | 2669 ms |
Example input (from the provider)
{
"body": {
"days": 7,
"symbols": [
"USD",
"BRL"
]
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"properties": {
"base": {
"description": "Base currency, ISO 4217 (EUR when omitted), e.g. USD",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"days": {
"description": "Calendar days back from endDate, 1 to 90 (90 when omitted; ignored with startDate), e.g. 30",
"maximum": 90,
"minimum": 1,
"type": "integer"
},
"endDate": {
"description": "Last day, YYYY-MM-DD (latest ECB day when omitted), e.g. 2026-09-30",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"startDate": {
"description": "First day, YYYY-MM-DD, within the last 90 days, e.g. 2026-09-01",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"symbols": {
"description": "Currencies to return, ISO 4217, up to 10, e.g. [\"USD\", \"BRL\"]",
"items": {
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
},
"required": [
"symbols"
],
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"additionalProperties": false,
"properties": {
"attribution": {
"type": "string"
},
"base": {
"type": "string"
},
"days": {
"type": "number"
},
"endDate": {
"type": "string"
},
"next": {
"additionalProperties": false,
"description": "Suggested next paid call in the same family (call it in a loop when the task continues)",
"properties": {
"method": {
"enum": [
"GET",
"POST"
],
"type": "string"
},
"sample": {
"description": "Free fixed sample of the whole family",
"type": "string"
},
"service": {
"description": "Service id of the suggested next paid call",
"type": "string"
},
"tool": {
"description": "MCP tool name of the same call",
"type": "string"
},
"url": {
"description": "Paid route of the next call",
"type": "string"
},
"useWhen": {
"description": "When the next call is the right one",
"type": "string"
}
},
"required": [
"service",
"tool",
"method",
"url",
"useWhen",
"sample"
],
"type": "object"
},
"note": {
"type": "string"
},
"series": {
"items": {
"additionalProperties": false,
"properties": {
"date": {
"type": "string"
},
"rates": {
"additionalProperties": {
"type": "number"
},
"propertyNames": {
"type": "string"
},
"type": "object"
}
},
"required": [
"date",
"rates"
],
"type": "object"
},
"type": "array"
},
"startDate": {
"type": "string"
},
"stats": {
"additionalProperties": {
"additionalProperties": false,
"properties": {
"changePct": {
"type": "number"
},
"first": {
"type": "number"
},
"last": {
"type": "number"
},
"max": {
"type": "number"
},
"min": {
"type": "number"
}
},
"required": [
"first",
"last",
"min",
"max",
"changePct"
],
"type": "object"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"truncated": {
"type": "boolean"
}
},
"required": [
"base",
"startDate",
"endDate",
"days",
"truncated",
"series",
"stats",
"attribution",
"note"