Questions · Updated 2026-09-27

How do I see everything my AI agent sent?

See everything your AI agent sent by giving it its own API key and filtering on that key: GET /emails?api_key_id={id} lists every message it sent, GET /logs?api_key_id={id} every request it made, and GET /usage what it consumed. GET /emails/export.csv?api_key_id={id} is the same list as a file.

See everything your AI agent sent by giving it a key of its own with POST /api-keys and filtering on that key everywhere: GET /emails?api_key_id={id} is every message it sent, GET /logs?api_key_id={id} is every API request it made, and GET /usage is what it consumed. api_key_id is stored on every message, so the filter is exact rather than a guess from timestamps.

One key per agent

The filter only works if each agent has its own key. POST /api-keys with permission: "sending_access" creates one that can send and nothing else; the response carries id, which is the api_key_id you filter on. Two agents sharing a key are one agent in every list below.

The lists

GET /emails takes api_key_id, status, domain, since, until and the other console filters as query parameters. Each row carries api_key_id, to, subject, status, last_event and created_at. GET /emails/{id}/events is the full timeline of one of them.

curl -sS -X GET https://api.agentisend.com/emails \
  -H "Authorization: Bearer $AGENTISEND_API_KEY"
200
{
  "data": [],
  "has_more": true,
  "next_cursor": "string",
  "object": "string"
}
Response

GET /logs is the request side. Its summary: "Every API request this account made: method, route, status, duration and the refusal code. Filter by date range, status, status class, method, route or key." Filtering by api_key_id shows the refusals too, with error_code on each row, so a budget refusal or a held send is visible even though no message was created.

GET /usage returns the agent's row with consumed_in_period, remaining and resets_at. GET /agent-actions lists every send that was held, with preview.api_key_id naming the agent. GET /limits/keys returns the whole fleet with each key's loop_state. GET /audit-log is "Every change anyone made on this account (keys, kill switch, domains, approvals, team, settings), with what it looked like before", which covers what people did to the agent rather than what the agent did.

For a file, GET /emails/export.csv?api_key_id={id} takes the same filters as GET /emails and returns the message log as CSV.

Over MCP and in the console

The MCP tools list_emails and list_agent_actions read the same lists, and whoami says which account the connection is on and what it may do. The console shows the same rows under the agent's key. How far back the lists reach is bounded by your plan's retention window; How long does AgentiSend keep my emails? states it.

Next