SoftSignal Research
Data API
REST / JSON · 52 endpoints · derived signals only · freshness on every payload
Data status →

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
EndpointParametersAuth
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
EndpointParametersAuth
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
EndpointParametersAuth
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
EndpointParametersAuth
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
GET/api/v1/eia/biofuel-feedstock Soybean oil's share of US biomass-based diesel feedstock + volume. key
GET/api/v1/eia/biofuel-feedstock/history Monthly soy-oil biofuel feedstock series (default 36, max 120 months). months — query int, default 36 key
Climate
EndpointParametersAuth
GET/api/v1/enso ENSO phase with ONI, RONI, Rnino34 + commodity implications. key
WASDE supply & demand
EndpointParametersAuth
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
EndpointParametersAuth
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
EndpointParametersAuth
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
EndpointParametersAuth
GET/api/v1/livestock/stress Heat/cold stress for hog + feedlot belts, with 14-day forecast. key
Crop progress
EndpointParametersAuth
GET/api/v1/crop-progress USDA NASS planting progress + condition ratings (US national). key
Coffee
EndpointParametersAuth
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
GET/api/v1/coffee/leaf-rust Weather CONDUCIVENESS to coffee leaf rust by origin (temp × leaf-wetness, recent + 14-day forecast). Environmental risk signal, NOT observed disease. region — query, optional — origin key or 'all' (default) key
Supply-chain & exports
EndpointParametersAuth
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
Calendar
EndpointParametersAuth
GET/api/v1/release-schedule Upcoming USDA/EIA/CFTC release calendar. key
Other
EndpointParametersAuth
GET/api/v1/kb Knowledge base (public, read-only): resolve a term/acronym/metric/methodology, or fetch one entry. ?q=<question> to search, ?id=<entry id> to fetch (e.g. a provenance method_ref), no params for the full menu. q — query, optional — e.g. 'what is RONI vs ONI'id — entry id, optional — e.g. iod-dmi-self-computedlimit — query int, default 3 (search only) public
GET/api/v1/coffee-frost Brazil arabica frost risk. Omit point for all 10 + belt share. point — query, optional — e.g. poco_caldas key
GET/api/v1/coffee-leaf-rust Coffee leaf-rust conduciveness by origin. region — query, optional — default all key
GET/api/v1/china-weather/frost NE China early-autumn frost risk. Omit point for all 5 monitored points. point — query, optional key
GET/api/v1/china-weather/dry-hot-wind NCP China dry-hot-wind (干热风) risk. Omit point for all 5 stations. point — query, optional key
GET/api/v1/china-weather/harvest-rain NCP China harvest-window rain -> quality risk. Omit province for all 5. province — query, optional key
GET/api/v1/iod Indian Ocean Dipole — DMI phase, West/East poles + history. months — query, optional history window (default 24) key
GET/api/v1/navigability Northern Arc navigability — Brazil Arco Norte barge-corridor pressure tier + per-leg (Madeira/Tapajós/mainstem) dry-season-low forecasts. key
GET/api/v1/fertilizer Brazil fertilizer supply-risk: gas→urea margin, import flows, chokepoint, affordability + farmgate barter. key
GET/api/v1/fertilizer/india India fertilizer supply-risk: importer-margin-vs-NBS gap (DAP landed vs MRP+subsidy), urea subsidy-bill pressure (Asia LNG + rupee), import chokepoint exposure. key
GET/api/v1/fertilizer/us US fertilizer supply-risk: producer competitiveness (gas→urea cost cushion vs world/EU), Mississippi barge logistics (rate + river stage), import chokepoint (Canada potash). key
GET/api/v1/fertilizer/exporters Global exporter fertilizer supply-risk: export concentration (HHI), swing-exporter availability vs seasonal normal (China quotas), European marginal-cost squeeze. key
GET/api/v1/sugar Brazil CS sugar–ethanol parity & mill-mix: signed sugar-supply tilt from sugar vs ethanol netback (R$/kg ATR), CONAB realized sugar-mix %, and ANP pump-parity demand. key
GET/api/v1/crop Free catalog of crop-agency subject views — subject, as-of date, freshness, commodities, teaser, and the source reports behind each. The full cited view is on /crop/{subject}. Optional ?commodity= filters the catalog: views are keyed by subject, so one commodity spans several of them (wheat runs through the Canada, Brazil, EU, Ukraine, Australia and Indonesia views; cotton through the Brazil, China and India views). The response carries the closed vocabulary in 'commodities_available'. commodity — query, optional: barley | coffee | corn | cotton | durum | ethanol | palm-oil | rapeseed | rice | rye | sorghum | soybean-meal | soybeans | sugar | wheat public
GET/api/v1/crop/{subject} The cited agency view on a subject (e.g. china-corn | brazil-corn | brazil-cotton | india-cotton | canada-canola | ukraine-grain | eu-grain | brazil-enso | brazil-coffee — 28 in all): current position, revision trail, sources, and SoftSignal's separate note. Views are keyed by subject, not agency — the Brazil views carry Conab and USDA side by side because they disagree. Sources come in three kinds: attaché ('Post') figures are USDA staff research, not official; Conab's levantamento is Brazil's official survey; 'industry research' (Fundação Procafé's coffee warning stations) is select monitored plots — evidence a condition is present in the area, never a share of regional production. Where 'observation_period' is present it, not 'as_of', is the date the conditions describe, and may be weeks earlier — cite it on every statement. Licensing differs per view — see the 'license' field (Conab and Procafé material require source citation). Call /crop for the live subject list. subject — path: one of the 28 subject ids — call /crop for the live list (china-corn | brazil-corn | brazil-cotton | india-cotton | canada-canola | ukraine-grain | eu-grain | brazil-enso | …) key