get_artifact — that fetches artifact metadata and a download URI by artifact_id. Artifacts are the durable outputs of runs: every backtest produces an 8-file bundle, and every skill run produces its own artifacts. Each file is content-hashed with SHA-256 so reproducibility can be verified independently.
get_artifact
Fetch artifact metadata and a download URI by artifact_id. The URI is a short-lived, signed URL — it expires after a few minutes. Fetch the content promptly after calling get_artifact.
Arguments
Return value
Example call
Example response
The 8-file backtest artifact bundle
Everybacktest_run produces a bundle of exactly 8 files. Together they form a complete, reproducible record of the backtest. The bundle is stored as a group; the artifact_bundle returned by backtest_run points to all 8.
Why 8 files
The bundle is designed so that a third party with no access to Ithaca can reproduce the backtest. Give them the bundle and they have everything: the strategy (in
summary.json), the data (in data_manifest.json), the environment (in environment_lock.json), and the expected output (in metrics.json and equity_curve.json).- Machine readability. The 7 JSON files are structured and parseable. Tools can diff two bundles field-by-field.
- Human readability.
report.htmlrenders the same information as a styled report with charts — no JSON parsing required. - Selective access. A reviewer can grab just
metrics.jsonandreport.htmlwithout downloading the full equity curve or position history.
SHA-256 content hashing
Every file in the bundle has a SHA-256 content hash. The hash is computed over the exact bytes stored in the bundle, not a normalized form. This means:- Reproducibility check. If you re-run a backtest with the same spec, range, engine version, and data hashes, the output file hashes will match. If they don’t, something changed — and the
data_manifest.jsonandenvironment_lock.jsontell you what. - Tamper detection. The hashes are stored on the artifact record in the database, separate from the file storage. If a file is modified in storage, the hash won’t match the record.
- Bundle integrity. The
artifact_bundle.content_hashreturned bybacktest_runis a hash over the concatenation of all 8 file hashes. This single hash verifies the entire bundle.
Fetching the full bundle
To fetch all 8 files, callget_run first to get the artifacts array, then call get_artifact for each:
The signed URIs returned by
get_artifact expire after a few minutes. If you need long-term access, download the content and store it yourself. The content_hash lets you verify that your stored copy hasn’t drifted.Related
- Backtest tools — the tool that produces the bundle
- Run management tools —
get_runreturns theartifactsarray - Strategy artifacts — the strategy-level view of the bundle