tickerbot-io Devices API
Phone registrations backing the mobile_push webhook channel.
Phone registrations backing the mobile_push webhook channel.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/tickerbot-io:tickerbot-io-devices-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Tickerbot Devices API
version: 2.69.6
summary: The stock market API designed for agents.
description: 'Tickerbot is the stock market API designed for agents. We serve real-time and historical market data as one queryable table. You and your agents can ask it anything, without building anything custom. Every ticker is a row. Every data point is a column. 23,000+ tickers, covering US stocks and ETFs, FX, crypto, rates and metals. 452+ columns, covering raw data, calculations and conditions: price, volume, price action, technicals, fundamentals, events, profile, analyst ratings and news. Refreshed every minute, historized back to 2003. The table is the API: /v2/tickers/ returns one ticker''s whole row, /v2/signals/ returns every ticker that matches one column, /v2/scan returns every ticker that matches a SQL WHERE clause. Every read runs live or as of any date. The power is in the columns: every ticker gets the same columns, query any of them, in any combination. Ask any question: anything you want to know about the market is a query over the table. Build any trading tool: anything you want to build is a few queries in sequence. Get a free API key, or paste our setup prompt and your agent connects over MCP. Free plan: 10,000 calls a month, no card required.
All responses carry a top-level `as_of` ISO timestamp indicating data vintage. List and history responses use opaque cursor pagination — treat `next_cursor` as a black-box token and pass it back via `?cursor=` on the next request.'
contact:
name: Tickerbot Support
url: https://tickerbot.io/support
email: support@tickerbot.io
license:
name: Proprietary
url: https://tickerbot.io/terms
servers:
- url: https://api.tickerbot.io
description: Production
security:
- apiBearer: []
tags:
- name: Devices
description: Phone registrations backing the mobile_push webhook channel.
paths:
/v2/devices/register:
post:
tags:
- Devices
summary: Record a phone/tablet push token; returns a stable device_id
operationId: register_device
description: 'Record a phone or tablet push token; returns a stable `device_id`.
Notes:
- For the `mobile_push` webhook delivery channel. The Tickerbot mobile app calls this automatically on sign-in and foreground — you only call it directly when wiring push delivery yourself.
- Idempotent on the Expo push token: re-registering the same token returns the existing `device_id` rather than minting a new one, so an OS-side token refresh never breaks webhooks pointed at that device. An app reinstall mints a new token and therefore a new `device_id` — re-pick the device on your webhooks.'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
expo_push_token:
type: string
example: ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]
description: Expo push token in `ExponentPushToken[...]` form.
platform:
type: string
enum:
- ios
- android
description: Device platform.
device_name:
type: string
example: David's iPhone
description: Display name for the device picker. Max 60 characters. Set at first registration only — re-registering the same token keeps the existing name (and platform), and there is no rename endpoint.
required:
- expo_push_token
- platform
responses:
'201':
description: 'The device record: `device_id`, `device_name`, `platform`, `created_at`, `last_seen`. Same shape and same 201 when the token was already registered — only `last_seen` refreshes.'
'400':
description: Missing/malformed `expo_push_token`, invalid `platform`, or `device_name` too long.
'401':
description: Missing or invalid API key.
'402':
description: No active plan on the account (rare — new signups land on the Free plan automatically).
'429':
description: Rate limit exceeded for your plan.
/v2/devices:
get:
tags:
- Devices
summary: List registered devices, newest first
operationId: list_devices
description: 'Every device registered on the account, newest first.
Notes:
- Use the `device_id` values from this list as `channel_config.device_id` when subscribing a `mobile_push` webhook.'
responses:
'200':
description: Success.
content:
application/json:
schema:
type: object
properties:
as_of:
description: Server time this response was assembled (ISO 8601).
count:
description: Rows in this page.
next_cursor:
description: Always `null` — the device set is bounded and never pages.
devices:
description: Registered devices, newest `last_seen` first.
'401':
description: Missing or invalid API key.
'402':
description: No active plan on the account (rare — new signups land on the Free plan automatically).
'429':
description: Rate limit exceeded for your plan.
/v2/devices/{device_id}:
delete:
tags:
- Devices
summary: Remove a device registration
operationId: delete_device
description: 'Unregister a device.
Notes:
- Webhooks still pointing at this `device_id` start failing on their next fire (`device not registered`) and flip to permanent failure; after 72 hours with no successful delivery the webhook auto-disables with `disabled_reason: "delivery_failure"`. Re-point or delete them first.'
parameters:
- name: device_id
in: path
required: true
description: Device id from register/list.
schema:
type: string
example: dev_aB3xY9kQpLmZ
responses:
'204':
description: Unregistered.
'400':
description: Invalid device_id format.
'401':
description: Missing or invalid API key.
'402':
description: No active plan on the account (rare — new signups land on the Free plan automatically).
'404':
description: Device not found.
'429':
description: Rate limit exceeded for your plan.
components:
securitySchemes:
apiBearer:
type: http
scheme: bearer
bearerFormat: API key (tb_live_… or tb_test_…)
description: 'API keys are minted in the dashboard. Send as `Authorization: Bearer <key>`.'