A mandate is a scoped spending authorization attached to a specific agent. It defines the total budget, the per-transaction ceiling, which merchant domains and resource categories are permitted, and an expiry time. Mandate’s policy engine evaluates every payment attempt against these constraints before authorizing a charge. You can revoke a mandate at any point to immediately halt all further spending under it.Documentation Index
Fetch the complete documentation index at: https://docs.usemandate.io/llms.txt
Use this file to discover all available pages before exploring further.
Create a mandate
"active" and policy enforcement starts immediately.
Request body
The ID of the agent this mandate authorizes. The agent must belong to your account and be in
"active" status.A plain-language description of what this mandate permits, e.g.
"Financial data research". Shown in the dashboard and audit log.The total budget across the lifetime of this mandate, as a decimal string (e.g.
"10.00"). The mandate transitions to "exhausted" once spent_total reaches this value.The maximum amount allowed in a single transaction, as a decimal string (e.g.
"0.50"). Any payment request exceeding this value is denied with amount_exceeds_per_transaction_limit.The currency for all spend accounting. Currently
"USDC" only.An allowlist of merchant domains this agent is permitted to pay. Pass
["*"] to allow any merchant. If you pass an empty array or omit this field, the mandate will block all merchant domains — you must provide at least one domain or ["*"] to allow payments.An allowlist of resource categories this mandate covers (e.g.
["data", "research"]). Pass ["*"] to allow all categories. An empty array ([]) also permits all categories — the policy engine treats an empty list as “no category restriction”.ISO 8601 expiry timestamp for this mandate. After this time, all policy evaluations return
mandate_expired.201
Unique mandate identifier.
The agent this mandate is attached to.
The purpose description provided at creation.
Total budget as a decimal string.
Per-transaction ceiling as a decimal string.
Currency code, e.g.
"USDC".The merchant domain allowlist for this mandate.
The stored category allowlist.
ISO 8601 expiry timestamp.
Mandate lifecycle status. One of
"active", "revoked", or "exhausted".Running total of verified spend against this mandate, as a decimal string.
ISO 8601 timestamp set on revocation.
null while active.ISO 8601 creation timestamp.
ISO 8601 timestamp of the last update.
Example response
| Status | Detail | Cause |
|---|---|---|
404 | agent_not_found | The agent_id does not exist or is not yours. |
List mandates
agent_id query parameter to filter to a specific agent’s mandates.
Query parameters
Optional. Filter results to mandates belonging to this agent.
200
Array of mandate objects. Each object has the same shape as the response from
POST /v1/mandates.Get a mandate
404 if it does not exist or does not belong to your account.
Path parameters
The mandate ID to retrieve.
200
Returns the mandate object. See Create a mandate for the full field list.
Error responses
| Status | Detail | Cause |
|---|---|---|
404 | not_found | Mandate does not exist or belongs to a different account. |
Revoke a mandate
"revoked" and all subsequent policy evaluations against it return mandate_expired.
Path parameters
The mandate ID to revoke.
200
Returns the updated mandate object with status: "revoked" and revoked_at set.
Example response
| Status | Detail | Cause |
|---|---|---|
400 | Mandate not found or already revoked | Mandate is not active or does not exist. |

