Agent Mail by Ackuna

Every page here is also markdown — add .md to the URL.

Threads

A thread is a read-only grouping of an inbox's messages into one conversation, matched by subject and participants the same way a mail client threads a mailbox. Threads have no create or update endpoint — they are formed automatically as mail arrives and is replied to.

The thread object

{
  "id": "thr_01k2n9v8qf3m7d5b0y6xz4rt7i",
  "object": "thread",
  "inbox_id": "inb_01k2n9v8qf3m7d5b0y6xz4rt1c",
  "subject": "Question about my order",
  "participants": ["customer@example.com", "orders-bot@agentmail.ackuna.com"],
  "message_count": 3,
  "last_message_at": "2026-08-20T14:05:00.000Z",
  "created_at": "2026-08-19T10:00:00.000Z"
}

participants is every lowercased email address that has sent or received a message in the thread so far.

List threads in an inbox

GET /v1/inboxes/inb_01k2n9v8qf3m7d5b0y6xz4rt1c/threads?limit=25
Authorization: Bearer ak_...
{
  "data": [
    {"id": "thr_01k2n9v8qf3m7d5b0y6xz4rt7i", "object": "thread", "inbox_id": "inb_01k2n9v8qf3m7d5b0y6xz4rt1c", "subject": "Question about my order", "participants": ["customer@example.com", "orders-bot@agentmail.ackuna.com"], "message_count": 3, "last_message_at": "2026-08-20T14:05:00.000Z", "created_at": "2026-08-19T10:00:00.000Z"}
  ],
  "next_cursor": null,
  "has_more": false
}

Requires scope messages:read. Ordered most-recently-active first (last_message_at descending), so the top of page one is always what needs attention now. 404 not_found if the inbox is unknown or belongs to another organization.

Fetch a thread

GET /v1/threads/thr_01k2n9v8qf3m7d5b0y6xz4rt7i
Authorization: Bearer ak_...

Requires scope messages:read. Returns the thread object, or 404 not_found. To read the thread's messages, see GET /v1/threads/{thread}/messages.