List data blocks (latest version of each)
const url = 'https://example.com/v1/blocks?limit=25&kind=prompt&scopeKind=tenant';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/blocks?limit=25&kind=prompt&scopeKind=tenant' \ --header 'Authorization: Bearer <token>'Cursor-paginated. Only the blocks of projects the caller can read. ?kind= narrows to prompts or settings, ?name= is a prefix match on the id, and ?scopeKind= + ?scopeId= narrow to a project or an org, as the other lists do.
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.
prompt: a Liquid template an agent renders as its instructions. settings: a JSON object tools and templates read.
Only blocks of this kind: prompt or settings.
Prefix match on the block id.
Discriminator for the ?scopeKind + ?scopeId + ?inherit triplet. Tenant carries no id (implicit from session); org/project require scopeId.
Optional scope discriminator. If absent, no scope filter is applied.
Required IF scopeKind is org or project. MUST be absent if scopeKind=tenant (tenant is implicit from the session). Malformed combinations return 400 scope-invalid.
Responses
Section titled “Responses”Page of blocks.
object
A data block version: a prompt or settings, versioned like a tool (immutable versions, soft unregister). An agent version pins the block versions it uses when it is published. Belongs to one project and is authorized through it.
object
Dotted lowercase id (e.g. acme.intake-prompt).
prompt: a Liquid template an agent renders as its instructions. settings: a JSON object tools and templates read.
object
Liquid, rendered as an agent’s instructions are (same parameters and auto-injected variables).
object
Default value used when the caller omits this parameter.
object
What tools read (ToolContext.settings[<block id>]) and templates read (settings.<block id>.<key>).
object
JSON Schema (draft 2020-12) the values must satisfy. A later version’s values must satisfy the latest version’s schema too.
object
Present only on an unregistered version; agent versions that pin it still read it.
Example
{ "data": [ { "kind": "prompt", "content": { "parameters": [ { "type": "string" } ] } } ]}Malformed query parameter: an unknown kind, or scope-invalid for a malformed scope.
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" }}