List artifact metadata
const url = 'https://example.com/v1/artifacts?limit=25';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://example.com/v1/artifacts?limit=25' \ --header 'Authorization: Bearer <token>'Cursor-paginated. Metadata rows only (no bytes). Filters: ?ownerRunId=, ?projectId=, ?contentType=, ?tag.<key>=<value> (repeatable — every provided tag must match as AND). Sort order is binding-defined (typically createdAt desc, blobId desc). With authorization on, only artifacts in projects the caller can read are listed.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”1..100. Default 25.
Where the previous page ended: its nextCursor, as it came. A runtime that seals cursors takes one only for the same list, filters and caller, within a day; otherwise 400 bad-input, and the list starts again without it. Absent → first page.
Filter to blobs produced by this RunId.
Filter by exact content-type match.
Filter to the artifacts of one project.
Responses
Section titled “Responses”Page of blob metadata.
object
object
ArtifactId — opaque branded string (a UUID).
Caller-supplied filename or logical name.
MIME type as declared by the uploader. Framework does NOT sniff content-type server-side.
Byte length of the persisted body.
Sha256 of the body, hex-encoded, lowercase (64 chars).
Free-form caller-supplied labels. Filterable on list via ?tag.<key>=<value>.
object
Optional back-ref to the RunId that produced this blob.
The project the artifact belongs to: its owner run’s, else the upload’s projectId, else the tenant’s default project. Reading it needs read there; deleting it, write. Absent on blobs stored before projects were recorded.
Who uploaded it: user:<id> or service_account:<id>.
Examplegenerated
{ "data": [ { "blobId": "example", "tenantId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "contentType": "example", "size": 1, "hash": "example", "tags": { "additionalProperty": "example" }, "ownerRunId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "projectId": "example", "createdBy": "example", "createdAt": "2026-04-15T12:00:00Z" } ], "nextCursor": "example", "hasMore": true}Malformed query parameter (e.g. empty tag. key).
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": {}, "requestId": "example" }}Missing / malformed / expired / revoked bearer token.
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": {}, "requestId": "example" }}