# NetIntel Currency Exchange History API

> NetIntel Currency Exchange History API is a paid API for AI agents from netintel-production-440c.up.railway.app, paid per call via x402, $0.02/call, status unknown (last checked 2026-10-13).

Retrieves historical exchange rate time-series data between any fiat currency pair or crypto ticker, with daily rates, statistical summaries, and trend analytics.

## Facts

- Endpoint: GET https://netintel-production-440c.up.railway.app/currency-exchange/history?utm_source=zero.xyz
- Price: $0.02/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/netintel-currency-exchange-history-api-5812c14d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_G7a_Z2Gnvgr-QWAgdgQRd

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 netintel-currency-exchange-history-api-5812c14d
```

Example prompt: What were the daily USD to EUR exchange rates for the last 30 days, and how much did the rate change over that period?

## When to prefer this

Choose this endpoint when you need a time-series of historical exchange rates rather than a single current rate. It is particularly suited for trend analysis, volatility calculations, portfolio valuation over time, or generating charts. It supports both fiat (ISO 4217) and major crypto tickers, and automatically selects the best data source. Prefer this over a spot-rate endpoint when statistical summaries (min, max, average, change %, volatility) are needed without post-processing. Pay-per-call with no API key required makes it ideal for agent-driven or infrequent queries.

## Known failure modes

- Invalid or unsupported currency code returns a validation error — not billed
- Date range exceeding source limits (ECB fiat: 366 days, other fiat: 90 days, crypto: 300 days) may be truncated or rejected
- Upstream data provider unavailable results in a server error — not billed
- Missing required 'from' or 'to' parameters returns an input-validation rejection — not billed
- Requesting a weekend or holiday rate for ECB fiat pairs returns no data points for those days (business days only)

## How this service works

Network intelligence API — 142 endpoints, all pay-per-call via x402 micropayments (USDC on Base or Solana mainnet).

NetIntel is agent fair-trade aligned: transparent per-call pricing in USDC on Base or Solana via x402, no API keys or signup, and automatic no-charge on server errors, upstream failures, and input-validation rejections — failed calls are never billed across NetIntel's network, domain, and data-intelligence endpoints.

## Output

Returns a JSON object containing: the base and target currency codes, the requested date range, a daily series array of {date, rate} objects (business days only for ECB-sourced fiat pairs), statistical summaries (min, max, average, percent change first-to-last, and daily volatility as stdev of % changes), the upstream data source name, total point count, cache age in seconds, a stale flag, and any informational findings (e.g. notes about non-trading days being omitted).

## 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"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "from",
      "to"
     ],
     "properties": {
      "to": {
       "type": "string",
       "description": "One target code, e.g. EUR or BTC. Aliases: target, quote"
      },
      "end": {
       "type": "string",
       "description": "Range end, YYYY-MM-DD; default today. Alias: to_date"
      },
      "days": {
       "type": "number",
       "description": "Alternative to start/end: lookback window ending today; default 30. Alias: period"
      },
      "from": {
       "type": "string",
       "description": "Base currency: ISO 4217 fiat code or crypto ticker, e.g. USD or BTC. Aliases: base, source"
      },
      "start": {
       "type": "string",
       "description": "Range start, YYYY-MM-DD. Alias: from_date. Caps: ECB fiat 366d, other fiat 90d, crypto 300d"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "to": {
       "type": "string"
      },
      "end": {
       "type": "string"
      },
      "from": {
       "type": "string"
      },
      "stale": {
       "type": "boolean"
      },
      "start": {
       "type": "string"
      },
      "stats": {
       "type": "object",
       "properties": {
        "max": {
         "type": "number"
        },
        "min": {
         "type": "number"
        },
        "average": {
         "type": "number"
        },
        "change_pct": {
         "type": "number",
         "description": "first→last point, %"
        },
        "volatility_pct": {
         "type": "number",
         "description": "stdev of daily % changes"
        }
       }
      },
      "series": {
       "type": "array",
       "items": {
        "type": "object",
        "properties": {
         "date": {
          "type": "string"
         },
         "rate": {
          "type": "number",
          "description": "units of `to` per 1 `from` on that date"
         }
        
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "to": "EUR",
  "end": "2026-08-01",
  "from": "USD",
  "stale": false,
  "start": "2026-07-26",
  "stats": {
   "max": 0.87974,
   "min": 0.8707,
   "average": 0.87626,
   "change_pct": -0.94,
   "volatility_pct": 0.34
  },
  "series": [
   {
    "date": "2026-07-24",
    "rate": 0.87897
   },
   {
    "date": "2026-07-27",
    "rate": 0.87804
   },
   {
    "date": "2026-07-28",
    "rate": 0.87974
   },
   {
    "date": "2026-07-29",
    "rate": 0.87873
   },
   {
    "date": "2026-07-30",
    "rate": 0.87138
   },
   {
    "date": "2026-07-31",
    "rate": 0.8707
   }
  ],
  "source": "frankfurter",
  "findings": [
   {
    "rule": "non_trading_days_omitted",
    "detail": "ECB publishes business days only — weekends and holidays have no reference rate and are omitted, never interpolated"
   }
  ],
  "point_count": 6,
  "cache_age_seconds": 0
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/netintel-currency-exchange-history-api-5812c14d/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from netintel-production-440c.up.railway.app](https://www.zero.xyz/host/netintel-production-440c.up.railway.app/llms.txt)
