Tickbird

Private API

Straight into your system

The pick is available to your key at 7:30 AM New York, thirty minutes before the free email and a full hour before the site. Reading a web page is not a strategy: this is the same data as JSON, on a fixed schedule, with a schema that will not move under you.

Authentication

Send your key on every request. Both forms work, because tooling differs from desk to desk. Keys are issued individually and can be revoked at any time.

curl https://tickbird.ai/api/v1/signal/today \
  -H "Authorization: Bearer cb_live_your_key_here"

# or
curl https://tickbird.ai/api/v1/signal/today \
  -H "X-API-Key: cb_live_your_key_here"

Endpoints

GET/api/v1/status

Checks the key and returns the schedule. Call it once when your process starts, so a revoked key fails loudly instead of silently returning nothing.

GET/api/v1/signal/today

The pick for the session. Before your unlock time it returns status "embargo" with no market data — never an error — so you can poll it on a timer without special-casing.

GET/api/v1/signals?limit=90

Published history, most recent first, with the measured open-to-close result of every pick and its performance against the S&P 500. History entries carry the tickers and results; the written reasoning is only on the current session.

Response

Every response carries a schema field. We will publish a new version rather than change this one, so your integration keeps working. The payload below is invented down to the date and the ticker, so that nothing in it can be mistaken for a session we actually published.

{
  "schema": "tickbird.signal.v1",
  "session_date": "2099-07-01",
  "status": "signal",
  "schedule": {
    "private_access_at": "2099-07-01T07:30:00-04:00",
    "free_email_at":     "2099-07-01T08:00:00-04:00",
    "public_at":         "2099-07-01T08:30:00-04:00"
  },
  "pick": {
    "rank": 1,
    "ticker": "EXMPL",
    "company_name": "Example Corp",
    "conviction": "high",
    "consensus_score": 0.83,
    "confidence": 0.79,
    "models_favorable": 3,
    "summary": "…",
    "outcome": null
  },
  "watchlist": [ { "rank": 2, "ticker": "…" } ],
  "catalysts": ["…"],
  "risks": ["…"],
  "content_hash": "9f2c…",
  "disclaimer": "…"
}

content_hash is the SHA-256 of the analysis as it was sealed at 6:30 AM. It is published unchanged on the public site an hour later, which is how you can verify nothing was rewritten after the fact. The bytes it was computed from are served raw at /api/public/signals/{id}/snapshot, so you can recompute it in your own pipeline rather than take our word for it.

Rates and limits

  • 120 requests per minute on the signal endpoint.
  • Poll from 7:29 if you want the earliest possible read; the document flips fromembargo tosignal exactly at 7:30:00 New York.
  • Access follows the subscription, and so does the key. A losing session is credited the same evening: a monthly subscription simply runs one trading day longer, while a daily pass leaves a credit to place on the session of your choice.

Back to the offer