Get Artifact

Fetch a single artifact by ID.

Poll this endpoint while an artifact is queued or processing. Once status reaches succeeded, mint signed download URLs via POST /artifacts/:id/signed-urls. See the Artifacts overview for the full lifecycle and the succeeded/completed naming convention.

Use cases

  • Poll the artifact's status after a 202 from POST /artifacts. Use the retryAfterSeconds hint from the create response as a polling cadence.
  • Inspect row_counts, size_bytes, and sha256 after the artifact completes — handy for audit logs or to drive a UI summary.
  • Read error_message after a failed artifact for triage.

Path parameters

ParamTypeDescription
iduuidArtifact ID. Must be visible to your organization.

Response schema (data)

FieldTypeDescription
type"artifact"Always "artifact".
iduuidArtifact ID.
links.selfstringURL of this artifact.

attributes

FieldTypeDescription
organization_iduuidOwning organization.
typeenumrelational_full.
formatenumgeoparquet.
statusenumqueued | processing | succeeded | failed | cancelled | purged.
error_codestring | nullStable, machine-readable failure code (e.g. artifact_too_large, internal_error). null unless status: "failed". Match on this rather than error_message.
error_messagestring | nullHuman-readable failure summary, derived from error_code. Populated when status: "failed". Deliberately generic — the raw exception text is never exposed.
storage_objectsarrayEmpty until the artifact reaches completed. See storage_objects[] below.
partitioningobject | nullnull for unpartitioned bundles.
size_bytesint | nullTotal bytes across storage_objects. Populated on terminal success.
sha256string | nullDeterministic catalogue hash across all storage_objects. Populated on terminal success.
row_countsobject | nullPer-table row counts (e.g. { "locations": 142, "plots": 138 }). Populated on terminal success.
created_atISO 8601Row creation timestamp.
updated_atISO 8601 | nullMost recent status change.
started_atISO 8601 | nullWhen the generation task began. Null while queued.
completed_atISO 8601 | nullTerminal timestamp — set on succeeded, failed, or cancelled.
purged_atISO 8601 | nullWhen retention deleted the artifact's files and the record became a tombstone. null unless status: "purged".
download_linksobjectPer-artifact tally of persistent download links: { active, expired, revoked, purged }. Mutually exclusive, and they sum to every link ever minted for the artifact. Each link counts under the first thing that ended its life (purged → revoked → expired → active), so a revoked link stays in revoked after its expiry passes. An artifact is only ever aged out while active is 0.
action_requiredenum | nullregenerate on a purged artifact — request a new one with the same filters. null otherwise. Failed artifacts are not flagged here; retry those under the same Idempotency-Key.

storage_objects[]

FieldTypeDescription
relative_pathstringStable file identifier within the artifact. Not a URL — pass the artifact's id to Mint Signed URLs to obtain a downloadable URL.
size_bytesintFile size in bytes.
sha256stringSHA-256 of the file contents.

partitioning

Reserved for hive-partitioned artifacts; always null today. When populated:

FieldTypeDescription
schemestringPartitioning scheme (e.g. "hive").
keysstring[]Ordered partition key names.

Status codes

  • 200 — Success.
  • 400 — Invalid id (not a UUID).
  • 401 — Missing or invalid API key.
  • 403 — Caller lacks the artifacts:read scope.
  • 404 — Artifact does not exist or is not visible to your organization. The two cases return the same response so an out-of-scope ID cannot be used to discover other orgs' artifact IDs.

Required scope: artifacts:read