API reference

List families

GET/familiesNo key needed

The 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).

FieldTypeDescription
familiesarray of objectOne entry per family, in the fixed order rising_wedge, falling_wedge, bullish_pennant, bearish_pennant, triangle.
families[].familystring (enum)Family identifier. One of rising_wedge, falling_wedge, bullish_pennant, bearish_pennant, triangle.
families[].labelstringHuman-readable family name.
families[].track_recordTrack recordThe family's 20-year record. Null when no record is sealed in the active manifest.

Example response

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.

StatusCodeMeaningFix
429rate_limitedThe 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.