---
title: "Get artifact"
method: GET
path: "/v1/artifacts/{artifact_id}"
---

# Get artifact

`GET /v1/artifacts/{artifact_id}`

## Request

- Base URL: `https://api.turos.app`
- URL: `https://api.turos.app/v1/artifacts/{artifact_id}`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Returns the saved artifact record and its structured manifest when the artifact belongs to the authenticated organization. Use the manifest or export routes when a workflow needs explicit file metadata or an export envelope.

## Path parameters

- `artifact_id` string, required

## Response `200`

Persisted artifact record with its manifest.

- ArtifactMemberResponse
  - `object` 'artifact', required
  - `id` string, required
  - `createdAt` string, date-time, required
  - `livemode` boolean, required
  - `kind` 'markdown_bundle' | 'csv_tablet' | 'json_bundle' | 'duckdb_pack' | 'ownership_compare_bundle' | 'compensation_compare_bundle', required
  - `status` 'pending' | 'ready' | 'failed', required
  - `downloadUrl` string, nullable
  - `provenance` object, required
  - `freshness` FreshnessMetadata: Freshness of the record. For SEC filings, freshness measures the delay between SEC acceptance (`sourcePublishedAt`) and when the record became available in the API — not the age of the document. Statuses: `current` (recently published and available promptly), `archival` (an immutable historical document held in full; its availability delay is not a freshness signal), `degraded`/`stale` (a recently published filing that became available later than the freshness thresholds allow), `fresh` (continuously refreshed datasets recently observed at source), `unknown` (no timestamps). An old immutable filing is never `stale` simply because it was published long ago. `lagMs` is the publish-to-availability delay in milliseconds.
    - `status` 'fresh' | 'current' | 'archival' | 'stale' | 'degraded' | 'unknown', required
    - `asOf` string, required
    - `sourcePublishedAt` string, nullable
    - `lagMs` integer, nullable
  - `materialization` MaterializationMetadata
    - `parserVersion` string, required
    - `materializationVersion` string, required
  - `validation` ValidationStatus
    - `status` 'validated' | 'unvalidated' | 'degraded', required
    - `confidence` 'high' | 'medium' | 'low', nullable
    - `validatedAt` string, nullable
    - `validationPipeline` string, nullable
    - `exceptions` string[]
  - `bundle` object
  - `manifest` ArtifactManifest, required
    - `object` 'artifact_manifest', required
    - `id` string, required
    - `artifactId` string, required
    - `kind` string, required
    - `status` string, required
    - `filename` string, required
    - `contentType` string, required
    - `storageMode` 'local' | 'r2', required
    - `objectKey` string, nullable, required
    - `byteLength` integer, required
    - `lineCount` integer, required
    - `checksumSha1` string, required
    - `filing` object, nullable, required
    - `section` object, nullable, required
    - `exportedFormats` string[], required
    - `createdAt` string, date-time, required
    - `entity` object, nullable
    - `links` object
    - `citation` object

## Other responses

- `default`: Contract-aware error response

---

[API](https://skmtc.dev/turos/apis/turos-api.md) · [All operations](https://skmtc.dev/turos/apis/turos-api/llms.txt) · [OpenAPI document](https://skmtc.dev/turos/apis/turos-api/revisions/a68d3ec80a56?raw)
