---
title: "Get CFTC positioning history"
method: GET
path: "/v1/indicators/cftc-positioning/historical"
tags: ["Indicators"]
---

# Get CFTC positioning history

`GET /v1/indicators/cftc-positioning/historical`

## Request

- Base URL: `https://api.oilpriceapi.com`
- URL: `https://api.oilpriceapi.com/v1/indicators/cftc-positioning/historical`
- Auth: API key in header `Authorization`

CFTC Legacy Futures Only history grouped by source observation date, excluding rows without observed_at. Each row has date, spec_net, open_interest and spec_net_pct_oi. Requested period is retained and coverage exposes the effective 730-day range and range_limited flag. This endpoint does not provide managed-money futures-and-options history.

## Query parameters

- `commodity` 'WTI' | 'BRENT' | 'NATURAL_GAS' | 'HEATING_OIL' | 'GASOLINE'
- `start_date` string, date
- `end_date` string, date

## Response `200`

Get CFTC positioning history

- object
  - `status` string, required
  - `data` object, required
    - `period` object
      - `start` string, date
      - `end` string, date
    - `coverage` object: Effective start/end, source_observation date basis, and range_limited.
    - `count` integer
    - `data` object[]
      - `date` string
      - `spec_net` integer
      - `open_interest` integer, nullable
      - `spec_net_pct_oi` number, nullable
    - `commodity` string

## Other responses

- `400`: A required parameter is missing or invalid. The message enumerates valid values.
- `401`: Missing or invalid API key.
- `500`: Unexpected server error. Retry transient failures with bounded backoff and retain the request ID when contacting support.

## Changes

- **2026-10-11** `84bf31be62ff`: 1 breaking, 2 warning, 9 info
  - the `data/period` response's property type changed from `string` to `object` for status `200`
  - deleted the `query` request parameter `period`
  - removed the optional property `data/data/items/value` from the response with the `200` status
  - added the new optional `query` request parameter `commodity`
  - …8 more
- **2026-08-25** `0e79e21dee2e`: 5 info
  - added the new optional `query` request parameter `period`
  - added the media type `application/json` for the response with the status `200`
  - added the media type `application/json` for the response with the status `401`
  - added the non-success response with the status `400`
  - …1 more

[Operation history](https://skmtc.dev/oilpriceapi/apis/oil-price-api-v1/changes/v1/indicators/cftc-positioning/historical/get.md)

---

[API](https://skmtc.dev/oilpriceapi/apis/oil-price-api-v1.md) - [All operations](https://skmtc.dev/oilpriceapi/apis/oil-price-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/oilpriceapi/apis/oil-price-api-v1/revisions/7f8b4d763210?raw)
