Overview
The Inbox API manages DM conversations across messaging platforms. Understanding these core entities will help you build effective integrations.Multi-Platform Future: The API currently supports X (Twitter) DMs.
Instagram and LinkedIn are coming in Q2 2026. The data model is
platform-agnostic — see Supported platforms.
Key entities
Threads
A thread represents a DM conversation between one of your account links and a prospect.| Field | Description |
|---|---|
id | Inbox thread ID — use this for all API operations |
platform | The platform this thread belongs to (currently "twitter") |
platformId | The X conversation ID (formatted as smallerUserId:largerUserId) |
done | Whether the thread is archived |
assigneeId | Team member assigned to this thread (null if unassigned) |
status | "active" (visible in inbox) or "idle" (hidden, e.g. Quick Peek previews) |
variant | "unencrypted" (legacy DMs) or "xChat" (encrypted DMs) |
accountLinkId | Which connected X account this thread belongs to |
isRequest | Whether this is a message request from an unknown prospect |
lastMessage | Preview of the most recent message |
prospect | The full prospect object (with context) embedded in the thread |
Messages
Messages are individual DMs sent or received in a thread.| Field | Description |
|---|---|
content | The message text |
authorId | Either the accountLinkId or the prospect’s externalId — identifies the sender within Inbox (not a platform ID) |
userId | Inbox user ID if sent from Inbox by a team member. null if the message is from the prospect, was sent from the X client, or was otherwise sent outside of Inbox. A null value does not necessarily mean the message is from the prospect — it just means it wasn’t sent from Inbox. |
origin | Where the message originated: "external" (pulled from X), "internal" (sent from the Inbox UI or a campaign), "api" (sent via the API), or null |
campaignId | Non-null if the message was sent by a campaign (these have origin: "internal") |
isEdited | Whether the message has been edited |
There is no
direction field on messages. Check authorId against your account link IDs to determine the sender. See Working with messages — Determining message direction for details.Prospects
A prospect represents an external user on a messaging platform.| Field | Not this | It’s this |
|---|---|---|
| Display name | name | displayName |
| Bio | description | bio |
| Avatar | profileImageUrl | image (or imageNormalized for highest quality) |
| Followers | followersCount | followerCount (singular) |
| Verified | true / false | "verified" (blue check), "business" (gold), "government" (gray), or "none" |
| Profile type | — | "personal", "business", or "government" |
| Source | — | "cached", "indexed", "live", or "merged" |
context object with your team’s custom data.
Prospect context
When you retrieve a prospect (via threads or the prospects API), the response includes acontext object:
| Field | Type | Description |
|---|---|---|
tags | string[] | Array of tag IDs applied to this prospect |
statusId | string | null | Pipeline status ID |
valuation | number | null | Deal value |
notes | string | null | Free-text notes |
PATCH /prospects/{prospectId}/context:
Tags are modified with
addTags and removeTags — there is no tagIds field. See Tags & statuses for details.Account links
An account link is an X account connected to your team.- Send messages from specific accounts
- Filter threads by account
- Manage multi-account workflows
Tags
Tags are flexible labels you apply to prospects for organization."red", "blue", "green") or a hex code (e.g., "#ef4444"). Use GET /colors to see all predefined options.
Statuses
Statuses represent pipeline stages for a prospect.Members
Members are users on your team."owner", "admin", or "user". Member IDs are used for assigning threads and filtering by assignee.
The dual ID system
Inbox uses two types of IDs for platform-related objects:Inbox ID (id)
e.g.
l44e15irdq4db30i77cgphhxThe internal Inbox ID (CUID2 format). Use this for all API operations.Platform ID (platformId)
e.g.
1876543210987654321The original ID from X. Use this for lookups and constructing X URLs.Helpful X URLs
You can use platform IDs to construct direct links to X:| Link type | URL pattern |
|---|---|
| User profile (by ID) | https://x.com/i/user/{platformId} |
| User profile (by username) | https://x.com/{username} |
| Tweet/Post | https://x.com/anyusername/status/{tweetId} |
| DM conversation | https://x.com/i/chat/{conversationPlatformId} |
The user-by-ID link (
/i/user/{platformId}) is the most reliable since
usernames can change. For tweet URLs, X ignores the username — only the tweet
ID matters.Thread status vs Inbox views
The threadstatus field ("active" or "idle") controls whether the thread is visible in the inbox. Active threads appear in inbox views; idle threads are hidden (e.g., threads created via Quick Peek that haven’t had a real conversation yet).
This is separate from inbox views, which are filtered using the inbox query parameter:
inbox value | Description |
|---|---|
"default" | Active conversations needing attention |
"no-reply" | The prospect sent the last message and is awaiting your reply |
"requests" | New message requests from unknown prospects |
"archived" | Threads marked as done (done: true) |
Response shapes
Different endpoints return data in different shapes. Here’s what to expect:| Pattern | Endpoints | Shape |
|---|---|---|
| Single object | GET /threads/{id}, POST /threads, GET /threads/lookup | Returns the object directly |
| Array | GET /tags, GET /statuses, GET /account-links, GET /members | Returns an array directly |
| Paginated | GET /threads, GET /threads/{id}/messages | Returns { threads, nextCursor } or { messages, nextCursor } |
Pagination
List endpoints use cursor-based pagination:Entity relationships
- A prospect can have multiple tags but only one status
- A thread belongs to exactly one account link and one prospect
- A prospect can have threads across multiple account links
Next steps
Managing threads
Thread operations and filtering
Working with messages
Send and receive messages
Working with prospects
Manage prospect data and context
Tags & statuses
Organize with tags and pipeline stages