agents:read and clearing a tripped agent uses agents:write;
reading budgets uses budgets:read and setting or deleting one uses
budgets:write.
Reputation
Reputation watches each agent’s bounces and complaints and gives you a simpleshouldSend signal to check before you dispatch. If an agent goes off the rails,
it’s contained automatically.
Check before you send
The fastest use: read one agent’s state and gate onshouldSend (or
verdict === "allow") before a batch.
state, a verdict, its live bounce and complaint rates
over the window, and a shouldSend boolean:
overrideLocked flags an agent you’ve pinned so it won’t auto-trip again.
See your whole fleet
GET /v1/agents/reputation returns every agent’s state, newest-tripped first,
with the window and thresholds alongside the data.
Clear a tripped agent
DELETE /v1/agents/{id}/reputation is an operator override: it lifts a
quarantine or resolves a review back to healthy, and returns the reset state.
It uses agents:write and is recorded in your audit log.
Send budgets
A budget is a hard ceiling on sending that Dairo enforces for you. Set one on your whole account, a single API key, or an individual agent, and Dairo stops the next send the moment it would cross the line — so one bad loop can never quietly torch your sender reputation. If a human triggers every send, you may never need it. If code or an AI agent sends on its own, a budget is the seatbelt.Pick what a budget covers
A budget attaches to one of three things. Set the ceiling where it makes sense — on the whole account, on the key a service uses, or on a specific agent.Set a budget
One call creates or updates a budget. Pass the scope, the thing it covers, and at least one limit. You get back the budget with its live usage so far.The limits you can set
Set any combination of these. A budget needs at least one.maxSpendPerDayCents is reserved — accepted in your config but not currently
enforced. Cap on sends and recipients, the limits Dairo acts on.What happens at the ceiling
When a send would cross a budget, Dairo refuses it with a429 carrying the
budget_exceeded error code — whether the ceiling it hit was a send cap, a
new-recipient cap, or the complaint hard-stop. The code lets an agent branch
cleanly: back off, queue for later, or alert a human, instead of retrying into a
wall.
Check usage against a cap
Every budget carries live usage, so you can see how close a scope is to its ceiling before it gets there. List all budgets, or fetch one.account, or a key or agent id as the scopeId.
Remove a budget
Deleting a budget removes the cap entirely — sending under that scope is no longer ceilinged.Setting or deleting a budget is a privileged action. A key that can only send mail
can’t raise its own ceiling — so a leaked sending key stays boxed in by the limits
you set.
Next steps
Land in the inbox
The bounces and complaints that drive send health.
Agent identity & provenance
The agent identities reputation keys on and budgets attach to.
Why Dairo is agent-native
Patterns for safe, autonomous email agents.