Developers
EveryIntel API
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/status | Service and data freshness status. Public. |
| GET | /api/v1/markets/cot | Latest positioning summary for all tracked futures markets. Public. |
| GET | /api/v1/markets/cot/{slug} | Latest 12 weeks for one market (public). Full history with a key holding scope cot:history. |
| GET | /api/v1/macro | Latest value for each tracked BLS series. Public. |
| GET | /api/v1/macro/{slug} | Series history including revision records. Requires scope macro:history. |
| GET | /api/v1/research | Published findings. Public. |
| GET | /api/v1/sources | Source catalog with licences and rights classification. Public. |
| GET | /api/v1/observations?series={key} | Raw observations with full provenance and all revisions. Requires scope observations:read. |
Authentication
Send your key in the Authorization header: Authorization: Bearer ei_live_…. Keys are issued per organisation, scoped, and can be rotated or revoked at any time. EveryIntel stores only a hash of each key; a lost key cannot be recovered, only replaced.
Rate limits
Anonymous requests: 60 per minute per IP address. Keyed requests: the limit set on the key (default 60 per minute). Responses include X-RateLimit-Limit and X-RateLimit-Remaining; exceeding the limit returns 429 with Retry-After.
Response and error format
Successful responses return { "data": …, "meta": { … } }. Errors return:
{ "error": { "code": "rate_limited", "message": "Too many requests", "request_id": "…" } }Provenance fields
Observation responses include source_ref, observed_at, collector_version, verification_status, confidence, data_class, revision_number and supersedes_id — see the provenance standard. Pass as_of=YYYY-MM-DDTHH:MM:SSZ to reconstruct what EveryIntel knew at that time.
Example
curl https://everyintel.com/api/v1/markets/cot
Access
API keys are currently issued by arrangement. Contact us with your use case.