Messages
Unified inbox API for managing conversations and direct messages across all connected accounts. All endpoints aggregate data from multiple social accounts in a single API call. Requires Inbox addon.
List conversations across all accounts
Fetch conversations (DMs) from all connected messaging accounts in a single API call. Supports filtering by profile and platform. Results are aggregated and deduplicated.
Supported platforms: Facebook, Instagram, Twitter/X, Bluesky, Reddit, Telegram
API key authentication - use your Late API key as a Bearer token
In: header
Query Parameters
Filter by profile ID
Filter by platform
"facebook" | "instagram" | "twitter" | "bluesky" | "reddit" | "telegram"Filter by conversation status
"active" | "archived"Sort order by updated time
"desc""asc" | "desc"Maximum number of conversations to return
501 <= value <= 100Pagination cursor for next page
Filter by specific social account ID
Response Body
application/json
application/json
curl -X GET "https://getlate.dev/api/v1/inbox/conversations"{
"data": [
{
"id": "string",
"platform": "string",
"accountId": "string",
"accountUsername": "string",
"participantId": "string",
"participantName": "string",
"participantPicture": "string",
"lastMessage": "string",
"updatedTime": "2019-08-24T14:15:22Z",
"status": "active",
"unreadCount": 0,
"url": "string",
"instagramProfile": {
"isFollower": true,
"isFollowing": true,
"followerCount": 0,
"isVerified": true,
"fetchedAt": "2019-08-24T14:15:22Z"
}
}
],
"pagination": {
"hasMore": true,
"nextCursor": "string"
},
"meta": {
"accountsQueried": 0,
"accountsFailed": 0,
"failedAccounts": [
{
"accountId": "string",
"accountUsername": "string",
"platform": "string",
"error": "string",
"code": "string",
"retryAfter": 0
}
],
"lastUpdated": "2019-08-24T14:15:22Z"
}
}{
"error": "Unauthorized"
}Get conversation details
Retrieve details and metadata for a specific conversation. Requires accountId query parameter.
API key authentication - use your Late API key as a Bearer token
In: header
Path Parameters
The conversation ID (id field from list conversations endpoint). This is the platform-specific conversation identifier, not an internal database ID.
Query Parameters
The social account ID
Response Body
application/json
application/json
curl -X GET "https://getlate.dev/api/v1/inbox/conversations/string?accountId=string"{
"data": {
"id": "string",
"accountId": "string",
"accountUsername": "string",
"platform": "string",
"status": "active",
"participantName": "string",
"participantId": "string",
"lastMessage": "string",
"lastMessageAt": "2019-08-24T14:15:22Z",
"updatedTime": "2019-08-24T14:15:22Z",
"participants": [
{
"id": "string",
"name": "string"
}
],
"instagramProfile": {
"isFollower": true,
"isFollowing": true,
"followerCount": 0,
"isVerified": true,
"fetchedAt": "2019-08-24T14:15:22Z"
}
}
}{
"error": "Unauthorized"
}Update conversation status
Archive or activate a conversation. Requires accountId in request body.
API key authentication - use your Late API key as a Bearer token
In: header
Path Parameters
The conversation ID (id field from list conversations endpoint). This is the platform-specific conversation identifier, not an internal database ID.
Social account ID
"active" | "archived"Response Body
application/json
application/json
curl -X PUT "https://getlate.dev/api/v1/inbox/conversations/string" \ -H "Content-Type: application/json" \ -d '{ "accountId": "string", "status": "active" }'{
"success": true,
"data": {
"id": "string",
"accountId": "string",
"status": "active",
"platform": "string",
"updatedAt": "2019-08-24T14:15:22Z"
}
}{
"error": "Unauthorized"
}Get messages in a conversation
Fetch messages for a specific conversation. Requires accountId query parameter.
API key authentication - use your Late API key as a Bearer token
In: header
Path Parameters
The conversation ID (id field from list conversations endpoint). This is the platform-specific conversation identifier, not an internal database ID.
Query Parameters
Social account ID
Response Body
application/json
application/json
curl -X GET "https://getlate.dev/api/v1/inbox/conversations/string/messages?accountId=string"{
"status": "string",
"messages": [
{
"id": "string",
"conversationId": "string",
"accountId": "string",
"platform": "string",
"message": "string",
"senderId": "string",
"senderName": "string",
"direction": "incoming",
"createdAt": "2019-08-24T14:15:22Z",
"attachments": [
{
"id": "string",
"type": "image",
"url": "string",
"filename": "string",
"previewUrl": "string"
}
],
"subject": "string",
"storyReply": true,
"isStoryMention": true
}
],
"lastUpdated": "2019-08-24T14:15:22Z"
}{
"error": "Unauthorized"
}Send a message
Send a message in a conversation. Supports text, attachments, quick replies, buttons, carousels, and message tags.
Attachment support by platform:
- Telegram: Images, videos, documents (up to 50MB)
- Facebook Messenger: Images, videos, audio, files
- Instagram: Images, videos, audio via URL (8MB images, 25MB video/audio)
- Twitter/X: Images, videos (requires media upload)
- Bluesky: Not supported
- Reddit: Not supported
Interactive message support:
| Field | Telegram | ||
|---|---|---|---|
| quickReplies | Meta quick_replies (13 max) | Meta quick_replies (13 max) | ReplyKeyboardMarkup (one_time) |
| buttons | Generic template | Generic template | Inline keyboard |
| template | Generic template (carousel) | Generic template (carousel) | Ignored |
| replyMarkup | Ignored | Ignored | InlineKeyboardMarkup / ReplyKeyboardMarkup |
| messagingType | Ignored | RESPONSE / UPDATE / MESSAGE_TAG | Ignored |
| messageTag | HUMAN_AGENT only | 4 tag types | Ignored |
| replyTo | Ignored | Ignored | reply_parameters |
Platform-specific fields are silently ignored on unsupported platforms.
API key authentication - use your Late API key as a Bearer token
In: header
Path Parameters
The conversation ID (id field from list conversations endpoint). This is the platform-specific conversation identifier, not an internal database ID.
Social account ID
Message text
Quick reply buttons. Mutually exclusive with buttons. Max 13 items.
items <= 13Action buttons. Mutually exclusive with quickReplies. Max 3 items.
items <= 3Generic template for carousels (Instagram/Facebook only, ignored on Telegram).
Telegram-native keyboard markup. Ignored on other platforms.
Facebook messaging type. Required when using messageTag.
"RESPONSE" | "UPDATE" | "MESSAGE_TAG"Facebook message tag for messaging outside 24h window. Requires messagingType MESSAGE_TAG. Instagram only supports HUMAN_AGENT.
"CONFIRMED_EVENT_UPDATE" | "POST_PURCHASE_UPDATE" | "ACCOUNT_UPDATE" | "HUMAN_AGENT"Platform message ID to reply to (Telegram only).
Response Body
application/json
application/json
application/json
curl -X POST "https://getlate.dev/api/v1/inbox/conversations/string/messages" \ -H "Content-Type: application/json" \ -d '{ "accountId": "string" }'{
"success": true,
"data": {
"messageId": "string",
"conversationId": "string",
"sentAt": "2019-08-24T14:15:22Z",
"message": "string"
}
}{
"error": "string",
"code": "PLATFORM_LIMITATION"
}{
"error": "Unauthorized"
}Edit a message (Telegram only)
Edit the text and/or reply markup of a previously sent Telegram message. Only supported for Telegram. Returns 400 for other platforms.
API key authentication - use your Late API key as a Bearer token
In: header
Path Parameters
The conversation ID
The Telegram message ID to edit
Social account ID
New message text
New inline keyboard markup
Response Body
application/json
application/json
curl -X PATCH "https://getlate.dev/api/v1/inbox/conversations/string/messages/string" \ -H "Content-Type: application/json" \ -d '{ "accountId": "string" }'{
"success": true,
"data": {
"messageId": 0
}
}{
"error": "Unauthorized"
}