Skip to main content
GET
/
api
/
threads
/
{id}
Get Thread
curl --request GET \
  --url https://app.puffle.ai/api/threads/{id} \
  --header 'Authorization: Bearer <token>'
CLI:
puffle thread --id <id>

Overview

Fetches one Unibox thread, all messages in that thread, participant enrichment, and sender status. Opening a thread through this endpoint resets its unread_count to 0.

Path Parameters

ParameterTypeDescription
idstringThread ID.

Example

curl -H "Authorization: Bearer $PUFFLE_API_KEY" \
  "https://app.puffle.ai/api/threads/3d986dd1-9d70-45b7-8e36-5d5b8b1c9337"
{
  "thread": {
    "id": "3d986dd1-9d70-45b7-8e36-5d5b8b1c9337",
    "channel": "email",
    "status": "active",
    "inbox_state": "needs_reply",
    "participant_email": "founder@example.com",
    "unread_count": 0
  },
  "messages": [
    {
      "id": "6d54211c-7e24-4eb9-85fc-7388c8d89f2f",
      "conversation_id": "3d986dd1-9d70-45b7-8e36-5d5b8b1c9337",
      "direction": "inbound",
      "body_text": "Interested. Can you send details?"
    }
  ],
  "participantDetails": {
    "company": "Example Co",
    "position": "Founder",
    "headline": "Founder at Example Co"
  },
  "senderDisconnected": false,
  "senderAccount": {
    "display_name": "Sales Inbox",
    "status": "active"
  }
}

Response Notes

Messages are ordered oldest first. Email attachment URLs are refreshed before the response is returned. senderDisconnected is true when the linked sender is missing or no longer in a sendable status.

AI agent notes

Use this endpoint when you need the full thread and are ready to mark it read. If you only need paginated messages without changing unread state, use Get messages.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

id
string
required

Thread (conversations.id) UUID.

Response

Successful response.