| Mode | Description | When to use |
|---|---|---|
| Full | All messages from all mailboxes | When you want complete visibility and do your own filtering |
| Relevant | Filtered — excludes warmup, test, and outbound-only messages | When you only care about real prospect replies |
GET /threads/capabilities?workspaceId=42{
"inbox": true,
"outbound": true,
"syncMode": "incremental",
"providers": ["opensrs", "maildoso"]
}GET /threads?workspaceId=42| Parameter | Type | Default | Description |
|---|---|---|---|
workspaceId | integer | required | Workspace to query |
limit | integer | 50 | Results per page (1-200) |
cursor | string | null | Pagination cursor from previous response |
mailboxId | string | null | Filter by specific mailbox |
replyIntent | string | null | Filter by classification (see below) |
{
"threads": [
{
"id": "thr_abc123",
"external_thread_id": "msg-id@mail.com",
"subject": "Re: Partnership opportunity",
"subject_display": "Partnership opportunity",
"last_message": {
"from_email": "prospect@company.com",
"date_received": "2026-03-09T14:30:00Z",
"body_text": "Hi John, thanks for reaching out..."
},
"is_warming": false,
"is_postmaster": false,
"message_count": 3,
"replyIntent": "interested",
"campaignId": "cmp_xyz789"
}
],
"next_cursor": "cursor_def456"
}GET /threads?workspaceId=42&mailboxId=john@cooloutreach.comGET /threads?workspaceId=42&replyIntent=interested| Intent | Description |
|---|---|
interested | Prospect expressed interest |
not_interested | Prospect declined |
out_of_office | Auto-reply / OOO |
bounced | Email bounced |
unsubscribe | Unsubscribe request |
neutral | General reply, no clear intent |
GET /threads?workspaceId=42&updatedSince=2026-03-09T10:00:00ZGET /threads/{thread_id}/messages?workspaceId=42{
"replyIntent": "interested",
"campaignId": "cmp_xyz789",
"messages": [
{
"id": "msg_001",
"message_id": "<unique-id@mail.com>",
"from_email": "john@cooloutreach.com",
"to_emails": ["prospect@company.com"],
"cc_emails": [],
"subject": "Partnership opportunity",
"date_received": "2026-03-08T10:00:00Z",
"body_text": "Hi, I wanted to reach out about...",
"body_html": "<p>Hi, I wanted to reach out about...</p>",
"is_incoming": false,
"folder": "sent"
},
{
"id": "msg_002",
"message_id": "<reply-id@company.com>",
"from_email": "prospect@company.com",
"to_emails": ["john@cooloutreach.com"],
"cc_emails": [],
"subject": "Re: Partnership opportunity",
"date_received": "2026-03-09T14:30:00Z",
"body_text": "Hi John, thanks for reaching out...",
"body_html": "<p>Hi John, thanks for reaching out...</p>",
"is_incoming": true,
"folder": "inbox"
}
]
}is_incoming: true — message received from the prospectis_incoming: false — message you sentfolder — inbox, sent, spam, etc.POST /threads/{thread_id}/reply?workspaceId=42{
"bodyText": "Thanks for your interest! Let's schedule a call.",
"bodyHtml": "<p>Thanks for your interest! Let's schedule a call.</p>",
"fromMailboxAddress": "john@cooloutreach.com"
}{
"status": "queued",
"message_id": "<reply-msg-id@cooloutreach.com>",
"operation_id": "op_reply_123"
}GET /threads/outbound-operations/op_reply_123?workspaceId=42POST /threads/new?workspaceId=42{
"toAddress": "newprospect@company.com",
"subject": "Quick question about your product",
"bodyText": "Hi, I saw your product on...",
"bodyHtml": "<p>Hi, I saw your product on...</p>",
"fromMailboxAddress": "john@cooloutreach.com"
}{
"status": "queued",
"message_id": "<new-msg-id@cooloutreach.com>",
"thread_id": "thr_new123",
"operation_id": "op_send_456"
}POST /threads/{thread_id}/forward?workspaceId=42{
"toAddress": "colleague@company.com",
"bodyText": "FYI — check this reply from the prospect",
"fromMailboxAddress": "john@cooloutreach.com"
}PATCH /threads/{thread_id}/reply-intent?workspaceId=42{
"replyIntent": "interested"
}is_warming and is_postmaster flags on threads let you identify these if you're working with the full (unfiltered) feed.campaignId