Energy & futures
Work with EIA energy data and CFTC positioning records.
Futures positioning and energy research
Open the Public Source Desk for CFTC Commitments of Traders discovery, weekly history and comparisons across seven report families. Long, short and open interest are reported observations; net positions, adjacent-week changes and open-interest percentages are FilingSift calculations. This is positioning context, not futures prices or a trading signal.
curl https://api.filingsift.com/api/v1/account/open-source-research/query \
-H "Authorization: Bearer $FILINGSIFT_API_KEY" \
-H "Content-Type: application/json" \
--data '{"source":"cftc","reportFamily":"disaggregated_futures","marketCodes":["067651","023651"],"startDate":"2026-08-01","endDate":"2026-10-20"}'Requires intelligence:read and billing access. Discover exact market codes with {"source":"cftc","reportFamily":"legacy_futures","query":"crude oil"}. History accepts up to four markets and a date span of 742 days, returning at most 104 weekly observations per market. Check coverage.truncated and choose shorter windows when needed. JSON and CSV exports preserve report family, market, report date, source URL and response hash; absent values remain unavailable.
Observed provider dataset bounds at the October 28, 2026 acceptance: legacy futures begins January 15, 1986; legacy combined March 21, 1995; disaggregated and financial-futures datasets June 13, 2006; supplemental January 3, 2006. All seven returned a latest report date of October 20, 2026. These are provider-wide bounds, not guaranteed history for every market or complete FilingSift coverage. This endpoint fetches bounded source windows on demand; retained history uses the separate endpoint below.
Saved positioning thresholds use private in-app notices. The first check establishes a baseline; only a strict crossing between adjacent report weeks notifies. Missing values, duplicate observations, gaps and same-week revisions do not generate a crossing alert.
EIA electricity, inventories and storage
Four EIA datasets are available through the same authenticated POST endpoint. FilingSift manages the provider key on the server; use your FilingSift credential. These request bodies are runnable with the curl command above:
{"source":"eia","dataset":"retail_sales","states":["US","CA"],"sectors":["RES","ALL"],"startDate":"2025-01","endDate":"2026-07"}
{"source":"eia","dataset":"generation_mix","state":"US","sector":"99","startDate":"2026-01","endDate":"2026-07"}
{"source":"eia","dataset":"petroleum_stocks","series":["WCESTUS1","WGTSTUS1"],"startDate":"2026-07-01","endDate":"2026-10-23"}
{"source":"eia","dataset":"natural_gas_storage","series":["NW2_EPG0_SWO_R48_BCF","NW2_EPG0_SWO_R33_BCF"],"startDate":"2026-07-01","endDate":"2026-10-23"}Retail queries allow four state-sector combinations over 60 months (240 rows); generation allows one state/sector over 24 months (1,000 rows); weekly queries allow four exact series over 1,095 days (624 rows). There is no page cursor: inspect coverage.truncated and split date windows. coverage.missingSeries identifies requested weekly series with no returned observations. Source decimals and unavailable values remain explicit. JSON/CSV exports preserve source receipts with a redacted provider key.
At October 28 acceptance, provider route bounds were 2001-01 through 2026-08 for both electricity datasets, 1982-08-20 through 2026-10-23 for petroleum, and 2010-01-01 through 2026-10-16 for gas storage. These are dataset bounds, not guaranteed coverage of each series or a downloaded FilingSift archive. Requests fetch selected observations on demand.
Changes and generation shares are labeled FilingSift calculations. Generation categories overlap and their shares must not be added. Saved thresholds use private in-app notices: only strict crossings between adjacent months or weeks notify. Same-period revisions, duplicates, missing observations and gaps do not notify. Generation-share thresholds use percent. Source attribution and current access states are available from GET /api/v1/account/open-source-research.
Retained bank, energy and CFTC history
Bank Research and the EIA and CFTC desks also offer retained-history filters, comparisons, charts and loaded-page CSV/JSON exports. Collection is ongoing: only completed windows are returned, with uncollected periods and missing values identified. These are retrieved revisions, not publication-time vintages.
Use GET /api/v1/reference/retained-history/fdic or /eia or /cftc for actual collection status. Submit the following JSON to POST /api/v1/reference/retained-history/query with your API key:
{"source":"eia","dataset":"petroleum_stocks","metric":"value","series":"WCESTUS1","startDate":"1982-01-01","endDate":"2026-10-23"}Requires entitled billing, intelligence:read and your plan's reference-history access. Each page returns at most 500 observations and scans eight source objects. Repeat the exact filters with the returned nextCursor as cursor, even after an empty page, until it is null. Restart to see newly collected windows. FDIC queries use dataset financials or sod, a metric such as DEPUNINS or DEPSUMBR, and optional certificates or name filters. The OpenAPI specification documents all selectors, response fields and errors.
CFTC retained comparisons across longer histories
For the retained endpoint, use one family, one metric and up to four market codes. The live-provider 742-day limit does not apply; your plan history grant still does. The CFTC catalog lists family-specific metrics. Only completed archive months are returned.
{"source":"cftc","dataset":"legacy_futures","metric":"noncommercial_net","marketCodes":["001602","002602"],"startDate":"1986-01-01","endDate":"2026-10-20"}Repeat this body with nextCursor as cursor until null, including after empty pages. Fields cover open interest and category long, short and derived net positions. Units differ between contracts; positioning is not prices. Historical reports can be less frequent than weekly, and market inception or retirement can produce gaps. Current download coverage is shown in the catalog.