LateLate API
Core

Messages


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

GET
/v1/inbox/conversations
AuthorizationBearer <token>

API key authentication - use your Late API key as a Bearer token

In: header

Query Parameters

profileId?string

Filter by profile ID

platform?string

Filter by platform

Value in"facebook" | "instagram" | "twitter" | "bluesky" | "reddit" | "telegram"
status?string

Filter by conversation status

Value in"active" | "archived"
sortOrder?string

Sort order by updated time

Default"desc"
Value in"asc" | "desc"
limit?integer

Maximum number of conversations to return

Default50
Range1 <= value <= 100
cursor?string

Pagination cursor for next page

accountId?string

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"
}
Empty

Get conversation details

Retrieve details and metadata for a specific conversation. Requires accountId query parameter.

GET
/v1/inbox/conversations/{conversationId}
AuthorizationBearer <token>

API key authentication - use your Late API key as a Bearer token

In: header

Path Parameters

conversationIdstring

The conversation ID (id field from list conversations endpoint). This is the platform-specific conversation identifier, not an internal database ID.

Query Parameters

accountIdstring

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"
}
Empty
Empty

Update conversation status

Archive or activate a conversation. Requires accountId in request body.

PUT
/v1/inbox/conversations/{conversationId}
AuthorizationBearer <token>

API key authentication - use your Late API key as a Bearer token

In: header

Path Parameters

conversationIdstring

The conversation ID (id field from list conversations endpoint). This is the platform-specific conversation identifier, not an internal database ID.

accountIdstring

Social account ID

statusstring
Value in"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"
}
Empty

Get messages in a conversation

Fetch messages for a specific conversation. Requires accountId query parameter.

GET
/v1/inbox/conversations/{conversationId}/messages
AuthorizationBearer <token>

API key authentication - use your Late API key as a Bearer token

In: header

Path Parameters

conversationIdstring

The conversation ID (id field from list conversations endpoint). This is the platform-specific conversation identifier, not an internal database ID.

Query Parameters

accountIdstring

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"
}
Empty

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:

FieldInstagramFacebookTelegram
quickRepliesMeta quick_replies (13 max)Meta quick_replies (13 max)ReplyKeyboardMarkup (one_time)
buttonsGeneric templateGeneric templateInline keyboard
templateGeneric template (carousel)Generic template (carousel)Ignored
replyMarkupIgnoredIgnoredInlineKeyboardMarkup / ReplyKeyboardMarkup
messagingTypeIgnoredRESPONSE / UPDATE / MESSAGE_TAGIgnored
messageTagHUMAN_AGENT only4 tag typesIgnored
replyToIgnoredIgnoredreply_parameters

Platform-specific fields are silently ignored on unsupported platforms.

POST
/v1/inbox/conversations/{conversationId}/messages
AuthorizationBearer <token>

API key authentication - use your Late API key as a Bearer token

In: header

Path Parameters

conversationIdstring

The conversation ID (id field from list conversations endpoint). This is the platform-specific conversation identifier, not an internal database ID.

accountIdstring

Social account ID

message?string

Message text

quickReplies?

Quick reply buttons. Mutually exclusive with buttons. Max 13 items.

Itemsitems <= 13
buttons?

Action buttons. Mutually exclusive with quickReplies. Max 3 items.

Itemsitems <= 3
template?

Generic template for carousels (Instagram/Facebook only, ignored on Telegram).

replyMarkup?

Telegram-native keyboard markup. Ignored on other platforms.

messagingType?string

Facebook messaging type. Required when using messageTag.

Value in"RESPONSE" | "UPDATE" | "MESSAGE_TAG"
messageTag?string

Facebook message tag for messaging outside 24h window. Requires messagingType MESSAGE_TAG. Instagram only supports HUMAN_AGENT.

Value in"CONFIRMED_EVENT_UPDATE" | "POST_PURCHASE_UPDATE" | "ACCOUNT_UPDATE" | "HUMAN_AGENT"
replyTo?string

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"
}
Empty

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.

PATCH
/v1/inbox/conversations/{conversationId}/messages/{messageId}
AuthorizationBearer <token>

API key authentication - use your Late API key as a Bearer token

In: header

Path Parameters

conversationIdstring

The conversation ID

messageIdstring

The Telegram message ID to edit

accountIdstring

Social account ID

text?string

New message text

replyMarkup?

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
  }
}
Empty
{
  "error": "Unauthorized"
}
Empty