curl --request POST \
--url https://api.hubapi.com/conversations/conversations/2026-09-beta/threads/{threadId}/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "MESSAGE",
"text": "<string>",
"attachments": [
{
"fileId": "<string>",
"type": "FILE"
}
],
"recipients": [
{
"deliveryIdentifiers": [
{
"type": "CHANNEL_SPECIFIC_OPAQUE_ID",
"value": "<string>"
}
],
"actorId": "<string>",
"name": "<string>",
"recipientField": "<string>"
}
],
"senderActorId": "<string>",
"channelId": "<string>",
"channelAccountId": "<string>",
"richText": "<string>",
"subject": "<string>"
}
'{
"type": "MESSAGE",
"id": "<string>",
"conversationsThreadId": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"createdBy": "<string>",
"client": {
"clientType": "HUBSPOT",
"integrationAppId": 123
},
"senders": [
{
"actorId": "<string>",
"deliveryIdentifier": {
"type": "CHANNEL_SPECIFIC_OPAQUE_ID",
"value": "<string>"
},
"name": "<string>",
"senderField": "<string>"
}
],
"recipients": [
{
"deliveryIdentifier": {
"type": "CHANNEL_SPECIFIC_OPAQUE_ID",
"value": "<string>"
},
"actorId": "<string>",
"name": "<string>",
"recipientField": "<string>"
}
],
"archived": true,
"text": "<string>",
"attachments": [
{
"fileId": "<string>",
"fileUsageType": "AUDIO",
"type": "FILE",
"name": "<string>",
"url": "<string>"
}
],
"truncationStatus": "NOT_TRUNCATED",
"direction": "INCOMING",
"channelId": "<string>",
"channelAccountId": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"richText": "<string>",
"subject": "<string>",
"inReplyToId": "<string>",
"status": {
"statusType": "FAILED",
"failureDetails": {
"errorMessageTokens": {},
"errorMessage": "<string>"
}
}
}Create a new message within a specific conversation thread in your HubSpot account. This endpoint allows you to send messages as part of an ongoing conversation, which can include various types of content such as text, attachments, and more. It is useful for programmatically interacting with conversation threads and ensuring seamless communication flow.
curl --request POST \
--url https://api.hubapi.com/conversations/conversations/2026-09-beta/threads/{threadId}/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "MESSAGE",
"text": "<string>",
"attachments": [
{
"fileId": "<string>",
"type": "FILE"
}
],
"recipients": [
{
"deliveryIdentifiers": [
{
"type": "CHANNEL_SPECIFIC_OPAQUE_ID",
"value": "<string>"
}
],
"actorId": "<string>",
"name": "<string>",
"recipientField": "<string>"
}
],
"senderActorId": "<string>",
"channelId": "<string>",
"channelAccountId": "<string>",
"richText": "<string>",
"subject": "<string>"
}
'{
"type": "MESSAGE",
"id": "<string>",
"conversationsThreadId": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"createdBy": "<string>",
"client": {
"clientType": "HUBSPOT",
"integrationAppId": 123
},
"senders": [
{
"actorId": "<string>",
"deliveryIdentifier": {
"type": "CHANNEL_SPECIFIC_OPAQUE_ID",
"value": "<string>"
},
"name": "<string>",
"senderField": "<string>"
}
],
"recipients": [
{
"deliveryIdentifier": {
"type": "CHANNEL_SPECIFIC_OPAQUE_ID",
"value": "<string>"
},
"actorId": "<string>",
"name": "<string>",
"recipientField": "<string>"
}
],
"archived": true,
"text": "<string>",
"attachments": [
{
"fileId": "<string>",
"fileUsageType": "AUDIO",
"type": "FILE",
"name": "<string>",
"url": "<string>"
}
],
"truncationStatus": "NOT_TRUNCATED",
"direction": "INCOMING",
"channelId": "<string>",
"channelAccountId": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"richText": "<string>",
"subject": "<string>",
"inReplyToId": "<string>",
"status": {
"statusType": "FAILED",
"failureDetails": {
"errorMessageTokens": {},
"errorMessage": "<string>"
}
}
}Supported products
Required Scopes
The access token received from the authorization server in the OAuth 2.0 flow.
MESSAGE Show child attributes
Show child attributes
successful operation
MESSAGE Show child attributes
Show child attributes
Show child attributes
Show child attributes
NOT_TRUNCATED, TRUNCATED_TO_MOST_RECENT_REPLY, TRUNCATED INCOMING, OUTGOING Show child attributes
Was this page helpful?