Continuous Futures (Brent, WTI)
Auto-rolled, Bloomberg-style continuous front-month series for Brent and WTI. Unlike the per-contract endpoints (/v1/futures/ice-brent, /v1/futures/ice-wti), which return individual contract months, the continuous series pre-rolls to the front month so you get one unbroken time series. The two answer different questions; one is not a substitute for the other.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/futures/continuous/brent | Latest continuous Brent price |
| GET | /v1/futures/continuous/brent/historical | Continuous Brent history |
| GET | /v1/futures/continuous/wti | Latest continuous WTI price |
| GET | /v1/futures/continuous/wti/historical | Continuous WTI history |
Access
Requires Futures Data (included in Professional and above; other paid plans can add it for $39/month from Dashboard → Billing). A key without it receives 403 from the same feature gate as every other futures endpoint — a flat body with error: "Feature access required", required_feature: "futures_data", message, current_plan and upgrade_url, and no code field; branch on the status and required_feature, not on an error code. See Access and limits.
Historical depth is tiered on top of that:
| Entitlement | Continuous history window |
|---|---|
| Professional (incl. trial), Scale, Enterprise, Reservoir, admin | Unlimited (all available history) |
| Futures add-on ($39/month), Production Boost | Last 365 days |
| Free / Developer / Starter / Exploration (no futures access) | 403 from the feature gate (see above) |
A start date earlier than your window is not an error: the range is clamped and the response says so in metadata.history_window (below).
Latest Price
curl "https://api.oilpriceapi.com/v1/futures/continuous/brent" \
-H "Authorization: Token YOUR_API_KEY"
Returns commodity (BRENT_FUTURES_CONTINUOUS / WTI_FUTURES_CONTINUOUS), price, currency, updated_at, an ohlc block (open/high/low/close/volume), a changes block (change_24h, change_percent_24h, null when no 24-hours-ago row exists), and metadata (is_continuous: true, roll_method: "auto", history_available_from, unit: "barrel"). Returns 503 when no continuous data is available.
Historical
curl "https://api.oilpriceapi.com/v1/futures/continuous/brent/historical?from=2025-01-01&to=2025-06-30&interval=1d" \
-H "Authorization: Token YOUR_API_KEY"
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
from | date | No | YYYY-MM-DD. Defaults to your account window (or the 20-year default for uncapped access). Clamped to your window when earlier |
to | date | No | YYYY-MM-DD. Defaults to today |
interval | string | No | 1d (default, raw daily rows), 1w/weekly, 1M/monthly. Alias spellings (1day, 1week, …) are accepted. An unrecognised value is not rejected — it silently falls back to raw daily rows, while the response echoes your own spelling in interval |
Each row carries date, price, open, high, low, close, volume. The response also includes count, a summary block (first/last date and price, change, change_percent), and metadata.
metadata.history_window
Every historical response describes how your entitlement was applied (verified live 2026-09-11):
"history_window": {
"limit_days": null,
"requested_from": "2025-01-01",
"applied_from": "2025-01-01",
"limited": false,
"message": null
}
| Field | Meaning |
|---|---|
limit_days | Account lookback limit in days; null means no plan cap |
requested_from | The start date you supplied, or null when omitted |
applied_from | The effective start date (also echoed in top-level from) |
limited | true when your account limit moved the requested start date forward |
message | Explanation when the range was shortened; otherwise null |
These fields describe access, not data completeness — inspect prices, count, and the returned dates to establish what observations exist.