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 — pass next_cursor back as ?cursor= on GET, or in the JSON body on POST.
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}/bars/{interval} | Open/high/low/close/volume bars for a symbol at a given interval. |
| GET | https://api.tickerbot.io/v2/tickers/{ticker}/events | Discrete event log for one ticker. |
| GET | https://api.tickerbot.io/v2/tickers/{ticker}/holdings | Constituent holdings of an ETF, weight-ranked. |
| GET | https://api.tickerbot.io/v2/tickers/{ticker}/sectors | Sector allocation of an ETF, weight-ranked. |
| POST | https://api.tickerbot.io/v2/tickers/{ticker}/subscribe | Create a webhook that fires when this ticker matches a condition. |
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. |
| GET | https://api.tickerbot.io/v2/signals/{signal}/{ticker}/events | Run-length-encoded occurrences — windows for state flags, points for event flags. |
| POST | https://api.tickerbot.io/v2/signals/{signal}/subscribe | Create a webhook that fires when any ticker matches this signal. |
| POST | https://api.tickerbot.io/v2/signals | Save a named boolean SQL predicate you can reference like a built-in signal. Pro and above. |
| PATCH | https://api.tickerbot.io/v2/signals/{name} | Edit the expression or description of one of your custom signals. Pro and above. |
| DELETE | https://api.tickerbot.io/v2/signals/{name} | Remove a custom signal — refused by default if anything references it. Pro and above. |
Scan
SQL WHERE across the live universe, the same against a past date, and resource-level subscribe.
| Method | Path | Summary |
|---|---|---|
| POST | https://api.tickerbot.io/v2/scan | Run a SQL WHERE against the current universe. |
| POST | https://api.tickerbot.io/v2/scan | Run a SQL WHERE against the close of a past trading day — same endpoint as live, with `asof` set. |
| POST | https://api.tickerbot.io/v2/scan/subscribe | Create a webhook that fires when any ticker matches an arbitrary WHERE clause. |
The live and as-of scan endpoints accept a JSON body so long WHERE clauses don't have to fight URL encoding, and also accept GET with parameters in the query string — handy for short queries and interactive testing. /v2/scan/subscribe is POST only. 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. Available on every plan.
| Method | Path | Summary |
|---|---|---|
| GET | https://api.tickerbot.io/v2/news/scan | SQL-style scan over the news_article archive. Returns articles or aggregate rollups. |
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 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. Available on every plan.
| Method | Path | Summary |
|---|---|---|
| GET | https://api.tickerbot.io/v2/analyst/events | Per-event analyst rating history — upgrades, downgrades, initiations, and price-target changes. |
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 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 webhook. |
| POST | https://api.tickerbot.io/v2/webhooks/{id}/test | Send a real-shape `webhook.fired` POST to your endpoint, instantly. |
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. Subscribing does NOT auto-fire — validate your receiver any time with Test fire, which sends a real-shape webhook.fired POST instantly. 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.