API reference
List families
GET
/familiesNo key neededThe pattern families with their track record
Returns the five pattern families with their 20-year backtest record. Quote each summary sentence whole; never present win_rate_pct without sample_size and avg_loss_pct. data_version is the manifest the records were sealed in. No key is needed; keyless calls are limited per IP.
Authentication
No key needed. Without one the call is limited to 30 requests a minute per IP; with a key it counts against the key's limits instead.
Request
curl "https://api.tradingpal.io/api/v1/families"Response
JSON. The fields this route adds are below; every response also carries the envelope fields (api_version, as_of_session, data_version, source, disclaimer).
| Field | Type | Description |
|---|---|---|
families | array of object | One entry per family, in the fixed order rising_wedge, falling_wedge, bullish_pennant, bearish_pennant, triangle. |
families[].family | string (enum) | Family identifier. One of rising_wedge, falling_wedge, bullish_pennant, bearish_pennant, triangle. |
families[].label | string | Human-readable family name. |
families[].track_record | Track record | The family's 20-year record. Null when no record is sealed in the active manifest. |
Example response
{
"api_version": "v1",
"families": [
{
"family": "falling_wedge",
"label": "Falling wedge",
"track_record": {
"scope": "family",
"family": "falling_wedge",
"symbol": null,
"win_rate_pct": 54,
"sample_size": 1287,
"wins": 695,
"losses": 592,
"avg_win_pct": 8.1,
"avg_loss_pct": -4.2,
"median_win_pct": 6.3,
"avg_trade_pct": 2.4,
"avg_r": 0.41,
"expected_r": 0.41,
"profit_factor": 1.61,
"avg_hold_bars": 11.2,
"backtest_range": [
"2006-09-25",
"2026-09-25"
],
"measured": "Every detector-confirmed breakout … open trades are excluded.",
"summary": "Falling wedge: 1,287 resolved trades from 2006-09-25 to 2026-09-25; 54% reached the target, average win +8.1%, average loss -4.2%, median win +6.3%."
}
}
]
}Errors
Errors are JSON with the Error shape; the fix field says what to do.
| Status | Code | Meaning | Fix |
|---|---|---|---|
| 429 | rate_limited | The key passed 60 requests in a minute or 10,000 in a day, or a keyless caller passed 30 a minute from one IP. | Wait details.retry_after_seconds, then retry. Cache the nightly answers; they do not change until the next session. |