Documentation
Quickstart
Base URL: https://api.financialsource.co/v1 · Auth: x-api-key header · All endpoints GET unless noted.
1. Call an endpoint
curl -s https://api.financialsource.co/v1/gex/SPX/current \ -H "x-api-key: 1bb_YOUR_KEY_HERE"
2. Live stream (SSE)
curl -N https://api.financialsource.co/v1/gex/stream?instrument=SPX \ -H "x-api-key: 1bb_YOUR_KEY_HERE"
3. Python
import httpx
API = "https://api.financialsource.co/v1"
KEY = "1bb_YOUR_KEY_HERE"
r = httpx.get(f"{API}/gex/SPX/current", headers={"x-api-key": KEY})
print(r.json()["levels"]["zgl"]) # zero-gamma levelEndpoint reference
25 live endpoints across 7 data groups — every route verified against the upstream feed.
Gamma Exposure4 routes
SPX/NDX snapshots, levels, history + live stream
| Endpoint | Params | Cache | Notes |
|---|---|---|---|
| GET/v1/gex/{instrument}/current | instrument = SPX | NDX | 30s | Full snapshot: spot, gamma/vol regime, zero-gamma, walls, max pain, charm, expected-move bands, direction model, setup grade, playbook. |
| GET/v1/gex/{instrument}/levels | instrument = SPX | NDX | 30s | Flattened chart-ready levels — one row per wall, flip, zgl, max-pain, band. |
| GET/v1/gex/{instrument}/history | instrument = SPX | NDX | 300s | Headline snapshot series, oldest-first. |
| GET/v1/gex/stream | SSE — hydrates on connect | live | One-minute spot/basis ticks + recomputed GEX snapshots. |
Economic Calendar4 routes
Enriched events, upcoming, history + live stream
| Endpoint | Params | Cache | Notes |
|---|---|---|---|
| GET/v1/calendar | from, to (ISO), country, impact (HIGH/MEDIUM/LOW/NONE), enriched, limit ≤1000 | 60s | Events in a window with CE enrichment; rows mutate in place as actuals land. |
| GET/v1/calendar/upcoming | impact (default HIGH), country, limit ≤200 | 60s | Next upcoming events; threshold brackets = the tradeable surprise range. |
| GET/v1/calendar/history | ticker, country, from, to, limit ≤1000 — needs ≥1 filter | 300s | 1yr+ print history per series. |
| GET/v1/calendar/stream | SSE | live | Pushes complete event rows when releases land. |
Macro & Rates7 routes
Scoreboard, rate tracker, committee bias, CESI, IV, gold
| Endpoint | Params | Cache | Notes |
|---|---|---|---|
| GET/v1/macro | — | 300s | Macro scoreboard. |
| GET/v1/rate-tracker | — | 300s | 8 central banks: next-meeting odds, meeting path, implied policy curve, realtime intraday change series. |
| GET/v1/committee-bias | — | 300s | AI hawkish/dovish sentiment per committee + classified headlines. |
| GET/v1/cesi | — | 3600s | Country macro overview: CESI, 2s10s spread, REER, CPI, unemployment, GDP. |
| GET/v1/cesi/{country} | country = AU CA CH EU GB JP NZ US | 3600s | Full 9-tile chart-ready time series for one country. |
| GET/v1/iv | — | 3600s | Cross-asset implied-vol table: 42 assets, expected move, 1/2/3-SD bands. |
| GET/v1/gold | — | 3600s | XAUUSD bias scorecard: direction, conviction, regime, drivers, session vol bands. |
Research3 routes
Bank research feed with summaries, bias, PDFs
| Endpoint | Params | Cache | Notes |
|---|---|---|---|
| GET/v1/research | limit 1–300 (default 100) | 300s | ~50 sell-side sources, newest first, rolling 14-day window. |
| GET/v1/research/{id} | id = numeric report_id | 300s | One report: summary, bias, main points, tags, has_pdf. |
| GET/v1/research/{id}/pdf | id = numeric report_id | 3600s | Original PDF (application/pdf) — check has_pdf first. |
Analytics & Economics3 routes
20 strategy reports + chart-ready economic series
| Endpoint | Params | Cache | Notes |
|---|---|---|---|
| GET/v1/analytics/{report}/{symbol} | report = 20 slugs, symbol = ES | NQ | GC, lookback = 1m/3m/6m/1y/5y, slice = 15min/30min/60min | 3600s | Pre-computed intraday statistics from 1-minute futures data, refreshed daily. |
| GET/v1/econ | country, q (substring), limit ≤2000 | 3600s | Directory of economic indicator series (metadata). |
| GET/v1/econ/{indicator} | country, q, limit ≤2000 | 3600s | Chart-ready history for one series (~14 months) — use the exo code. |
Sentiment & Positioning3 routes
Fear & Greed, COT, seasonality
| Endpoint | Params | Cache | Notes |
|---|---|---|---|
| GET/v1/fng | — | 3600s | CNN Fear & Greed composite + 7 sub-indicators + crypto index. |
| GET/v1/cot | — | 3600s | CFTC Legacy positioning, 26 futures, last 52 weekly records + price bar. |
| GET/v1/seasonality | — | 3600s | Monthly % returns per asset-year + 3y/5y/7y/10y aggregates. |
Price & Candles1 routes
ES / NQ / GC OHLCV bars, all timeframes
| Endpoint | Params | Cache | Notes |
|---|---|---|---|
| GET/v1/candles/{symbol} | symbol = ES | NQ | GC, tf = 1m/5m/15m/30m/1h/4h/1d, limit ≤5000, from, to | 30–60s | OHLCV bars; overnight sessions included, no zero-volume gaps. |
Analytics report slugs (20)
opening-range-breakout-standardinitial-balance-breakout-standardintraday-timing-standardopening-candle-continuation-standardopening-range-breakout-by-timepower-hour-breakout-standardgap-fill-standardgap-fill-by-fill-timeprevious-days-range-standardopening-stats-standardatr-average-true-range-standardovernight-range-breakout-standardgreen-and-red-days-by-weekday-standardopening-range-breakout-by-sizeopening-range-breakout-by-retracementinitial-balance-breakout-by-retracementaln-sessions-standardnoon-curve-standardhourly-reversion-standardseasonality-standardErrors
| 401 | Missing / invalid / expired API key |
| 403 | Endpoint not included in your plan — body says which group |
| 429 | Rate limit exceeded — retry after Retry-After |
| 400 | Bad params (invalid symbol / timeframe / report) — body lists valid values |
| 404 | Unknown resource (or a research report aged out of the 14-day window) |
| 502 / 503 | Upstream error / upstream rate limit — retry shortly |
Need a live interactive reference? Email support@financialsource.co with questions — or try a free 24-hour key.
