Zumik
v2 · Native state

Artifacts

Create, retrieve, and delete reusable immutable content units. Artifacts are the addressable building blocks of agent state on the native /v2 surface.

An artifact is an immutable content unit: a system instruction, a tool definition, a schema, a policy, a document, a retrieval chunk. Once created it never changes, so there is deliberately no update endpoint. The public id is opaque (art_...) and never a content hash. See artifacts for the object model.

All requests require a bearer API key. See authentication.

Create an artifact

POST /v2/artifacts

artifact_typestringrequired

One of text_context, tool_bundle_source, response_schema, document, retrieval_chunk, policy, checkpoint, compaction_summary, binary_attachment.

contentstringrequired

The artifact content. Must not be empty.

content_media_typestringdefault: text/plain

IANA media type describing content.

retention_classstringdefault: standard

One of ephemeral, standard, extended. See retention and purge.

metadataobject

Arbitrary JSON you attach for your own bookkeeping. Stored verbatim.

curl https://api.zumik.ai/v2/artifacts \
  -H "Authorization: Bearer $ZUMIK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "artifact_type": "policy",
    "content": "Always run the linter before committing.",
    "retention_class": "standard"
  }'
from zumik import Zumik

zk = Zumik()
artifact = zk.artifacts.create(
    artifact_type="policy",
    content="Always run the linter before committing.",
)
{
  "id": "art_01jy7n3q8v6kzr4w2m9bd5xpfh",
  "object": "artifact",
  "artifact_type": "policy",
  "project_id": "prj_01jy7n0a4c8m2t6v9q3wrxk7bd",
  "content_media_type": "text/plain",
  "created_at": "2026-06-15T16:04:10Z",
  "retention_class": "standard",
  "metadata": {}
}
idstring

Opaque artifact id, prefixed art_.

objectstring

Always artifact.

artifact_typestring

The artifact type, echoed back.

project_idstring

The owning project, prefixed prj_.

content_media_typestring

The media type stored for content.

created_atstring

RFC 3339 creation timestamp.

retention_classstring

The retention class applied.

metadataobject

The metadata you supplied.

The raw content is never returned on retrieve; only the artifact's identity and metadata are. Store your own copy if you need the text back.

Retrieve an artifact

GET /v2/artifacts/{artifact_id}

artifact_idstringpathrequired

The artifact id to fetch.

curl https://api.zumik.ai/v2/artifacts/art_01jy7n3q8v6kzr4w2m9bd5xpfh \
  -H "Authorization: Bearer $ZUMIK_API_KEY"

Returns the same artifact object as create. An id that belongs to another project returns 404 rather than 403, so existence never leaks across a tenant boundary.

Delete an artifact

DELETE /v2/artifacts/{artifact_id}

Delete revokes access immediately. For an auditable, evidence-backed teardown of retained representations, use a purge job instead.

artifact_idstringpathrequired

The artifact id to delete.

curl -X DELETE https://api.zumik.ai/v2/artifacts/art_01jy7n3q8v6kzr4w2m9bd5xpfh \
  -H "Authorization: Bearer $ZUMIK_API_KEY"
{
  "id": "art_01jy7n3q8v6kzr4w2m9bd5xpfh",
  "object": "artifact.deleted",
  "deleted": true
}
idstring

The deleted artifact id.

objectstring

Always artifact.deleted.

deletedboolean

true when the artifact was removed.

Errors

StatusCodeWhen
400invalid_request_errorcontent is empty.
401invalid_api_keyMissing or invalid API key.
404invalid_request_errorThe artifact does not exist in this project.

See the full table on errors. Mutating requests may carry an idempotency key.

On this page