Signals API · v1

Signals API documentation

Read the same algorithmic trades the dashboard shows, from your own code. One GET endpoint, JSON out, one key per account. Included with the Pro plan.

  • REST over HTTPS
  • Bearer API key
  • Daily trend and intraday flips
  • Every market we cover

Authentication

Every request carries your API key as a bearer token. Generate the key on the API page in the app (left menu). It is shown once: we store only a hash, so a lost key cannot be recovered, only replaced.

HTTP header
Authorization: Bearer ttp_live_…
  • One live key per account. Generating a new key revokes the old one immediately.
  • Pro plan required. Calls need an active Pro subscription; revoking a key works on any plan.
  • Keep it server-side. Never ship the key in a browser, a mobile app or a public repository.

Endpoint

One endpoint returns the current daily trend and the latest intraday flip for every market we cover, or for the symbols you name.

GETJSON
GET https://app.trendtrader.pro/api/v1/signals

The API answers on app.trendtrader.pro only. Any other hostname answers 404.

Parameters

Both query parameters are optional. Omit them to receive the whole feed.

ParameterMeaning
symbol Comma-separated list of up to 50 symbols, for example EUR/USD,BTC/USD,AAPL. Omit it for the whole universe.
since ISO-8601: a date (2026-10-08) or a datetime with a zone (2026-10-08T00:00:00Z). Daily rows keep trends whose fired_at date is on or after the calendar date you wrote (the 2026-10-08 part, in your own zone; it is never shifted to UTC). Intraday rows keep flips at or after the exact timestamp. Daily flips are detected hours after the bar closes, so poll daily with a one-day overlap. Daily between and awaiting rows have no fired_at and are left out whenever since is set.

Examples

Whole feed

curl
curl -s -H "Authorization: Bearer $TTP_KEY" \
  https://app.trendtrader.pro/api/v1/signals

Two symbols, flips since a timestamp

curl
curl -s -H "Authorization: Bearer $TTP_KEY" \
  "https://app.trendtrader.pro/api/v1/signals?symbol=EUR/USD,BTC/USD&since=2026-10-08T00:00:00Z"

Response

A JSON object with the time it was generated, your plan, the row count, a daily list, an intraday list and the disclaimer.

200 OKapplication/json
{
  "generated_at": "2026-10-09T05:12:40.118Z",
  "plan": "pro",
  "count": 2,
  "daily": [
    {
      "symbol": "EUR/USD",
      "asset_class": "Forex",
      "timeframe": "daily",
      "state": "buy",
      "trend_age_days": 4,
      "fired_at": "2026-10-03",
      "as_of": "2026-10-07"
    }
  ],
  "intraday": [
    {
      "symbol": "EUR/USD",
      "asset_class": "Forex",
      "timeframe": "intraday",
      "state": "sell",
      "fired_at": "2026-10-08T13:45:00.000Z"
    }
  ],
  "disclaimer": "TrendTrader Pro signals are educational information, not financial advice. Trading involves risk; you are responsible for your own decisions."
}

Fields

asset_class
One of Forex, Crypto, Stocks, ETFs, Indices, Commodities.
state
buy, sell, between (the dashboard's "Between Zones" row) or awaiting ("Awaiting first signal"). A row is the market's current state, however old; use fired_at for its age. between and awaiting rows carry no trade: their fired_at is null and trend_age_days is 0.
trend_age_days
Daily rows only. The number shown beside the daily row in the dashboard: the age of the trend structure the row is anchored to. It is not the days since fired_at.
fired_at
Daily: the date the current trend fired, or null for between and awaiting rows. Intraday: the exact flip time.
as_of
Daily rows only. The last daily bar the row was evaluated on.
intraday
The most recent intraday flip per market on record, with its real fired_at. The in-app intraday feed additionally hides markets with no fresh intraday data.

Status codes

CodeMeaning
200Success. The body is the JSON object above.
400Bad symbol or since value.
401Missing, malformed, unknown or revoked key.
403The account has no active Pro subscription.
404Wrong hostname. The API answers on app.trendtrader.pro only.
500A read on our side failed. Retry with backoff.
503The service is briefly unavailable. Retry with backoff.

Limits and terms

  • Caching. The unfiltered feed is cached at our edge for 60 seconds; polling faster than that returns the same data. Filtered requests are not cached.
  • No client caching. Responses carry Cache-Control: no-store. Never cache them yourself.
  • Polling cadence. Daily flips land hours after the daily bar closes; one call a day with a one-day since overlap keeps you current. The feed is each market's current state, not an event log: a flip replaced before your next call is not kept. Intraday flips arrive through the session, so poll at the 60-second cadence or slower.

Your own use only. The feed is for your own trading decisions and your own tools. Reselling, rebroadcasting or publishing it is not permitted. See the Terms of Service.

Disclaimer

TrendTrader Pro signals are educational information, not financial advice. Trading involves risk; you are responsible for your own decisions. The full disclaimer applies to every response.

Questions about the API? Write to [email protected].