Skip to main content
POST
/
conversations
/
custom-channels
/
2026-03
/
{channelId}
/
messages
Publish a message
curl --request POST \
  --url https://api.hubapi.com/conversations/custom-channels/2026-03/{channelId}/messages \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "attachments": [
    {
      "fileId": "<string>",
      "type": "FILE",
      "fileUsageType": "AUDIO"
    }
  ],
  "channelAccountId": "<string>",
  "messageDirection": "INCOMING",
  "recipients": [
    {
      "deliveryIdentifier": {
        "type": "CHANNEL_SPECIFIC_OPAQUE_ID",
        "value": "<string>"
      },
      "name": "<string>",
      "senderActorId": "<string>"
    }
  ],
  "senders": [
    {
      "deliveryIdentifier": {
        "type": "CHANNEL_SPECIFIC_OPAQUE_ID",
        "value": "<string>"
      },
      "name": "<string>",
      "senderActorId": "<string>"
    }
  ],
  "text": "<string>",
  "timestamp": "2023-11-07T05:31:56Z",
  "associateWithContactId": 123,
  "inReplyToId": "<string>",
  "integrationIdempotencyId": "<string>",
  "integrationThreadId": "<string>",
  "richText": "<string>"
}
'
{
  "archived": true,
  "attachments": [
    {
      "fileId": "<string>",
      "fileUsageType": "AUDIO",
      "type": "FILE",
      "name": "<string>",
      "url": "<string>"
    }
  ],
  "channelAccountId": "<string>",
  "channelId": "<string>",
  "client": {
    "clientType": "HUBSPOT",
    "integrationAppId": 123
  },
  "conversationsThreadId": "<string>",
  "createdAt": "2023-11-07T05:31:56Z",
  "createdBy": "<string>",
  "direction": "INCOMING",
  "id": "<string>",
  "recipients": [
    {
      "deliveryIdentifier": {
        "type": "CHANNEL_SPECIFIC_OPAQUE_ID",
        "value": "<string>"
      },
      "actorId": "<string>",
      "name": "<string>",
      "recipientField": "<string>"
    }
  ],
  "senders": [
    {
      "actorId": "<string>",
      "deliveryIdentifier": {
        "type": "CHANNEL_SPECIFIC_OPAQUE_ID",
        "value": "<string>"
      },
      "name": "<string>",
      "senderField": "<string>"
    }
  ],
  "text": "<string>",
  "truncationStatus": "NOT_TRUNCATED",
  "type": "MESSAGE",
  "inReplyToId": "<string>",
  "richText": "<string>",
  "status": {
    "statusType": "FAILED",
    "failureDetails": {
      "errorMessageTokens": {},
      "errorMessage": "<string>"
    }
  },
  "subject": "<string>",
  "updatedAt": "2023-11-07T05:31:56Z"
}

Documentation Index

Fetch the complete documentation index at: https://developers.hubspot.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

Supported products

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Path Parameters

channelId
integer<int32>
required

Body

application/json
attachments
(FILE · object | LOCATION · object | CONTACT · object | UNSUPPORTED_CONTENT · object | MESSAGE_HEADER · object | QUICK_REPLIES · object | SOCIAL_MEDIA_METADATA · object)[]
required
channelAccountId
string
required
messageDirection
enum<string>
required
Available options:
INCOMING,
OUTGOING
recipients
object[]
required
senders
object[]
required
text
string
required
timestamp
string<date-time>
required
associateWithContactId
integer<int64>
inReplyToId
string
integrationIdempotencyId
string
integrationThreadId
string
preResolvedContacts
object
richText
string

Response

successful operation

archived
boolean
required
attachments
(FILE · object | LOCATION · object | CONTACT · object | UNSUPPORTED_CONTENT · object | MESSAGE_HEADER · object | QUICK_REPLIES · object | WHATSAPP_TEMPLATE_METADATA · object | SOCIAL_MEDIA_METADATA · object)[]
required
channelAccountId
string
required
channelId
string
required
client
object
required
conversationsThreadId
string
required
createdAt
string<date-time>
required
createdBy
string
required
direction
enum<string>
required
Available options:
INCOMING,
OUTGOING
id
string
required
recipients
object[]
required
senders
object[]
required
text
string
required
truncationStatus
enum<string>
required
Available options:
NOT_TRUNCATED,
TRUNCATED,
TRUNCATED_TO_MOST_RECENT_REPLY
type
enum<string>
default:MESSAGE
required
Available options:
MESSAGE
inReplyToId
string
richText
string
status
object
subject
string
updatedAt
string<date-time>
Last modified on March 30, 2026