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.
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"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.
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/metaReturns API status, supported symbols, timeframe aliases, rate limits, and included fields.
GET /v1/snapshotReturns current bar-state snapshots. A single symbol and single timeframe returns one update object. Multiple symbols or timeframes return a snapshot batch.
| Parameter | Type | Status | Notes |
|---|---|---|---|
| symbols | string | Optional | Comma-separated symbols. Use symbol for a single symbol. Defaults to SPY. |
| tf | string | Optional | Comma-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
{
"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
}
}
}
}| Field | Meaning |
|---|---|
| cc | Current bar state. Examples: 1u, 1d, 2u, 2d, 3u, 3d, F2u, F2d. |
| c1, c2 | Prior bar states used for two-bar and three-bar combinations. |
| ao | Above-open flag. 1 means the current close is above the current open. 0 means it is not. |
| open_sign | Display marker derived from ao. > means above open. < means not above open. |
| display | Human-readable compact state string, such as 1<, 2u>, f2u<, or 3d<. |
| combo_2bar, combo_3bar | Recent state sequences for pattern analysis. |
| took_c1h, took_c1l | Whether the current bar broke the prior bar high or low. |
| is_failed | True when the current 2 bar is a failed break by the selected rule. |
| continuity | Timeframe continuity object with requested order, per-timeframe displays, and full bull or bear continuity when all signs align. |
| tfc | Timeframe 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
| Code | Name | Meaning |
|---|---|---|
| 400 | Bad request | Unsupported symbol, empty symbols, empty timeframes, or malformed parameters. |
| 401 | Unauthorized | Missing, expired, or invalid API key. |
| 404 | Not found | The requested route does not exist. |
| 429 | Rate limited | The 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.