All endpoints
Six buckets, one schema, one SQL grammar. Tickers, signals, scan, universes, news, webhooks. Every response carries a top-level as_of. List responses paginate via opaque cursors (next_cursor on the response, ?cursor= on the request).
Tickers
Current state, point-in-time snapshot, the discrete event log, and resource-level subscribe.
| Method | Path | Summary |
|---|---|---|
| GET | https://api.tickerbot.io/v2/tickers | List active tickers, paginated. |
| GET | https://api.tickerbot.io/v2/tickers/{ticker} | Get the full current state of one ticker, or a snapshot at a past date. |
| GET | https://api.tickerbot.io/v2/tickers/{ticker}/history | Get the full ticker row as of a past date. |
| GET | https://api.tickerbot.io/v2/tickers/{ticker}/events | Discrete event log for one ticker. |
Signals
Catalog, live matches, point-in-time matches, per-ticker time series, custom-signal CRUD, and resource-level subscribe.
| Method | Path | Summary |
|---|---|---|
| GET | https://api.tickerbot.io/v2/signals | Built-in signals plus your custom signals, each tagged with `kind`. |
| GET | https://api.tickerbot.io/v2/signals/{signal} | Find tickers that match a signal right now, or at a past date with ?asof=. |
| GET | https://api.tickerbot.io/v2/signals/{signal} | Run the match set at the close of a past date — same endpoint as live, with ?asof=. |
| GET | https://api.tickerbot.io/v2/signals/{signal}/{ticker}/history/{interval} | Time series of one signal for one ticker. |
| POST | https://api.tickerbot.io/v2/signals | Save a named SQL expression you can reference like a built-in signal. Scale and above. |
| PATCH | https://api.tickerbot.io/v2/signals/{name} | Edit the expression or description of one of your custom signals. Scale and above. |
| DELETE | https://api.tickerbot.io/v2/signals/{name} | Remove a custom signal — refused by default if anything references it. Scale and above. |
Scan
SQL WHERE across the live universe, the same against a past date, and resource-level subscribe.
| Method | Path | Summary |
|---|---|---|
| GET | https://api.tickerbot.io/v2/scan | Run a SQL WHERE against the current universe. |
| GET | https://api.tickerbot.io/v2/scan | Run a SQL WHERE against the close of a past trading day — same endpoint as live, with ?asof=. |
POST /v2/scan takes the same parameters as a JSON body — useful when your WHERE clause is too long for a query string. Documented on the same live scan page. Scan reference →
Universes
Named ticker lists you reference from any query endpoint with ?universe=<slug>.
| Method | Path | Summary |
|---|---|---|
| POST | https://api.tickerbot.io/v2/universes | Create a universe. |
| GET | https://api.tickerbot.io/v2/universes/{id} | Fetch a single universe. |
| PATCH | https://api.tickerbot.io/v2/universes/{id} | Update a universe. |
| DELETE | https://api.tickerbot.io/v2/universes/{id} | Delete a universe. |
| GET | https://api.tickerbot.io/v2/universes | List your universes. |
| GET | https://api.tickerbot.io/v2/universes/system | List system universes (top_10, top_100). |
News
Article-level news + per-ticker sentiment, indexed back to 2015 and refreshed every 15 minutes. Scale and above.
| Method | Path | Summary |
|---|
One SQL-style endpoint, two shapes: article rows when no group_by is supplied, aggregate rollups when one is. Filter the archive with a WHERE-clause grammar identical to /v2/scan; auto-joins UNNEST(tickers) AS tk whenever any clause references the tk alias, so per-ticker rollups don’t need an explicit unnest. There is no separate asof parameter — historical queries are just WHERE filters on time_published. The 24-hour rolling summary lives on the ticker object as news_volume + news_volume_weighted_sentiment and remains queryable through /v2/scan on every paid plan. News reference →
Analyst
Per-event analyst rating history back to 2012-02-08. Upgrades, downgrades, initiations, price-target changes — with the firm, the new and previous rating, and the new and previous target. Scale and above.
| Method | Path | Summary |
|---|
Filter by ticker / tickers, since / until, firm, and action. The snapshot consensus columns on /v2/tickers (analyst_consensus_rating, analyst_consensus_target_price, analyst_target_upside_pct, last_rating_*) and the 7-day event-window flags on /v2/scan (recent_upgrade, recent_target_raise, …) are derived from the same stream and stay on every paid plan. Analyst reference →
Webhooks
Subscriptions are created on each resource; the registry lists, inspects, and manages them.
| Method | Path | Summary |
|---|---|---|
| GET | https://api.tickerbot.io/v2/webhooks | List every webhook subscription on this account. |
| GET | https://api.tickerbot.io/v2/webhooks/{id} | Fetch one webhook subscription. |
| DELETE | https://api.tickerbot.io/v2/webhooks/{id} | Delete a webhook subscription. |
| GET | https://api.tickerbot.io/v2/webhooks/{id}/deliveries | Inspect recent deliveries for a webhook. |
| POST | https://api.tickerbot.io/v2/webhooks/{id}/enable | Re-enable a disabled or pending webhook. |
Subscribe via POST /v2/tickers/{T}/subscribe, /v2/signals/{X}/subscribe, or /v2/scan/subscribe. We evaluate on the cadence configured for your plan and POST your target URL each time a new ticker enters the match set. Deliveries carry an HMAC-SHA256 signature; retries follow a 30s / 2m / 10m / 1h / 6h schedule. Webhooks reference →
Before you write code
A few links worth bookmarking.
- Authentication: bearer token, key format, plan tiers.
- SQL reference: what the WHERE clause grammar supports.
- Schema: every field and flag, with examples.
- Error model: status codes, retry semantics.
- OpenAPI spec (YAML): full machine-readable definition for code generators.
- Changelog: version history.