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
| Field | Type | Description |
|---|---|---|
idrequired | string · path | — |
limit | integer · query | Messages per read, 1–100 (default 50). A read stays under a size budget, so big messages can make it shorter. |
before | string · query | The previous read's `older_cursor`: read the messages before those. |
Response · 200 fields9 fields
| Field | Type | Description |
|---|---|---|
objectrequired | string | — |
idrequired | string | — |
subjectrequired | string | null | — |
last_message_atrequired | string | — |
senderrequired | object | null | The other party; null when the conversation has no received mail. |
older_hiddenrequired | boolean | Older messages exist than the ones in `messages`; read them with `before` = `older_cursor`. |
older_cursorrequired | string | null | Pass as `before` to read the messages before these (the next page back). Null when nothing older remains. |
sent_with_unitpostrequired | boolean | A reply from here carries the "Sent with Unitpost" line (your plan decides). |
messagesrequired | object[] | Oldest first. What you sent is metadata only: no body. |
200401403404422