ALPHA TIER HISTORICAL RESEARCH PACKS

Historical Research Pack Artifact API

Download one file of a pack. Only files listed in the manifest are served, and each is checked against its recorded byte length and SHA-256 before it is sent. The response carries the hash as its ETag, so you can verify the bytes you received. Background: research packs.

Host
historical
Tier
Alpha / Enterprise
at
Optional
Format
File download

Endpoint

GET/v1/research/packs/{packId}/artifacts/{name}
Host: historical.flashalpha.comAuth: X-Api-KeyTier: Alpha or Enterprise

Parameters

NameInRequiredDescription
packIdpathyesPack ID from the catalog
namepathyesAn artifact name from the manifest, e.g. trades.csv
atquerynoET wall-clock instant; the file is served only if its pack was available then

Request

curl -H "X-Api-Key: YOUR_API_KEY" -o trades.csv \
  "https://historical.flashalpha.com/v1/research/packs/income-spy-qqq-2024-2025-v1-db139753fe8b/artifacts/trades.csv"
import hashlib, requests

BASE = "https://historical.flashalpha.com/v1/research/packs"
PACK = "income-spy-qqq-2024-2025-v1-db139753fe8b"
H = {"X-Api-Key": "YOUR_API_KEY"}

manifest = requests.get(f"{BASE}/{PACK}", headers=H).json()
for a in manifest["artifacts"]:
    body = requests.get(f"{BASE}/{PACK}/artifacts/{a['name']}", headers=H).content
    assert len(body) == a["bytes"] and hashlib.sha256(body).hexdigest() == a["sha256"], a["name"]
    open(a["name"], "wb").write(body)
print("all artifacts verified")

Response

HTTP/1.1 200 OK
Content-Type: text/csv
Content-Disposition: attachment; filename=trades.csv
ETag: "6874a236528f..."   (the file's SHA-256)
X-Content-Type-Options: nosniff

<file bytes>
FieldDescription
BodyThe file exactly as recorded in the manifest
Content-TypeThe artifact's media_type
Content-DispositionAlways an attachment named after the artifact, including report.html
ETagThe artifact's SHA-256, lowercase hex

Errors

StatuserrorWhen
400invalid_research_artifactPack ID or file name contains characters outside the allowed set
400invalid_atat is not a valid ET timestamp or date
401-Missing or invalid X-Api-Key
403tier_restrictedPlan below Alpha
404research_artifact_not_foundThe name is not in the manifest, or the pack was not available at at
503research_artifact_integrity_failedThe stored file no longer matches its manifest hash; nothing is served

Files in the first pack

ArtifactMedia typeBytes
accounting-audit.jsonapplication/json27,854
benchmark-curves.csvtext/csv88,053
cash-ledger.csvtext/csv326,096
equity-2025.pngimage/png375,221
equity-2025.svgimage/svg+xml164,650
equity-curves.csvtext/csv2,550,883
independent-audit.jsonapplication/json240
independent-checks.csvtext/csv1,663,683
input-hashes.jsonapplication/json892
methodology.jsonapplication/json1,721
report.htmltext/html533,931
reproduce.zipapplication/zip2,178,022
reproduction.jsonapplication/json437
summary.jsonapplication/json145,034
trades.csvtext/csv190,862

Start with report.html (a standalone report; download the related files with it for local browsing) or summary.json. reproduce.zip holds the frozen captured inputs, model code and commands to regenerate the results offline without a database or credentials.