Let an agent read what one of its versions pins
const url = 'https://api.katara.com/katara/v1/orgs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/environments/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/agent-identities/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/content-access';const options = { method: 'POST', headers: { 'Idempotency-Key': 'example', 'X-Katara-CSRF': '1', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"agent_version":{"id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","version":1,"integrity":"example"},"budget_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","expires_at":"2026-04-15T12:00:00Z","expected_agent_epoch":1}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.katara.com/katara/v1/orgs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/environments/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/agent-identities/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/content-access \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Idempotency-Key: example' \ --header 'X-Katara-CSRF: 1' \ --data '{ "agent_version": { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "version": 1, "integrity": "example" }, "budget_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "expires_at": "2026-04-15T12:00:00Z", "expected_agent_epoch": 1 }'Requires an owner or admin who manages the content the version reads and pays for the given budget. Gives the agent’s service account read access to the version’s instructions, schemas and knowledge collections and to the documents those collections hold now, and issues one memory-read grant naming exactly those, on the given budget. Content the agent can already read is left as it is, so repeating the request with the same idempotency key repeats nothing. A request the grant would refuse shares nothing. A document added to a collection later needs another request.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Header Parameters
Section titled “Header Parameters”Browser cookie mutations require value 1 and an allowed Origin. Session bearer clients may omit this header.
Required for cookie-authenticated changes. Use the UUID of the account that loaded the application. A different current cookie account returns account_changed before the handler runs. Session bearer and API key clients do not require this header.
Request Bodyrequired
Section titled “Request Bodyrequired”The published version whose pinned content the agent may read, the budget its memory-read grant draws on, when that grant ends, and the agent identity epoch the caller reviewed.
object
object
Examplegenerated
{ "agent_version": { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "version": 1, "integrity": "example" }, "budget_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "expires_at": "2026-04-15T12:00:00Z", "expected_agent_epoch": 1}Responses
Section titled “Responses”Successful request
object
Examplegenerated
{ "operation_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "resource_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "completed": true}Account_changed: reload and review with the signed-in account.
default
Section titled “default”Request error
object
object
Stable; branch on it. Any operation can answer invalid_request, with param naming the refused field when there is one; human_session_required, when an API key, service account or workload calls an operation only a signed-in person may perform; reauthentication_required, when a person’s sign-in is too old for the operation; permission_denied; route_not_found and method_not_allowed, when no operation matches the path or method; and feature_unavailable, when the operation’s service is not enabled on this deployment.
The request field a refusal is about, such as the agent_id or run_id query parameter; null when the refusal is not about one field.
Example
{ "error": { "action": "sign_in" }}