# ECB FX History – 90-Day Daily Exchange Rates

> ECB FX History – 90-Day Daily Exchange Rates is a paid API for AI agents from x402-gateway.blackwoodstate8.workers.dev, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-22).

Returns 90 days of daily ECB euro reference rates for up to 10 currencies, rebased to any base currency with min, max, and percent change stats.

## Facts

- Endpoint: POST https://x402-gateway.blackwoodstate8.workers.dev/v1/fx-history?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-22
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/ecb-fx-history-90-day-daily-exchange-rates-35413452
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_cqZ_LfT1GoCoRdxWpj_3y

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability ecb-fx-history-90-day-daily-exchange-rates-35413452 -d '<json body>'
```

Example prompt: Can you pull the last 30 days of daily ECB exchange rates for USD, GBP, and JPY rebased to USD, and tell me the min, max, and percent change for each?

## When to prefer this

Choose this endpoint when you need up to 90 days of historical daily ECB official euro reference rates for up to 10 fiat currencies, optionally rebased to a non-EUR base currency. It is ideal for trend analysis, volatility reporting, and financial reconciliation. Do not use it for live/real-time quotes, rates older than 90 days, or cryptocurrency exchange rates.

## Known failure modes

- Request for dates older than 90 days returns an error or empty series
- Requesting more than 10 symbols returns a validation error
- Invalid ISO 4217 currency codes return an error
- ECB publishes one rate per business day, so weekends/holidays produce no data point
- Crypto or non-ECB-tracked currencies are not supported and will error or return empty
- Payment failure (insufficient USDC balance) blocks the call
- p95 latency is 1500 ms; occasional timeouts possible under load

## How this service works

Use when you need historical exchange rates, a historical FX rate series, forex history or a currency trend. Do not use for rates older than 90 days, live quotes or crypto (one ECB rate per business day). Returns JSON with historical exchange rates: 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, with min, max and percent change for 0.005 USDC per call. Typical response time 1500 ms (p95). Category: Data.

## Output

A JSON object containing: the base currency, date range, number of days, a daily time-series of rates for each requested currency, per-currency stats (min, max, percent change), ECB attribution, and a note field. May also include a 'next' field suggesting related paid calls.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "type": "object",
     "required": [
      "symbols"
     ],
     "properties": {
      "base": {
       "type": "string",
       "pattern": "^[A-Za-z]{3}$",
       "description": "Base currency, ISO 4217 (EUR when omitted), e.g. USD"
      },
      "days": {
       "type": "integer",
       "maximum": 90,
       "minimum": 1,
       "description": "Calendar days back from endDate, 1 to 90 (90 when omitted; ignored with startDate), e.g. 30"
      },
      "endDate": {
       "type": "string",
       "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
       "description": "Last day, YYYY-MM-DD (latest ECB day when omitted), e.g. 2026-09-30"
      },
      "symbols": {
       "type": "array",
       "items": {
        "type": "string",
        "pattern": "^[A-Za-z]{3}$"
       },
       "maxItems": 10,
       "minItems": 1,
       "description": "Currencies to return, ISO 4217, up to 10, e.g. [\"USD\", \"BRL\"]"
      },
      "startDate": {
       "type": "string",
       "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
       "description": "First day, YYYY-MM-DD, within the last 90 days, e.g. 2026-09-01"
      }
     }
    },
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "POST"
     ],
     "type": "string"
    },
    "bodyType": {
     "enum": [
      "json",
      "form-data",
      "text"
     ],
     "type": "string"
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "base",
      "startDate",
      "endDate",
      "days",
      "truncated",
      "series",
      "stats",
      "attribution",
      "note"
     ],
     "properties": {
      "base": {
       "type": "string"
      },
      "days": {
       "type": "number"
      },
      "next": {
       "type": "object",
       "required": [
        "service",
        "tool",
        "method",
        "url",
        "useWhen",
        "sample"
       ],
       "properties": {
        "url": {
         "type": "string",
         "description": "Paid route of the next call"
        },
        "tool": {
         "
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "base": "EUR",
  "days": 5,
  "note": "ECB reference rates are for information purposes only, published once per business day; they are not trading rates. Rates against a base other than EUR and the statistics are calculated by Blackwood State from the ECB euro rates.",
  "stats": {
   "BRL": {
    "max": 5.7197,
    "min": 5.5819,
    "last": 5.7197,
    "first": 5.5819,
    "changePct": 2.47
   },
   "USD": {
    "max": 1.1253,
    "min": 1.1181,
    "last": 1.1253,
    "first": 1.1181,
    "changePct": 0.64
   }
  },
  "series": [
   {
    "date": "2026-10-12",
    "rates": {
     "BRL": 5.5819,
     "USD": 1.1181
    }
   },
   {
    "date": "2026-10-13",
    "rates": {
     "BRL": 5.6125,
     "USD": 1.1188
    }
   },
   {
    "date": "2026-10-14",
    "rates": {
     "BRL": 5.6246,
     "USD": 1.1195
    }
   },
   {
    "date": "2026-10-15",
    "rates": {
     "BRL": 5.6679,
     "USD": 1.1208
    }
   },
   {
    "date": "2026-10-16",
    "rates": {
     "BRL": 5.7197,
     "USD": 1.1253
    }
   }
  ],
  "endDate": "2026-10-16",
  "startDate": "2026-10-12",
  "truncated": false,
  "attribution": "Source: European Central Bank (ECB) euro foreign exchange reference rates, available free of charge at ecb.europa.eu"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/ecb-fx-history-90-day-daily-exchange-rates-35413452/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402-gateway.blackwoodstate8.workers.dev](https://www.zero.xyz/host/x402-gateway.blackwoodstate8.workers.dev/llms.txt)
