DocsSignalPoint

SignalPoint API

Structured trade signals, each with its entry, target, stop and recorded exit. Source signals come from public financial content, momentum signals from price movement.

NewLive since September 2026.

Authx-api-key headerBase path/signalsWebSocketREST onlySymbol formatBare ticker (e.g. KO, BTC)

SignalPoint is a partner data add-on, powered by TradeZing: TradeZing builds the signals and answers for their content and method, TickerLayer runs your access, billing and support. Without the add-on, /signals answers 403.

What a signal is

A signal is a directional thesis on one instrument, with entry, target and stop set from live prices at generation time. It is monitored for up to 10 trading days and closes exactly once, with an exit reason and the realised move on the record itself.

Coverage is US-listed stocks and ETFs during the US session, and major USD crypto pairs around the clock. Coverage follows the content: a symbol gets a signal when something is published about it, so there is no fixed symbol list to subscribe to.

Two kinds of signal

Every signal says which kind it is in signal_class, and /signals?signal_class= reads one kind on its own.

  • source: derived from third-party financial content such as news, analyst notes and creator commentary. The outlet, its publication time and the sentiment read from it travel with the signal.
  • momentum: generated by TradeZing's own system from price movement. No third-party content stands behind it, so it carries no source and no source attribution.
GET/signals

List signals

Signals newest first. Filters combine with AND. Every response names the partner under meta.attribution; show that notice wherever you show the signals.

ParameterTypeDescription
tickerstringInstrument symbol, e.g. KO or BTC.
directionstringbuy or sell.
timeframestringintraday, short_term, swing or long_term.
asset_typestringstock or crypto.
signal_classstringsource or momentum. Leave it out for both kinds.
statusstringopen or closed.
since / beforestringISO-8601 window on the generation time. To page history, echo meta.next_before as before unchanged: it carries the id, so signals that share a second are never skipped.
updated_sincestringEverything created, closed or corrected after this point. Pass an ISO-8601 time first, then echo meta.next_updated_since.
limitinteger1 to 100, default 25.
curl -sS "https://api.tickerlayer.com/signals?status=open&limit=3" \
  -H "x-api-key: <YOUR_API_KEY>"

Response 200 OK

JSON
{
  "status": "ok",
  "data": [ { "id": 21141, "ticker": "EL", "...": "..." } ],
  "meta": {
    "count": 3,
    "has_more": true,
    "next_before": "2026-09-03T05:35:16.000Z|21098",
    "attribution": { "provider": "TradeZing", "notice": "Powered by TradeZing" }
  }
}
GET/signals/{id}

Get a signal

One signal by id. 404 when the id is unknown.

ParameterTypeDescription
idreqintegerSignal id. Stable for the life of the record, so it is the right primary key for your store.
curl -sS "https://api.tickerlayer.com/signals/21141" \
  -H "x-api-key: <YOUR_API_KEY>"

Response 200 OK

JSON
{
  "id": 21141,
  "ticker": "EL",
  "asset_type": "stock",
  "signal_class": "source",
  "direction": "buy",
  "timeframe": "short_term",
  "entry_price": 99.1,
  "target_price": 107.41,
  "stop_loss": 94.12,
  "max_gain_pct": 8.38,
  "max_loss_pct": 5.03,
  "reasoning": "Strong fiscal Q4 performance and a sizable pre-market gain support bullish post-earnings sentiment.",
  "source": { "name": "The Globe and Mail", "brand": "theglobeandmail" },
  "sentiment": { "positive": 0.82, "negative": 0.1, "neutral": 0.08 },
  "status": "closed",
  "exit": {
    "reason": "profit_target",
    "change_pct": 8.38,
    "exited_at": "2026-08-26T14:18:02Z",
    "data_quality": "ok"
  },
  "content_published_at": "2026-08-19T16:18:31Z",
  "generated_at": "2026-08-19T16:50:24Z",
  "updated_at": "2026-08-26T14:18:02Z"
}
GET/signals/sources

Sources

The outlets and creators whose content produces source signals. brand is a stable key that pools one outlet's accounts across platforms.

curl -sS "https://api.tickerlayer.com/signals/sources" \
  -H "x-api-key: <YOUR_API_KEY>"

Response 200 OK

JSON
{
  "status": "ok",
  "data": [
    { "brand": "theglobeandmail", "name": "The Globe and Mail", "platforms": ["news"] }
  ]
}

Signal object

Signal fields

ParameterTypeDescription
idintegerStable identifier.
ticker / asset_typestringInstrument symbol, and stock or crypto.
signal_classstringsource or momentum. See the two kinds of signal above.
direction / timeframestringbuy or sell, over intraday, short_term, swing or long_term.
entry_price / target_price / stop_lossnumberPrice levels set from live prices when the signal was generated.
max_gain_pct / max_loss_pctnumberDistance to target and to stop in percent, already adjusted for direction.
atr_percentagenumberAverage true range as a percent of price when the levels were set.
sector / industrystringCompany classification for stocks. Absent for ETFs, crypto and unclassified symbols.
reasoningstringThe thesis in one to three plain sentences.
sourceobjectname and brand of the outlet whose content produced the signal. Source signals only, never on a momentum signal.
sentimentobjectpositive, negative and neutral, summing to 1.
statusstringopen or closed.
exitobjectAbsent while open. reason, change_pct, exited_at and data_quality once closed.
content_published_at / generated_at / updated_atstringISO-8601 times of the underlying content, the signal, and its last change: open, close or a later correction.

exit

ParameterTypeDescription
reasonstringprofit_target, stop_loss, time_limit, expired, news_catalyst or sentiment_shift, as recorded. New reasons can be added; any value means the signal is closed.
change_pctnumberRealised move from entry to exit, sign-adjusted for direction. Absent on expired.
exited_atstringISO-8601 exit time.
data_qualitystringok or suspect. An exit can be flagged suspect after the fact; leave suspect exits out of anything you compute.

Fields can be added over time, so ignore what you do not use, and a field that does not apply to a signal is absent, never null. An exit reason newer than this list arrives as other. change_pct is already adjusted for direction: do not flip its sign for a sell, and do not write zero for an expired signal, which carries no realised move at all.

Delta sync

Do not re-poll history. Keep the newest updated_at you hold, call /signals?updated_since=... once a minute, and follow meta.next_updated_since until has_more is false. A record arrives again on every change: when it opens, when it closes, and when a closed exit is corrected later (flagged suspect, or its price revised). Upsert by id and let the newest updated_at win.

Signals are informational market analytics. They are not investment advice, a recommendation or a solicitation to trade, and recorded outcomes do not indicate future results. Outlet names identify analysed content only.