ALPHA TIER HISTORICAL RESEARCH PACKS

Historical Research Pack Catalog API

List the versioned research packs available for a symbol and strategy. Each entry is the pack's full manifest: identity, period, publication timestamps, limitations and every downloadable artifact with its SHA-256. Pass at to see only research that existed at that instant. Background: research packs.

Host
historical
Tier
Alpha / Enterprise
at
Optional
Format
JSON (REST)

Endpoint

GET/v1/research/packs
Host: historical.flashalpha.comAuth: X-Api-KeyTier: Alpha or Enterprise

Parameters

NameInRequiredDescription
symbolquerynoUnderlying, case-insensitive (SPY, QQQ)
strategyquerynocovered_call or cash_secured_put, exact match
atquerynoET wall-clock instant (yyyy-MM-ddTHH:mm:ss or yyyy-MM-dd). Only packs whose publication, definition-freeze and data-cutoff times are all at or before it are listed.

Request

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://historical.flashalpha.com/v1/research/packs?symbol=SPY&strategy=covered_call"
import requests

r = requests.get(
    "https://historical.flashalpha.com/v1/research/packs",
    params={"symbol": "SPY", "strategy": "covered_call"},
    headers={"X-Api-Key": "YOUR_API_KEY"},
)
for pack in r.json()["packs"]:
    print(pack["pack_id"], pack["period_start"], pack["period_end"], pack["status"])

Response

{
  "evidence_mode": "retrospective_model_simulation",
  "as_of_utc": null,
  "count": 1,
  "packs": [
    {
      "schema_version": 1,
      "pack_id": "income-spy-qqq-2024-2025-v1-db139753fe8b",
      "status": "retrospective_pilot_partial_history_coverage",
      "research_type": "income_strategy_backtest",
      "strategy_version": "income-monthly-v1",
      "strategies": ["covered_call", "cash_secured_put"],
      "symbols": ["SPY", "QQQ"],
      "period_start": "2024-01-02",
      "period_end": "2025-12-31",
      "published_at_utc": "2026-10-16T09:23:45.160415Z",
      "definition_frozen_at_utc": "2026-10-16T08:27:23.633272+00:00",
      "data_cutoff_utc": "2025-12-31T21:00:00Z",
      "applicability": "strategy_family_research_not_a_backtest_of_this_candidate",
      "artifacts": [
        { "name": "accounting-audit.json", "media_type": "application/json", "sha256": "9b97c662a284...", "bytes": 27854 },
        ...
      ],
      "summary": [ ... ],
      "limitations": [ ... ]
    }
  ]
}
FieldDescription
evidence_modeAlways retrospective_model_simulation: packs are offline simulations, not live or as-served results
as_of_utcThe at cutoff converted to UTC, or null for the retrospective catalog
countNumber of packs returned; 0 when nothing matches or no catalog is configured
packs[]One manifest per pack, the same document GET /v1/research/packs/{packId} returns

Errors

StatuserrorWhen
400invalid_atat is not a valid ET timestamp or date
401-Missing or invalid X-Api-Key
403tier_restrictedPlan below Alpha (required_plan: Alpha)

Retrospective versus as-of

Without at the catalog is retrospective: it lists every published pack, including research built after the dates it studies. That is the right view for reading the research, but it is not evidence a trader could have used at the time. With at, a pack is listed only once all three of its timestamps have passed. The first pack was published on 2026-10-16, so a request with at=2026-10-01 returns count: 0 even though its data ends in 2025.

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://historical.flashalpha.com/v1/research/packs?symbol=SPY&strategy=covered_call&at=2026-10-01T12:00:00"