Skip to main content
POST
Issue an agent authorization mandate

Authorizations

Authorization
string
header
required

Dashboard JWT token from Clerk

Body

application/json
id
string
required

Opaque, caller-supplied mandate id.

Required string length: 1 - 128
agentId
string
required

The agent authorized to act (an Orbit agent id or an external A2A/MCP identity).

Required string length: 1 - 128
principalId
string
required

The principal granting consent.

Required string length: 1 - 128
maxInvocations
integer
required

Cumulative action ceiling (a positive integer).

Required range: x >= 1
allowedActions
null | string[]

Action allowlist. Omit or send empty for "any action".

Maximum array length: 256
Required string length: 1 - 256
allowedTools
null | string[]

Tool allowlist. Omit or send empty for "any tool".

Maximum array length: 256
Required string length: 1 - 256
allowedDataCategories
null | string[]

Data-category allowlist. Omit or send empty for "any category".

Maximum array length: 256
Required string length: 1 - 256
expiresAt
null | integer

Epoch-ms expiry (must be in the future), or null for no expiry.

Response

The issued mandate snapshot, carrying its consent digest.

data
object

A scoped, revocable, action-capped authorization an AI agent acts under — a serializable snapshot the caller stores and round-trips in each request body. The scope fields (principal, agent, allowlists, invocation cap, expiry, ancestry) are immutable after issue and bound by consentDigest; only status, invocationCount, updatedAt, and revokedAt advance over the mandate's life. A delegated (child) mandate additionally carries a parentMandateId + parentDigest pointer to the parent it was attenuated from.

meta
object