Skip to content

Get an artifact ​

GET/api/v2/workspaces/{slug}/artifacts/{artifact_id}/

Read an artifact's metadata together with the HTML of its current version.

Requires the Applets feature and workspace admin or owner — see Artifacts overview. Unlike dashboards in the app, artifacts are not readable by ordinary members.

Path Parameters ​

slug:requiredstring

The workspace slug. It appears in your Plane URLs — in https://app.plane.so/my-team/projects/, the slug is my-team.

artifact_id:requiredstring (uuid)

The artifact to read. UUID only — this route has no human-readable key.

Only the current version is readable

The response carries the HTML of current_version. Earlier versions are retained server-side but v2 exposes no way to read them, and there is no ?version= parameter. If you need version history, keep your own copy as you append.

Scopes ​

workspaces.artifacts:read

Errors ​

StatusCodeCause
401unauthorizedMissing or invalid credentials.
402payment_requiredThe Applets feature isn't enabled on your plan.
403forbiddenYou are not a workspace admin or owner, or your token lacks the scope.
404not_foundNo such artifact in this workspace, or the workspace is outside your tenant.
406not_acceptableThe Accept header asks for a representation the API can't produce.
429rate_limitedThrottled. Honor the Retry-After header before retrying.

An artifact id that belongs to a different workspace returns 404, not 403 — consistent with the rest of v2, which never leaks the existence of a resource you cannot see.

Get an artifact
bash
curl -X GET \
  "https://api.plane.so/api/v2/workspaces/my-team/artifacts/b7e42a19-3c5d-4f80-9a26-8d1c0f4e7b53/" \
  -H "X-Api-Key: $PLANE_API_KEY"
Response200
json
{
  "id": "b7e42a19-3c5d-4f80-9a26-8d1c0f4e7b53",
  "name": "Q1 velocity by squad",
  "description": "Throughput and cycle time, split by squad.",
  "current_version": 3,
  "data_mode": "snapshot",
  "html": "<section><h1>Q1 velocity by squad</h1>…</section>"
}
Response404
json
{
  "type": "not_found",
  "code": "not_found",
  "detail": "Artifact not found."
}

What this response does not include ​

The detail read is not the same shape as the create response. It adds description and html, and it omits is_published and anchor — so this endpoint cannot tell you whether an artifact is published, or what its anchor is. Those two fields come back only from create and publish. Store the anchor when you publish rather than expecting to read it back later.