The data is free; keeping it current, correct, and integration-ready is the product. The
SoftSignal Data API exposes the same derived signals as our MCP server over plain REST/JSON —
COT positioning, WASDE balance sheets, agro-climatic stress, EIA energy, and supply-chain risk —
with one defining feature: every payload carries its own freshness contract.
You always know the through-date and whether a series is on-time, behind, or stale, without
leaving your tool.
Base URL
https://chat.getsoftsignal.com/api/v1
Authentication
Pass your subscriber API key as a bearer token —
Authorization: Bearer ss_your_key — or as a
?key= query parameter. It's the same key as the
MCP server: one subscription covers both surfaces, no separate API tier. The
/api/v1 catalog and /api/v1/status are
public so you can assess the API before subscribing.
Get your key: sign in to your hub at
chat.getsoftsignal.com/hub and click
API key — you can view, copy, and rotate it there. The same key works in
Claude Desktop / ChatGPT over MCP and on this API.
The freshness contract
Every successful response includes a freshness block —
{ as_of, status, cadence, age_days, source } — for that
endpoint's primary series, drawn from our live data-freshness monitor.
status is cadence-aware: a weekly series reflecting its
source's normal one-week publish lag reads current, not stale. See
the full picture on the data status page or fetch
/api/v1/status.
Conventions
Derived signals only — raw prices are never returned. Responses are
{ "status": "success", ... } on 200; an unknown identifier or
unavailable series returns 404 with
{ "status": "error", "error": "..." }.
$ curl -s https://chat.getsoftsignal.com/api/v1/cot/corn \
-H "Authorization: Bearer ss_your_key_here"
{
"status": "success",
"as_of": "2026-06-02T00:00:00Z",
"context": { "market": "corn" },
"data": { "mm_net_pct": 59, "signal": "neutral — no positioning edge", ... },
"freshness": {
"as_of": "2026-06-02", "status": "current", "cadence": "weekly",
"age_days": 4, "source": "CFTC Disaggregated COT"
},
"source": "CFTC Disaggregated COT"
}
Endpoints
Discovery & status
| Endpoint | Parameters | Auth |
| GET/api/v1
API catalog — every endpoint, params, and a sample. |
— |
public |
| GET/api/v1/status
Freshness status for every public series (the status page, as JSON). |
— |
public |
| GET/api/v1/markets
All markets, regions, and commodities covered, with identifiers. |
— |
key |
| GET/api/v1/freshness
Through-date + cadence-aware status for every pipeline series. |
— |
key |
COT positioning
| Endpoint | Parameters | Auth |
| GET/api/v1/cot/{market}
COT positioning snapshot for a market. |
market — path — identifier from /markets |
key |
| GET/api/v1/cot/{market}/percentile
Managed-money positioning percentile + signal. |
market — path |
key |
| GET/api/v1/cot/{market}/change
Week-over-week change in managed-money net. |
market — path |
key |
| GET/api/v1/cot/{market}/history
Weekly COT time series (default 52, max 200 weeks). |
market — pathweeks — query int, default 52 |
key |
| GET/api/v1/cot
Multi-market COT snapshot. ?markets=corn,natgas,hogs_lean |
markets — query CSV of identifiers |
key |
Weather
| Endpoint | Parameters | Auth |
| GET/api/v1/weather/{region}
Agro-climatic snapshot for a coffee growing region. |
region — path — e.g. arabica_brazil |
key |
| GET/api/v1/weather/{region}/history
Dekadal weather series (default 36, max 108 dekads). |
region — pathdekads — query int, default 36 |
key |
| GET/api/v1/weather/{region}/seasonal
Current CWSI vs. same dekad in prior years. |
region — path |
key |
| GET/api/v1/cwsi/{region}
Crop Water Stress Index deviation + seasonal rank. |
region — path |
key |
| GET/api/v1/weather-forecast
14-day forecast for a region (omit region for all). |
region — query, optional |
key |
Energy
| Endpoint | Parameters | Auth |
| GET/api/v1/eia/storage
Current EIA natural-gas storage report + percentile. |
— |
key |
| GET/api/v1/eia/storage/history
Weekly NG storage series (default 52, max 260 weeks). |
weeks — query int, default 52 |
key |
| GET/api/v1/eia/petroleum-demand
US gasoline + distillate demand (4-wk avg, YoY). |
— |
key |
| GET/api/v1/eia/crack-spread
3-2-1 crack spread (refiner margin) + percentile. |
— |
key |
Climate
| Endpoint | Parameters | Auth |
| GET/api/v1/enso
ENSO phase with ONI, RONI, Rnino34 + commodity implications. |
— |
key |
WASDE supply & demand
| Endpoint | Parameters | Auth |
| GET/api/v1/wasde/{commodity}
WASDE balance sheet for a commodity (corn/soybeans/wheat/cotton). |
commodity — path |
key |
| GET/api/v1/wasde/{commodity}/stocks-to-use
World stocks-to-use ratio + percentile rank. |
commodity — path |
key |
| GET/api/v1/wasde/{commodity}/revision
Month-over-month WASDE revision. |
commodity — path |
key |
Acreage
| Endpoint | Parameters | Auth |
| GET/api/v1/acreage
Planted-acre snapshot for all five crops. |
— |
key |
| GET/api/v1/acreage/{crop}
Planted-acre estimate for a crop + percentile. |
crop — path — corn/soybeans/cotton/wheat_winter/wheat_spring |
key |
| GET/api/v1/acreage/{crop}/history
Full planted-acreage history since 1990. |
crop — path |
key |
Drought
| Endpoint | Parameters | Auth |
| GET/api/v1/drought/{region}
US Drought Monitor D3+D4 coverage for a region. |
region — path — e.g. drought_corn_belt |
key |
| GET/api/v1/drought/{region}/history
Weekly D3+D4 coverage (default 52, max 260 weeks). |
region — pathweeks — query int, default 52 |
key |
Livestock
| Endpoint | Parameters | Auth |
| GET/api/v1/livestock/stress
Heat/cold stress for hog + feedlot belts, with 14-day forecast. |
— |
key |
Crop progress
| Endpoint | Parameters | Auth |
| GET/api/v1/crop-progress
USDA NASS planting progress + condition ratings (US national). |
— |
key |
Coffee
| Endpoint | Parameters | Auth |
| GET/api/v1/coffee/fundamentals
Coffee PSD balance + BRL/USD context. |
— |
key |
| GET/api/v1/coffee/certified-stocks
ICE certified (deliverable) coffee stocks — level, YoY, range, history. |
contract — query, robusta (default) or arabica |
key |
Supply-chain & exports
| Endpoint | Parameters | Auth |
| GET/api/v1/deforestation
EUDR-aligned deforestation risk index (omit origin for all). |
origin — query, optional |
key |
| GET/api/v1/grain-exports
USDA FAS ESR export pace (omit grain for all). |
grain — query, optional — corn/soybeans/wheat |
key |
| GET/api/v1/argentina
Argentina production estimates (omit commodity for all). |
commodity — query, optional |
key |
Backtest & calendar
| Endpoint | Parameters | Auth |
| GET/api/v1/regime-backtest
Structural-setup backtest (default market kc_coffee). |
market — query, default kc_coffee |
key |
| GET/api/v1/release-schedule
Upcoming USDA/EIA/CFTC release calendar. |
— |
key |