agentlyleads docs
Inbox API

GET /api/v1/inbox/threads/{threadKey}

Returns one conversation and every message in it, oldest first. Requires the read:emails scope.

Request

GET /api/v1/inbox/threads/18c2f0a9b1d4e5f6 HTTP/1.1
Host: agentlyleads.com
Authorization: Bearer alk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

threadKey can also be the ID of any message in the conversation. Some mail providers use thread IDs with characters such as <, > or @; URL-encode those, or pass a message ID instead.

Response: 200

{
  "thread": {
    "threadKey": "18c2f0a9b1d4e5f6",
    "subject": "Pricing for 500 units",
    "state": "OPEN",
    "assignee": { "id": "cmq1user0alk34567891", "name": "Rita Cole" },
    "tags": [],
    "aging": { "waitingOnUs": true, "waitingSince": "2026-09-27T14:02:00.000Z", "waitingMins": 42, "overdue": false },
    "messages": [
      {
        "id": "cmq5mail0alk34567890",
        "direction": "INBOUND",
        "status": "RECEIVED",
        "fromEmail": "ann@customer.co",
        "fromName": "Ann Lee",
        "toEmail": "sales@example.com",
        "toEmails": [],
        "ccEmails": [],
        "subject": "Pricing for 500 units",
        "bodyHtml": "<p>Hi, could you send pricing for 500 units delivered to Toronto?</p>",
        "bodyText": "Hi, could you send pricing for 500 units delivered to Toronto?",
        "replyClass": "INTERESTED",
        "readAt": null,
        "sentAt": "2026-09-27T14:02:00.000Z",
        "createdAt": "2026-09-27T14:02:00.000Z"
      }
    ]
  }
}

The thread object carries every field on the Thread object, plus messages. This example is trimmed.

Internal team comments are not part of this response. Read them with GET /api/v1/inbox/threads/{threadKey}/comments.

Reading a conversation through the API does not mark it read and does not show you as "viewing" to teammates.

Response: 404

{ "error": "Conversation not found." }

Returned when no conversation in this workspace has that key or message ID.

On this page