Skip to main content
The alerts endpoints expose two distinct alert types that StratAlerts generates in real time. In-force alerts fire when a setup becomes actionable — price is inside the trigger range on a given timeframe. Simultaneous break alerts fire when multiple index futures break the same direction within a detection window. Both endpoints share the alerts:read scope and support since_id-based incremental polling so you can efficiently retrieve only new events since your last request.

GET /alerts/in-force

Returns in-force setup alerts. An alert is “in force” when price has entered the actionable range of a setup on a given timeframe. Filter by symbol, timeframe, direction, and candle state to narrow the result set. GET https://app.stratalerts.com/api/market/v1/alerts/in-force
Requires scope: alerts:read

Request parameters

symbols
string
Comma-separated list of ticker symbols to filter by (e.g., AAPL,SPY). When omitted, alerts for all symbols are returned.
window_minutes
number
How far back in time (in minutes) to look for alerts. When omitted, the server’s default window applies.
limit
number
Maximum number of alert items to return. Server-side clamping applies.
since_id
number
Return only alerts with an ID greater than this value. Use the highest id from your last response to implement incremental polling without re-fetching previously seen alerts.
timeframe
string
default:"all"
Filter by timeframe. Pass all to return alerts across all timeframes, or a specific code such as D, W, M, Q, Y, 60, 30, 15.
direction
string
default:"all"
Filter by alert direction. Valid values: all, bullish, bearish.
cc
string
default:"all"
Filter by candle state (CC field). Pass all to skip filtering, or a specific candle state string.

Response fields

items
object[]
required
Array of in-force alert objects.

Code examples

curl -G "https://app.stratalerts.com/api/market/v1/alerts/in-force" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "timeframe=D" \
  --data-urlencode "direction=bullish" \
  --data-urlencode "window_minutes=60" \
  --data-urlencode "limit=50"

Example response

{
  "items": [
    {
      "id": 98421,
      "symbol": "AAPL",
      "timeframe": "D",
      "direction": "bullish",
      "shape": "1-2U",
      "price": 214.32,
      "triggered_at": "2026-04-10T13:45:22Z",
      "cc": "2U"
    },
    {
      "id": 98398,
      "symbol": "SPY",
      "timeframe": "D",
      "direction": "bullish",
      "shape": "2-2U",
      "price": 532.10,
      "triggered_at": "2026-04-10T13:31:05Z",
      "cc": "2U"
    }
  ]
}

GET /alerts/simultaneous-breaks

Returns simultaneous break alert events. A simultaneous break fires when multiple tracked index futures (ES, NQ, RTY, YM) all break the same direction within the detection window. Use this endpoint to identify moments when the broad market is moving in a coordinated fashion. GET https://app.stratalerts.com/api/market/v1/alerts/simultaneous-breaks
Requires scope: alerts:read

Request parameters

window_minutes
number
How far back in time (in minutes) to look for simultaneous break events. When omitted, the server’s default window applies.
limit
number
Maximum number of events to return.
since_id
number
Return only events with an ID greater than this value. Use for incremental polling.
timeframe
string
default:"all"
Filter by timeframe. Pass all or a specific timeframe code (e.g., D, W).
direction
string
default:"all"
Filter by break direction. Valid values: all, bullish, bearish.
threshold
string
default:"all"
Filter by the number of participating instruments. Pass all to return all events, or a numeric string (2, 3, 4) to filter by the exact break count.

Response fields

items
object[]
required
Array of simultaneous break alert objects.

Code examples

curl -G "https://app.stratalerts.com/api/market/v1/alerts/simultaneous-breaks" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "direction=bullish" \
  --data-urlencode "threshold=3" \
  --data-urlencode "window_minutes=120"

Example response

{
  "items": [
    {
      "id": 4112,
      "timeframe": "D",
      "direction": "bullish",
      "threshold": 3,
      "symbols": ["ES1!", "NQ1!", "YM1!"],
      "triggered_at": "2026-04-10T13:35:00Z"
    },
    {
      "id": 4089,
      "timeframe": "D",
      "direction": "bullish",
      "threshold": 4,
      "symbols": ["ES1!", "NQ1!", "RTY1!", "YM1!"],
      "triggered_at": "2026-04-10T09:32:15Z"
    }
  ]
}

Error codes

Both alerts endpoints use the same error format.
HTTP statusError codeMeaning
401missing_api_keyNo API key was provided or the key format is invalid.
403inactive_entitlementYour account does not have an active API entitlement.
403missing_scopeYour API key does not have the alerts:read scope.
Error responses use the following shape:
{
  "error": {
    "code": "missing_scope",
    "message": "missing scope"
  }
}
For real-time delivery, use the WebSocket channels alerts.in_force and alerts.simultaneous_breaks instead of polling. The REST endpoints are best suited for backfilling missed events or building an alert history log.