Retrieve a conversation

Retrieve a conversation

GET/api/v1/email/threads/{id}

GET /email/threads/{id}
curl -X GET 'https://www.unitpost.com/api/v1/email/threads/thr_123' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'User-Agent: my-app/1.0'
Response · 200
{
  "object": "email_thread",
  "id": "id_123",
  "subject": "Welcome to Acme",
  "last_message_at": "2026-01-01T00:00:00.000Z",
  "sender": {
    "address": "string"
  },
  "older_hidden": false,
  "older_cursor": "string",
  "sent_with_unitpost": false,
  "messages": [
    {
      "object": "received_email",
      "direction": "inbound",
      "id": "id_123",
      "received_at": "2026-01-01T00:00:00.000Z",
      "from": "you@yourdomain.com",
      "from_name": "string",
      "to": [
        "customer@example.com"
      ],
      "cc": [
        "string"
      ],
      "reply_to": [
        "string"
      ],
      "subject": "Welcome to Acme",
      "message_id": "message_123",
      "text": "string",
      "html": "string",
      "verdicts": {
        "spam": "string",
        "virus": "string",
        "spf": "string",
        "dkim": "string",
        "dmarc": "string"
      },
      "size": 1,
      "attachments": [
        {
          "object": "received_attachment",
          "id": "id_123",
          "filename": "string",
          "content_type": "string",
          "content_disposition": "string",
          "content_id": "content_123",
          "size": 1
        }
      ],
      "sent_by_us": false,
      "duplicate": false
    }
  ]
}

One conversation, oldest message first: what you received (bodies, reply_to, verdicts, attachments) and what you sent from it (status and recipients, no body). A long conversation comes in pages, newest first: this read holds its newest limit messages (fewer when their bodies are large), and older_cursor passed as before reads the messages before them, as the inbox's "Show earlier messages" does. Answer a message with Reply to a conversation. Requires the emails:read capability.

Parameters3 fields
FieldTypeDescription
idrequiredstring · path—
limitinteger · queryMessages per read, 1–100 (default 50). A read stays under a size budget, so big messages can make it shorter.
beforestring · queryThe previous read's `older_cursor`: read the messages before those.
Response · 200 fields9 fields
FieldTypeDescription
objectrequiredstring—
idrequiredstring—
subjectrequiredstring | null—
last_message_atrequiredstring—
senderrequiredobject | nullThe other party; null when the conversation has no received mail.
older_hiddenrequiredbooleanOlder messages exist than the ones in `messages`; read them with `before` = `older_cursor`.
older_cursorrequiredstring | nullPass as `before` to read the messages before these (the next page back). Null when nothing older remains.
sent_with_unitpostrequiredbooleanA reply from here carries the "Sent with Unitpost" line (your plan decides).
messagesrequiredobject[]Oldest first. What you sent is metadata only: no body.
200401403404422

Search docs and guides

Search the docs and product guides.