APIs
Conversation API
Conversations represent email, LinkedIn, or Twitter message threads. You can retrieve conversations, send messages, forward conversations, and manage read/unread status.
Get Inbox Counts
Get counts for different conversation categories (inbox, campaign replies, non-campaign replies, sent, all, archived).
Query Parameters:
Required:
- None (authentication via Bearer token)
Optional:
TeamId- string - Filter by team IDchannel- string - Channel type:email(default),linkedin,twitterCampaignId- string - Filter by campaign IDCampaignIds- string or array - Filter by multiple campaign IDs (comma-separated)SenderId- string - Filter by sender IDSenderIds- string or array - Filter by multiple sender IDs (comma-separated)LabelId- string - Filter by label IDLabelIds- string or array - Filter by multiple label IDs (comma-separated)LabelCountIds- string or array - Get per-label counts for specific label IDsExcludeLabelIds- string or array - Exclude conversations with these label IDsfrom- string - Filter by start dateto- string - Filter by end datesearch- string - Search in conversation contentMood- string - Filter by moodstatus- string - Filter by status:read,unread,archived,unarchivedonly- string - Comma-separated list of counts to fetch:inbox,campaignReplies,nonCampaignReplies,sent,all,archived(default: all)useMaster- boolean - Use master database (default: true)
curl -X GET 'https://api.supersend.io/v1/conversation/counts?TeamId=xxx&channel=email&status=unread' \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json"
# Response
{
"success": true,
"data": {
"inbox": 25,
"campaignReplies": 15,
"nonCampaignReplies": 10,
"sent": 5,
"all": 30,
"archived": 8,
"labelCounts": {
"label-uuid-1": 5,
"label-uuid-2": 3
}
}
}
Get Latest Conversations by Profile
Get the latest conversation per person/profile with support for filtering and pagination. Returns one conversation per PlatformPersonProfile based on most recent activity.
Query Parameters:
Required:
- None (authentication via Bearer token)
Optional:
TeamId- string - Filter by team IDstatus- string - Filter by statussearch- string - Search in conversation contentsortBy- string - Sort field (default:last_activity_at)sortDirection- string - Sort direction:ASCorDESC(default:DESC)limit- number - Number of records to return (default: 20)offset- number - Number of records to skip (default: 0)SenderId- string - Filter by sender IDSenderIds- string or array - Filter by multiple sender IDsfrom- string - Filter by start dateto- string - Filter by end datechannel- string - Channel type:email(default),linkedin,twitterrepliesOnly- boolean - Filter to only repliesfilterCategory- string - Filter category:inbox,campaign_replies,non-campaign,sentLabelId- string - Filter by label IDLabelIds- string or array - Filter by multiple label IDsExcludeLabelIds- string or array - Exclude conversations with these label IDslast_message_direction- string - Filter by last message directionCampaignId- string - Filter by campaign IDCampaignIds- string or array - Filter by multiple campaign IDsarchived- string - Filter archived:trueorfalse(default:false)Mood- string - Filter by mood
curl -X GET 'https://api.supersend.io/v1/conversation/latest-by-profile?TeamId=xxx&limit=20&offset=0&channel=email' \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json"
# Response
{
"success": true,
"data": {
"conversations": [
{
"id": "conversation-uuid",
"title": "Re: Partnership Opportunity",
"last_activity_at": "2025-11-27T10:30:00Z",
"is_unread": true,
"platform_type": 3,
"inbox_mood": null,
"contact_id": "contact-uuid",
"labels": [
{
"id": "label-uuid",
"name": "Interested",
"color": "#4CAF50"
}
]
}
],
"pagination": {
"total": 150,
"limit": 20,
"offset": 0
}
}
}
Get Conversation Messages
Get messages for a specific conversation.
Path Parameters:
conversationId- string (required) - Conversation UUID
Query Parameters:
Optional:
limit- number - Number of messages to return (default: 200, max: 500)offset- number - Number of messages to skip (default: 0)order- string - Sort order:ascordesc(default:asc)
curl -X GET 'https://api.supersend.io/v1/conversation/<conversationId>/messages?limit=50&offset=0&order=asc' \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json"
# Response
{
"success": true,
"data": {
"conversation": {
"id": "conversation-uuid",
"title": "Re: Partnership Opportunity",
"last_activity_at": "2025-11-27T10:30:00Z",
"is_unread": true,
"platform_type": 3,
"inbox_mood": null
},
"messages": [
{
"id": "message-uuid",
"platform_message_id": "msg-123",
"message_text": "Hi John, thanks for reaching out...",
"html_content": "<p>Hi John, thanks for reaching out...</p>",
"is_from_self": false,
"timestamp": "2025-11-27T10:30:00Z",
"is_read": false,
"subject": "Re: Partnership Opportunity",
"createdAt": "2025-11-27T10:30:00Z",
"MessageAuthor": {
"id": "profile-uuid",
"username": "john@example.com",
"display_name": "John Doe",
"avatar_url": "https://example.com/avatar.jpg",
"platform_type": 3
},
"Attachments": [
{
"id": "attachment-uuid",
"filename": "document.pdf",
"file_path": "path/to/document.pdf"
}
]
}
],
"pagination": {
"limit": 50,
"offset": 0,
"count": 5
}
}
}
Get Reply Recipients
Get valid reply recipients for a conversation (excluding BCC and self).
Path Parameters:
conversationId- string (required) - Conversation UUID
curl -X GET 'https://api.supersend.io/v1/conversation/<conversationId>/reply-recipients' \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json"
# Response
{
"success": true,
"recipients": [
{
"email": "john@example.com",
"displayName": "John Doe",
"type": "TO",
"label": "John Doe (TO)"
},
{
"email": "jane@example.com",
"displayName": "Jane Smith",
"type": "CC",
"label": "Jane Smith (CC)"
}
]
}
Sync Conversations
Enqueue jobs to fetch latest conversations for the organization. Optionally accepts sender IDs to limit to specific senders.
Request Body:
Optional:
senderIds- array - Array of sender UUIDs to sync (default: all active senders)TeamId- string - Team ID to filter senderstrigger- string - Trigger identifier (default:api_manual, max: 64 characters)
curl -X POST 'https://api.supersend.io/v1/conversation/sync' \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"senderIds": ["sender-uuid-1", "sender-uuid-2"],
"TeamId": "team-uuid",
"trigger": "api_manual"
}'
# Response
{
"success": true,
"message": "Conversation sync jobs enqueued",
"data": {
"queued": 5,
"skippedAlreadyQueued": 2,
"totalEligible": 7,
"TeamId": "team-uuid"
}
}
Get Profile Conversations
Get profile details, all conversations for that profile, and matching contact IDs.
Path Parameters:
profileId- string (required) - PlatformPersonProfile UUID
Query Parameters:
Required:
TeamId- string - Team identifier
Optional:
archived- boolean - Include archived conversations (default: false)
curl -X GET 'https://api.supersend.io/v1/conversation/latest-by-profile/<profileId>?TeamId=xxx&archived=false' \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json"
# Response
{
"success": true,
"data": {
"profile": {
"id": "profile-uuid",
"username": "john@example.com",
"display_name": "John Doe",
"avatar_url": "https://example.com/avatar.jpg",
"platform_type": 3
},
"conversations": [
{
"id": "conversation-uuid",
"title": "Re: Partnership Opportunity",
"last_activity_at": "2025-11-27T10:30:00Z",
"is_unread": true,
"avatar_url": null,
"platform_type": 3,
"platform_conversation_id": "thread-123",
"inbox_mood": null,
"unread_messages_count": 2,
"contact_id": "contact-uuid",
"labels": [
{
"id": "label-uuid",
"name": "Interested",
"color": "#4CAF50"
}
]
}
],
"linkedin_profiles": []
}
}
Send Email Message
Send an email message within a conversation. Enqueues a send job to the email queue.
Path Parameters:
conversationId- string (required) - Conversation UUID
Request Body:
Required:
message- string - Message content (min length: 1)senderId- string - Sender UUID
Optional:
subject- string - Email subject (default: "Re: {conversation.title}")isHtml- boolean - Whether message is HTML (default: false)to- string - Recipient email address (optional, uses conversation participants if not provided)cc- array - CC email addressesbcc- array - BCC email addressesattachments- array - Attachment objects
curl -X POST 'https://api.supersend.io/v1/conversation/<conversationId>/send-email' \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"message": "Thanks for your interest! Let me know if you have any questions.",
"senderId": "sender-uuid",
"subject": "Re: Partnership Opportunity",
"isHtml": false,
"to": "john@example.com",
"cc": ["team@example.com"],
"bcc": [],
"attachments": []
}'
# Response
{
"success": true,
"message": "Email queued for sending",
"tempMessageId": "temp-message-uuid",
"job_id": "job-uuid"
}
Forward Conversation
Forward a conversation thread as an email. Formats all messages in the thread and sends them as a forwarded email.
Path Parameters:
conversationId- string (required) - Conversation UUID
Request Body:
Required:
to- string - Recipient email addresssenderId- string - Sender UUID
Optional:
message- string - Optional message to include before forwarded contentcc- array - CC email addressesbcc- array - BCC email addresses
curl -X POST 'https://api.supersend.io/v1/conversation/<conversationId>/forward' \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"to": "forward@example.com",
"senderId": "sender-uuid",
"message": "Please review this conversation",
"cc": ["team@example.com"],
"bcc": []
}'
# Response
{
"success": true,
"message": "Conversation forwarded successfully",
"data": {
"messageId": "message-id-from-provider"
}
}
Mark Conversation as Read
Mark a conversation and all its messages as read.
Path Parameters:
conversationId- string (required) - Conversation UUID
curl -X PUT 'https://api.supersend.io/v1/conversation/<conversationId>/read' \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json"
# Response
{
"success": true,
"message": "Conversation marked as read"
}
Mark Conversation as Unread
Mark a conversation as unread.
Path Parameters:
conversationId- string (required) - Conversation UUID
curl -X PUT 'https://api.supersend.io/v1/conversation/<conversationId>/unread' \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json"
# Response
{
"success": true,
"message": "Conversation marked as unread"
}