API documentation

Price Action API Docs

Start with the current API contract. The API returns objective bar state by symbol and timeframe, then adds open direction, continuity fields, and cross-index break context for agents, dashboards, and research notebooks.

Last updated June 10, 2026

Access status

Free API keys, issued instantly.

Symbols

SPY, QQQ, DIA, IWM

Primary route

GET /v1/snapshot

These examples show the request and response shape. Use the API key issued to your account at sign-up.

Quickstart

Set your base URL and API key, then call metadata first and a snapshot second. Metadata tells you current symbol coverage, timeframe aliases, limits, and included fields.

curl
export PRICE_ACTION_API_BASE_URL="https://priceactionapi.com"
export PRICE_ACTION_API_KEY="pa_live_xxx"

curl "$PRICE_ACTION_API_BASE_URL/v1/meta" \
  -H "Authorization: Bearer $PRICE_ACTION_API_KEY"

curl "$PRICE_ACTION_API_BASE_URL/v1/snapshot?symbols=SPY,QQQ,DIA,IWM&tf=15m" \
  -H "Authorization: Bearer $PRICE_ACTION_API_KEY"
Your API key and the active base URL are available in your dashboard after sign-up. Keep API keys server-side and out of client-side code.

Authentication

API calls use a bearer token in the Authorization header. Keys are issued instantly at sign-up. Keep one key per integration so a compromised key can be revoked without interrupting every workflow.

JavaScript fetch
const response = await fetch(
  `${process.env.PRICE_ACTION_API_BASE_URL}/v1/snapshot?symbols=SPY,QQQ,DIA,IWM&tf=15m`,
  {
    headers: {
      Authorization: `Bearer ${process.env.PRICE_ACTION_API_KEY}`,
    },
  }
);

const snapshot = await response.json();

Endpoints

GET /v1/meta

Returns API status, supported symbols, timeframe aliases, rate limits, and included fields.

GET /v1/snapshot

Returns current bar-state snapshots. A single symbol and single timeframe returns one update object. Multiple symbols or timeframes return a snapshot batch.

ParameterTypeStatusNotes
symbolsstringOptionalComma-separated symbols. Use symbol for a single symbol. Defaults to SPY.
tfstringOptionalComma-separated timeframes. timeframes and timeframe are also accepted. Defaults to 15m.

Supported live timeframes are M, W, D, H1, 30m, 15m, and 5m. Aliases such as monthly, weekly, daily, 60, 30, 15, and 5 are normalized before the response is built.

Response Fields

Batch snapshot response
{
  "type": "bar_state.snapshot_batch",
  "symbols": ["SPY", "QQQ"],
  "timeframes": ["30m", "15m"],
  "timestamp": "2026-05-29T10:15:00-04:00",
  "source": "csv_replay",
  "provisional": false,
  "events": {
    "SPY": {
      "type": "bar_state.update",
      "symbol": "SPY",
      "timeframes": {
        "30m": {
          "cc": "2u",
          "c1": "1d",
          "ao": 1,
          "open_sign": ">",
          "display": "2u>",
          "took_c1h": true,
          "took_c1l": false,
          "is_failed": false
        },
        "15m": {
          "cc": "1d",
          "c1": "2u",
          "ao": 0,
          "open_sign": "<",
          "display": "1<",
          "took_c1h": false,
          "took_c1l": false,
          "is_failed": false
        }
      },
      "continuity": {
        "display": "30m:2u> 15m:1<",
        "full_continuity": "none"
      },
      "tfc": {
        "timeframes": ["30m", "15m"],
        "label": "TFC[30m,15m]",
        "state": "mixed",
        "display": "TFC[30m,15m]=mixed",
        "valid": 2,
        "above_open": 1,
        "below_open": 1,
        "net_direction": 0
      }
    }
  }
}
FieldMeaning
ccCurrent bar state. Examples: 1u, 1d, 2u, 2d, 3u, 3d, F2u, F2d.
c1, c2Prior bar states used for two-bar and three-bar combinations.
aoAbove-open flag. 1 means the current close is above the current open. 0 means it is not.
open_signDisplay marker derived from ao. > means above open. < means not above open.
displayHuman-readable compact state string, such as 1<, 2u>, f2u<, or 3d<.
combo_2bar, combo_3barRecent state sequences for pattern analysis.
took_c1h, took_c1lWhether the current bar broke the prior bar high or low.
is_failedTrue when the current 2 bar is a failed break by the selected rule.
continuityTimeframe continuity object with requested order, per-timeframe displays, and full bull or bear continuity when all signs align.
tfcTimeframe continuity summary. It names the scoped timeframe set, counts above-open and below-open timeframes, and reports bull, bear, or mixed.

For display notation, read the base state first. The u and d suffixes indicate up or down direction when the state needs that distinction. Inside bars display as 1> or 1<. The > and < markers indicate whether the current close is above the current open. Lowercase f marks a live failed break. Uppercase F marks a closed failed break. Outside bars include the open marker, as in 3u> or 3d<, even though it repeats the 3-bar direction.

Simultaneous Breaks

A simultaneous break, also called a cross-index break, means all supported index symbols are a 2 on the same timeframe in the same direction. For example, a 15m simultaneous break requires SPY, QQQ, DIA, and IWM to all be 2u on the 15m timeframe, or all be 2d on the 15m timeframe.

Same timeframe

Compare one timeframe at a time, such as 15m, 30m, or D.

Same direction

All symbols must break up as 2u or all must break down as 2d. Mixed directions do not qualify.

No failed 2s

Failed 2s do not count. A symbol can fail after the break and later qualify again if it re-breaks as a valid 2.

Example

A 15m simultaneous break up means SPY, QQQ, DIA, and IWM all read 2u on the 15m timeframe. A 15m simultaneous break down means all four read 2d on the 15m timeframe.

Errors And Limits

CodeNameMeaning
400Bad requestUnsupported symbol, empty symbols, empty timeframes, or malformed parameters.
401UnauthorizedMissing, expired, or invalid API key.
404Not foundThe requested route does not exist.
429Rate limitedThe request exceeded the access limit for the key.

API limits

The current free key limit is 10 signals per minute and 1000 signals per day. Higher limits, expanded history, and broader symbol coverage may require a paid plan later.

FAQ

What is Price Action API?
Price Action API is a machine-readable HTTP API that classifies every live bar into objective market-structure and trend context for trading bots, agents, and dashboards.
What is TheStrat?
TheStrat is Rob Smith's bar-state framework for reading how each bar relates to the prior bar.
What does Timeframe Continuity mean?
Timeframe Continuity, or TFC, compares whether the requested timeframes are above or below each bar's open and reports bull, bear, or mixed alignment.
Which symbols are supported first?
The first supported symbols are SPY, QQQ, DIA, and IWM.
Is Price Action API free?
Yes. Free API keys are issued instantly at sign-up and include 10 requests per minute and 1,000 per day. Premium feeds, expanded history, and higher-volume access may require a paid plan later.