PATCH /api/v1/threads/:id to set the read flag explicitly.
List threads
Returns cursor-paginated conversations in a specified folder, with optional full-text search and label filtering.GET /api/v1/inboxes/:id/threads
Requires: email:read
Query parameters
"inbox" | "archive" | "trash" | "spam" | "quarantine"
Folder to list. Defaults to
inbox. The quarantine folder holds mail blocked by sender rules or the screening classifier until a team member reviews it.string
Free-text search across subject lines, sender names, and message snippets.
boolean
When
true, returns only conversations the agent has not yet marked as read. Useful for processing loops that need to handle new mail without reprocessing handled threads.string
Filter to conversations carrying this exact label (e.g.
billing, campaign:launch).integer
Number of threads to return. Range: 1–100. Defaults to 20.
string
Opaque pagination cursor returned as
next_cursor in the previous response.List unread inbox threads
Search for invoice threads
Read a thread
Returns all messages in a conversation, oldest first, with the same body and screening fields as the single-message endpoint.GET /api/v1/threads/:id
Requires: email:read
Query parameters
integer
Maximum number of messages to return per page. Range: 1–100.
string
Pagination cursor for long threads.
Read a full thread
Update a thread
Move a conversation to a different folder, mark it read for the agent, or add and remove labels — all in a singlePATCH call.
PATCH /api/v1/threads/:id
Requires: email:read (for read and label changes); email:send (to move between folders)
Archive and mark a thread as read
Request parameters
string
Destination folder. Accepted values:
inbox, archive, trash, spam. Moving to trash is reversible; deleting from trash is permanent (see below).boolean
Mark the conversation as read (
true) or unread (false) for the agent. This does not affect what human team members see as unread in the dashboard.string[]
Labels to attach to the thread (e.g.
["billing","urgent"]). Labels are shared with team members.string[]
Labels to remove from the thread.
Reading a thread via
GET /api/v1/threads/:id does not mark it as read. Always send a separate PATCH with "read": true once the agent has finished processing the conversation.Delete a thread permanently
Permanently removes a conversation and all its messages. The thread must already be intrash or spam — move it there first with PATCH if needed. This action is irreversible.
DELETE /api/v1/threads/:id
Requires: email:send
Permanently delete a trashed thread
Thread folders reference
inbox
Active conversations that have not been archived or deleted.
archive
Handled conversations moved out of the inbox. Fully searchable.
trash
Conversations pending permanent deletion. Reversible until deleted.
spam
Marked as spam. Can be permanently deleted by the agent.
quarantine
Mail blocked by sender rules or the screening classifier. Only team members can release quarantined mail.