Skip to main content
Upcoming release — Zylon 1.58These docs are published ahead of release so you can prepare your API integrations. The release image is not yet available. For installations running 1.57, use the 1.57 documentation.
Artifact URLs, content encodings, and response fields change in 1.58. See API migration 1.57 → 1.58 before upgrading your integration.
An artifact is a piece of information or tool you provide to Zylon so it can be used as context for queries and operations. The Workspace API groups artifacts into document artifacts, AI Documents, and other artifacts.

Prerequisites

Artifacts

Artifact request fields

Use POST /api/v1/app/artifact to create any artifact type. Ownership is supplied in the request body rather than the path. When you send x-org, omit organization_id and optionally set project_id; without x-org, Operator and SuperAdmin callers may set organization_id. A project_id always belongs to the selected organization. Set project_id to null (or omit it) to create an organization artifact; this requires an AppAdmin or higher role, and Link artifacts always require a project.
When scopes is omitted, a project artifact receives its project scope and an organization artifact receives its organization scope. An organization artifact cannot be created with project scopes; add those later with the scope operation.

Document artifacts

Document artifacts hold content, links reference existing artifacts, and folders organize artifacts inside an organization or project.

AI Documents

AI Documents run a Zylon workflow across one or more artifacts to produce a structured output.

Other artifacts

Other artifacts provide tools, provider connections, and reusable skills. private_props is used by MCP, SQL database, and provider-backed Integration artifacts. For Integration request shapes, see the Confluence, SharePoint, Filesystem, and Claromentis guides.

Working with artifacts

List artifacts

Use GET /api/v1/app/artifact. With x-org, omit organization_id; use project_id to narrow the result to one project or omit it to list the artifacts visible across the selected organization. Without x-org, Operator and SuperAdmin callers can select an organization with organization_id, or omit both ownership parameters for a cross-organization list of accessible artifacts.
The page response also returns next_cursor and previous_cursor when those cursors are available. has_next_page and has_previous_page are always present; total_count is returned only when total_count=true.

Get an artifact

GET /api/v1/app/artifact/{artifactID} derives the organization and project from the stored artifact.

Update an artifact

Use PUT /api/v1/app/artifact/{artifactID}. The server derives ownership from the existing artifact.
Use parent_id to move an artifact into a folder. Use reset_parent_id: true to remove the current parent and move it to the root of its project or organization tree.

Validate create and update requests

Validate a create payload with POST /api/v1/app/artifact/validate. It accepts the same JSON or multipart body as create. Validate a JSON update payload with POST /api/v1/app/artifact/{artifactID}/validate; file replacement multipart bodies are validated when submitted to the update operation itself. Validation does not persist the change. These validation operations currently support Skill and SqlDatabase artifacts.
The response contains valid, errors, and warnings, plus optional data. Each error or warning contains type, message, and optional params. Skill validation can return parsed name and description values in data. To validate an update against the artifact’s stored configuration:

Add, update, or remove a scope

Use POST /api/v1/app/artifact/{artifactID}/scope for one scope change. The response is the updated artifact with its current scopes.
Set delete to true to remove the matching scope.

Retry an artifact

POST /api/v1/app/artifact/{artifactID}/retry deletes the existing artifact and creates a replacement from a create-artifact payload. The payload’s organization and project must match the original artifact. The response is the replacement ArtifactDTO, which has a new artifact ID.

Delete an artifact

Deleting a parent can delete more than one artifact. The response is therefore always an array of deleted artifact details.

Download raw artifact content

Without a Content-Disposition header, or with Content-Disposition: inline, this endpoint returns a presigned URL string. Send Content-Disposition: attachment to stream the file bytes directly. For an available Link artifact, both modes resolve the original artifact before returning its URL or bytes.

Get parsed content

This endpoint is only available when the artifact has an initialized vector index. In practice, this usually means connector-backed documents or artifacts that have completed indexing.

Sync an artifact

This endpoint is primarily used for integration artifacts (SharePoint, Confluence, Claromentis, or FileSystem).
The request body is empty. The response is an SSE stream emitted by the integration sync process.

Ingest from an integration artifact

Use POST /api/v1/app/artifact/{artifactID}/ingest to start an initial ingestion from an Integration artifact. The JSON body is provider-specific and must include the target project_id. The example below selects a Confluence space; see each integration guide for its complete selection fields. The response is an SSE stream using the same sync event family shown above.

Bulk update artifacts

Use the bulk update endpoint to apply the same update body shape used by PUT /api/v1/app/artifact/{artifactID} to multiple artifacts.

Bulk delete artifacts

Check linked artifacts before modifying

Use this endpoint before changing an artifact when you need to check whether linked artifacts depend on it.

Errors and edge cases

  • Artifact error codes: the error field maps to ingest failures:
If ingest_status is Error, fix the source file and retry or replace the artifact. For integration artifacts, correct the source and sync again.
  • Warnings: ingest_warnings can include values like BigSize, UnprocessableContent, or NoContent to indicate non‑fatal issues.
  • 400: required ownership is missing or invalid, such as sending project_id without selecting an organization, or a synchronization is already in progress.
  • 401/403: token missing, insufficient permissions, or organization_id combined with x-org.
  • 404: artifact, organization, or project not found. A retry payload with ownership that differs from the original artifact is also rejected as not found.
  • For files larger than 250 MB, the backend retains only the artifact record with an UnprocessableContent warning; it does not store the uploaded bytes or start ingestion.