Messaging
The Messaging operations of the Hub REST API (17 operations).
bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
application/json- body
provider*string1 <= lengthtext?stringlength <= 50000""messageId*string1 <= lengthexternalId?string1 <= lengthparticipantEmail?stringemailparticipant?string1 <= lengthparticipantExternalId?string1 <= lengthsubject?stringlength <= 2000sentAt?stringworkspaceId?stringuuidprojectId?stringuuiduserId?stringuuidattachments?array<>items <= 8headerMessageId?stringlength <= 998inReplyTo?stringlength <= 998references?array<>items <= 50Record result
application/json- response
recorded*booleanchannelId*stringdeduped*booleancurl -X POST 'https://pod.example.com/api/hub/messaging/inbound' \ -H 'Content-Type: application/json' \ -d '{ "provider": "string", "messageId": "string"}'{ "recorded": true, "channelId": "string", "deduped": true}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
List of connected accounts
application/json- response
[index: integer]?curl -X GET 'https://pod.example.com/api/hub/messaging/accounts'[ { "id": "string", "externalId": "string", "provider": "string", "displayName": "string", "status": "connected" }]bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
redirectUrl*stringprovider?stringAuth URL
application/json- response
url*stringcurl -X GET 'https://pod.example.com/api/hub/messaging/auth-url?redirectUrl=string'{ "url": "string"}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
Sync result
application/json- response
synced*numbercurl -X POST 'https://pod.example.com/api/hub/messaging/accounts/sync'{ "synced": 0}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
Config state
application/json- response
configured*booleansource*|"vault""workspace_settings""env"nulldsn*string|nullhasApiKey*booleanhasWebhookSecret*booleanmigration*curl -X GET 'https://pod.example.com/api/hub/messaging/service-config'{ "configured": true, "source": "vault", "dsn": "string", "hasApiKey": true, "hasWebhookSecret": true, "migration": { "available": true, "hasDsn": true, "hasApiKey": true }}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
application/json- body
dsn*stringapiKey*stringwebhookSecret?stringStored successfully
application/json- response
ok*booleancurl -X POST 'https://pod.example.com/api/hub/messaging/service-config' \ -H 'Content-Type: application/json' \ -d '{ "dsn": "string", "apiKey": "string"}'{ "ok": true}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
Migrated
application/json- response
ok*booleancurl -X POST 'https://pod.example.com/api/hub/messaging/service-config/migrate'{ "ok": true}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
accountId*stringAccount disconnected
application/json- response
success*booleancurl -X DELETE 'https://pod.example.com/api/hub/messaging/accounts/string'{ "success": true}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
entityId?stringcontactEntityId?stringConversations
application/json- response
conversations*array<|>curl -X GET 'https://pod.example.com/api/hub/messaging/conversations'{ "conversations": [ { "channelId": "string", "externalThreadId": "string", "provider": "string", "participantName": "string", "participantExternalId": "string", "lastMessageAt": "string", "lastMessagePreview": "string", "unread": true, "accountId": "string", "readOnly": true } ]}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
application/json- body
entityId?stringexternalThreadId*stringaccountId*stringprovider*stringparticipantName?stringChannel created, upgraded, or already exists
application/json- response
channelId*stringcurl -X POST 'https://pod.example.com/api/hub/messaging/channels/connect' \ -H 'Content-Type: application/json' \ -d '{ "externalThreadId": "string", "accountId": "string", "provider": "string"}'{ "channelId": "string"}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
channelId*stringChannel unlinked
application/json- response
success*booleancurl -X DELETE 'https://pod.example.com/api/hub/messaging/channels/string'{ "success": true}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
channelId*stringMarked as read
application/json- response
success*booleancurl -X POST 'https://pod.example.com/api/hub/messaging/channels/string/mark-read'{ "success": true}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
Unread linked conversations
application/json- response
items*array<>curl -X GET 'https://pod.example.com/api/hub/messaging/linked-unread'{ "items": [ { "entityId": "string", "channelId": "string", "externalThreadId": "string", "provider": "string", "participantName": "string", "lastMessagePreview": "string", "lastMessageAt": "string" } ]}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
threadId*stringaccountId*stringMessages
application/json- response
[index: integer]?curl -X GET 'https://pod.example.com/api/hub/messaging/conversations/string/messages?accountId=string'[ { "externalMessageId": "string", "threadId": "string", "senderName": "string", "body": "string", "sentAt": "string", "direction": "inbound", "attachments": [ { "name": "string", "url": "string" } ] }]bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
threadId*stringapplication/json- body
accountId*stringworkspaceId?stringsessionId?stringImport proposal created (or no messages to import)
application/json- response
proposalId*string|nullrecordCount*numberitemCount*numbergated?string"denied""deferred"curl -X POST 'https://pod.example.com/api/hub/messaging/conversations/string/import' \ -H 'Content-Type: application/json' \ -d '{ "accountId": "string"}'{ "proposalId": "string", "recordCount": 0, "itemCount": 0, "gated": "denied"}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
threadId*stringapplication/json- body
accountId*stringbody*stringMessage sent
application/json- response
success*booleancurl -X POST 'https://pod.example.com/api/hub/messaging/conversations/string/send' \ -H 'Content-Type: application/json' \ -d '{ "accountId": "string", "body": "string"}'{ "success": true}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
provider?stringunreadOnly?string"true""false"External channels list
application/json- response
channels*array<>curl -X GET 'https://pod.example.com/api/hub/messaging/channels'{ "channels": [ { "channelId": "string", "provider": "string", "threadId": "string", "title": "string", "participantName": "string", "lastMessageAt": "string", "lastMessagePreview": "string", "unread": true, "entityId": "string", "messageCount": 0 } ]}