Artifacts
Get Artifact Activity
GET /v1/organizations/analytics/artifacts
Get artifact-creation activity for a given day, broken out by MIME type.
Returns the full (artifact_type, is_shared) cube for the organization; next_page is null except for grouped queries, which paginate. The cube can be broken out per product, per member, or per RBAC group via group_by[], and scoped via filter[]. Requires an API key with the read:analytics scope.
Query parameters
date: stringUTC date in YYYY-MM-DD format. The day to get artifact activity for. Data is typically available with a 1-day lag (varies by query; the error for a too-recent date names the latest available day) and may be revised by a few percent over the following days. No earlier than 2026-01-01.
format: date
filter: optional array of stringFilters as
dimension:value, e.g.filter[]=rbac_group_id:\{id\}. Repeat the param for OR within a dimension and across dimensions for AND. Supported dimensions on this endpoint:artifact_type,is_shared,product,rbac_group_id,user_id. Value forms:artifact_typeis a canonical artifact MIME type (e.g.text/markdown) orother;is_sharedistrueorfalse;productischat,claude_code, orcowork(the surfaces that create artifacts);rbac_group_idtakes the tagged id (rbac_group_..., as emitted in responses and by the spend-limits API) or a bare group UUID, and matches users who held the group at any point during each covered UTC day (time-of-usage attribution);user_idtakes a tagged user id (user_...), as emitted in responses. An unsupported dimension returns 400. At most 100 entries.maxItems: 100
group_by: optional array of "product" or "rbac_group_id" or "user_id"Dimensions to break results out by:
product,user_idand/orrbac_group_id. The ungrouped artifact-type cube is finite and returned in full; grouped queries multiply the cube and paginate vianext_page.producttakes the valueschat,claude_code, orcowork(the surfaces that create artifacts).rbac_group_idattributes a user to every group they held at any point during the requested UTC day, so grouped rows are not an exclusive partition. At most 100 entries.maxItems: 100
"product""rbac_group_id""user_id"
limit: optional numberMaximum rows to return (1-1000, default 100). The ungrouped artifact-type cube is finite and returned in full;
limitis the page size only whengroup_by[]multiplies the cube.minimum: 1, maximum: 1000
page: optional stringOpaque cursor from a previous response's
next_pagefield. Only valid withgroup_by[]— the ungrouped cube is never paginated.
Returns
BetaArtifactUsage objectResponse for GET /v1/organizations/analytics/artifacts.
next_pageis null on ungrouped queries — the artifact-type cube is finite and returned in full. Grouped queries (group_by[]onproduct/user_id/rbac_group_id) multiply the cube and paginate like the other analytics list endpoints.data: array of objectartifact_type: stringCanonical artifact MIME type (e.g.
text/markdown,application/vnd.ant.react,image/svg+xml), orother. Claude Code and Cowork artifacts report astext/html.artifacts_created_count: numberNumber of artifacts created in this bucket on the requested day
distinct_user_count: numberNumber of distinct users who created artifacts in this bucket on the requested day
is_shared: booleanWhether the artifacts in this bucket have ever been shared (a Claude Code / Cowork artifact is shared once anyone beyond its creator may open it: named members, the whole organization, or anyone with the link).
published_artifacts_created_count: numberNumber of those artifacts that have been published (for Claude Code / Cowork artifacts: open to anyone with the link); never exceeds
artifacts_created_countproduct: optional string or nullProduct that produced this row's activity: one of
chat,claude_code,cowork, oroffice_agent(the canonical Cost & Usage product naming; anoffice_agentrow's per-surface breakdown is in itsoffice_metrics). On/pluginsonlycoworkandclaude_codeoccur (the only surfaces with plugin attribution); on/artifactsonlychat,claude_code, andcoworkoccur (the surfaces that create artifacts);/apps/chat/projectsdoes not support the product dimension (aproductentry ingroup_by[]orfilter[]there is rejected). Present only when the request grouped byproduct.rbac_group_id: optional string or nullTagged RBAC group identifier (
rbac_group_...), matching the spend-limits API spelling. Present only when the request grouped byrbac_group_id.rbac_group_name: optional string or nullResolved RBAC group display name, alongside
rbac_group_idwhen name resolution is available. Null if the group has been deleted or its name could not be resolved;rbac_group_idremains the stable key.user_id: optional string or nullTagged user identifier (e.g.
user_...). Present only when the request grouped byuser_id.
next_page: string or nullCursor for the next page of a grouped query; always null for the ungrouped artifact-type cube, which is returned in full.
Example
curl https://api.anthropic.com/v1/organizations/analytics/artifacts \
-H 'anthropic-version: 2023-06-01' \
-H "X-Api-Key: $ANTHROPIC_API_KEY"Response (200)
{
"data": [
{
"artifact_type": "artifact_type",
"artifacts_created_count": 0,
"distinct_user_count": 0,
"is_shared": true,
"published_artifacts_created_count": 0,
"product": "product",
"rbac_group_id": "rbac_group_id",
"rbac_group_name": "rbac_group_name",
"user_id": "user_id"
}
],
"next_page": "next_page"
}Domain types
Beta Artifact Usage
BetaArtifactUsage objectResponse for GET /v1/organizations/analytics/artifacts.
next_pageis null on ungrouped queries — the artifact-type cube is finite and returned in full. Grouped queries (group_by[]onproduct/user_id/rbac_group_id) multiply the cube and paginate like the other analytics list endpoints.data: array of objectartifact_type: stringCanonical artifact MIME type (e.g.
text/markdown,application/vnd.ant.react,image/svg+xml), orother. Claude Code and Cowork artifacts report astext/html.artifacts_created_count: numberNumber of artifacts created in this bucket on the requested day
distinct_user_count: numberNumber of distinct users who created artifacts in this bucket on the requested day
is_shared: booleanWhether the artifacts in this bucket have ever been shared (a Claude Code / Cowork artifact is shared once anyone beyond its creator may open it: named members, the whole organization, or anyone with the link).
published_artifacts_created_count: numberNumber of those artifacts that have been published (for Claude Code / Cowork artifacts: open to anyone with the link); never exceeds
artifacts_created_countproduct: optional string or nullProduct that produced this row's activity: one of
chat,claude_code,cowork, oroffice_agent(the canonical Cost & Usage product naming; anoffice_agentrow's per-surface breakdown is in itsoffice_metrics). On/pluginsonlycoworkandclaude_codeoccur (the only surfaces with plugin attribution); on/artifactsonlychat,claude_code, andcoworkoccur (the surfaces that create artifacts);/apps/chat/projectsdoes not support the product dimension (aproductentry ingroup_by[]orfilter[]there is rejected). Present only when the request grouped byproduct.rbac_group_id: optional string or nullTagged RBAC group identifier (
rbac_group_...), matching the spend-limits API spelling. Present only when the request grouped byrbac_group_id.rbac_group_name: optional string or nullResolved RBAC group display name, alongside
rbac_group_idwhen name resolution is available. Null if the group has been deleted or its name could not be resolved;rbac_group_idremains the stable key.user_id: optional string or nullTagged user identifier (e.g.
user_...). Present only when the request grouped byuser_id.
next_page: string or nullCursor for the next page of a grouped query; always null for the ungrouped artifact-type cube, which is returned in full.