# FX Forward API
> Live FX forward and interest-rate-parity maths that FX desks and treasurers run — computed on demand and deterministically, no key, nothing cached. Get the outright forward rate, forward points (in price and pips) and the annualised forward premium or discount from a spot rate, the two currencies' interest rates and a tenor; the full forward-points curve across standard tenors; the interest rate implied by a quoted forward; and a covered interest-rate-parity check that compares a market forward to its theoretical value and reports the cross-currency basis. Works for any currency pair. A forwards-and-parity engine, distinct from spot calculators and risk tools: it turns spot and rates into the forwards, points and basis a desk quotes.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/fxforward-api/..."
```

## Pricing
- **Free** (Free) — 4,550 calls/Mo, 3 req/s
- **Starter** ($7/Mo) — 103,000 calls/Mo, 10 req/s
- **Pro** ($18/Mo) — 515,000 calls/Mo, 25 req/s
- **Business** ($44/Mo) — 3,130,000 calls/Mo, 55 req/s

## Endpoints

### FX Forward

#### `GET /v1/forward` — Outright forward rate, points & premium/discount

**Parameters:**
- `pair` (query, required, string) — Currency pair BASE+QUOTE Example: `EURUSD`
- `spot` (query, required, string) — Spot rate (quote per base) Example: `1.10`
- `rate_base` (query, required, string) — Base currency annual rate (decimal) Example: `0.03`
- `rate_quote` (query, required, string) — Quote currency annual rate (decimal) Example: `0.05`
- `days` (query, required, string) — Tenor in days Example: `90`
- `daycount` (query, optional, string) — Day-count basis 360 or 365 (default 360) Example: `360`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/fxforward-api/v1/forward?pair=EURUSD&spot=1.10&rate_base=0.03&rate_quote=0.05&days=90&daycount=360"
```

**Response:**
```json
{
    "data": {
        "days": 90,
        "note": "EUR trades at a forward premium vs USD (driven by the rate differential 2%).",
        "pair": "EUR/USD",
        "spot": 1.1,
        "source": "FXFORWARD",
        "rate_base": 0.03,
        "rate_quote": 0.05,
        "base_status": "premium",
        "tenor_years": 0.25,
        "forward_rate": 1.10545906,
        "annualized_pct": 1.9851,
        "daycount_basis": 360,
        "forward_points": 0.00545906,
        "forward_points_pips": 54.59
    },
    "meta": {
        "timestamp": "2026-06-10T22:56:12.133Z",
        "request_id": "8496ef69-2cb8-4f3e-bc72-8d30fa90ebfe"
    },
    "status": "ok",
    "message": "Forward computed",
    "success": true
}
```

#### `GET /v1/implied` — Solve one interest rate from a quoted forward

**Parameters:**
- `pair` (query, required, string) — Currency pair BASE+QUOTE Example: `EURUSD`
- `spot` (query, required, string) — Spot rate Example: `1.10`
- `forward` (query, required, string) — Quoted forward rate Example: `1.1213`
- `days` (query, required, string) — Tenor in days Example: `360`
- `rate_base` (query, optional, string) — Known base rate (omit to solve it; provide one rate only) Example: `0.03`
- `rate_quote` (query, optional, string) — Known quote rate (omit to solve it)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/fxforward-api/v1/implied?pair=EURUSD&spot=1.10&forward=1.1213&days=360&rate_base=0.03"
```

**Response:**
```json
{
    "data": {
        "days": 360,
        "pair": "EUR/USD",
        "spot": 1.1,
        "given": "rate_base",
        "source": "FXFORWARD",
        "forward": 1.1213,
        "tenor_years": 1,
        "daycount_basis": 360,
        "implied_rate_pct": 4.9945,
        "implied_rate_base": null,
        "implied_rate_quote": 0.049945
    },
    "meta": {
        "timestamp": "2026-06-10T22:56:12.235Z",
        "request_id": "f4002ecb-8cd4-4791-b893-7ae1013949b4"
    },
    "status": "ok",
    "message": "Implied rate computed",
    "success": true
}
```

#### `GET /v1/meta` — Service metadata and endpoint list

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/fxforward-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "Pair is BASE+QUOTE (EURUSD). Rates are annual decimals (0.05 = 5%). Money-market t = days/basis (basis 360 default, or 365). pip = 0.0001 (0.01 for JPY).",
        "source": "Computed in-process (covered interest-rate parity)",
        "service": "fxforward-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/parity": "Covered interest-rate parity check + cross-currency basis (pair=EURUSD, spot=1.10, forward=1.1213, rate_base=0.03, rate_quote=0.05, days=360).",
            "GET /v1/points": "Forward-points curve across standard tenors (pair=EURUSD, spot=1.10, rate_base=0.03, rate_quote=0.05).",
            "GET /v1/forward": "Outright forward rate, points & premium/discount (pair=EURUSD, spot=1.10, rate_base=0.03, rate_quote=0.05, days=90).",
            "GET /v1/implied": "Solve one rate from a quoted forward (pair=EURUSD, spot=1.10, forward=1.1213, days=360, rate_base=0.03)."
        },
        "description": "Live FX forward and interest-rate-parity maths, computed on demand and deterministically. The forward endpoint returns the outright forward rate, forward points (price and pips) and the annualised forward premium/discount from a spot rate, the two currencies' interest rates and a tenor; the points endpoint returns the forward-points curve across standard tenors; the implied endpoint solves for one currency's interest rate from a quoted forward; the parity endpoint checks covered interest-rate 
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/parity` — Covered interest-rate-parity check + cross-currency basis

**Parameters:**
- `pair` (query, required, string) — Currency pair BASE+QUOTE Example: `EURUSD`
- `spot` (query, required, string) — Spot rate Example: `1.10`
- `forward` (query, required, string) — Market forward rate Example: `1.1213`
- `rate_base` (query, required, string) — Base annual rate (decimal) Example: `0.03`
- `rate_quote` (query, required, string) — Quote annual rate (decimal) Example: `0.05`
- `days` (query, required, string) — Tenor in days Example: `360`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/fxforward-api/v1/parity?pair=EURUSD&spot=1.10&forward=1.1213&rate_base=0.03&rate_quote=0.05&days=360"
```

**Response:**
```json
{
    "data": {
        "pair": "EUR/USD",
        "spot": 1.1,
        "source": "FXFORWARD",
        "arbitrage": "none",
        "deviation": -5.922e-5,
        "parity_holds": true,
        "deviation_pct": -0.0054,
        "deviation_pips": -0.59,
        "market_forward": 1.1213,
        "theoretical_forward": 1.12135922,
        "cross_currency_basis_pct": -0.0055
    },
    "meta": {
        "timestamp": "2026-06-10T22:56:12.429Z",
        "request_id": "7db1db80-1042-4b9e-a6b5-101794b3c32a"
    },
    "status": "ok",
    "message": "Parity checked",
    "success": true
}
```

#### `GET /v1/points` — Forward-points curve across standard tenors

**Parameters:**
- `pair` (query, required, string) — Currency pair BASE+QUOTE Example: `EURUSD`
- `spot` (query, required, string) — Spot rate Example: `1.10`
- `rate_base` (query, required, string) — Base annual rate (decimal) Example: `0.03`
- `rate_quote` (query, required, string) — Quote annual rate (decimal) Example: `0.05`
- `daycount` (query, optional, string) — Basis 360 or 365 Example: `360`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/fxforward-api/v1/points?pair=EURUSD&spot=1.10&rate_base=0.03&rate_quote=0.05&daycount=360"
```

**Response:**
```json
{
    "data": {
        "pair": "EUR/USD",
        "spot": 1.1,
        "curve": [
            {
                "days": 7,
                "pips": 4.28,
                "tenor": "1W",
                "forward_rate": 1.10042753,
                "forward_points": 0.00042753
            },
            {
                "days": 30,
                "pips": 18.29,
                "tenor": "1M",
                "forward_rate": 1.10182876,
                "forward_points": 0.00182876
            },
            {
                "days": 60,
                "pips": 36.48,
                "tenor": "2M",
                "forward_rate": 1.10364842,
                "forward_points": 0.00364842
            },
            {
                "days": 90,
                "pips": 54.59,
                "tenor": "3M",
                "forward_rate": 1.10545906,
                "forward_points": 0.00545906
            },
            {
                "days": 180,
                "pips": 108.37,
                "tenor": "6M",
                "forward_rate": 1.11083744,
                "forward_points": 0.01083744
            },
            {
                "days": 360,
                "pips": 213.59,
                "tenor": "1Y",
                "forward_rate": 1.12135922,
                "forward_points": 0.02135922
            }
        ],
        "source": "FXFORWARD",
        "rate_base": 0.03,
        "rate_quote": 0.05,
        "daycount_basis": 360
    },
    "meta": {
        "timestamp":
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/fxforward-api
OpenAPI spec: https://www.oanor.com/api/fxforward-api/openapi.json
