Skip to main content
POST
/
inbox
/
conversations
Compose and send a new inbox message
curl --request POST \
  --url https://rest.breakcold.com/api/v1/inbox/conversations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "workspaceId": "<string>",
  "workspaceIntegrationAccountId": "<string>",
  "textPlain": "<string>",
  "textHtml": "<string>",
  "recordId": "<string>",
  "attachments": [
    {
      "storageId": "<string>",
      "filename": "<string>",
      "mimeType": "<string>"
    }
  ],
  "socialIdentifier": "<string>"
}
'
import requests

url = "https://rest.breakcold.com/api/v1/inbox/conversations"

payload = {
"workspaceId": "<string>",
"workspaceIntegrationAccountId": "<string>",
"textPlain": "<string>",
"textHtml": "<string>",
"recordId": "<string>",
"attachments": [
{
"storageId": "<string>",
"filename": "<string>",
"mimeType": "<string>"
}
],
"socialIdentifier": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
workspaceId: '<string>',
workspaceIntegrationAccountId: '<string>',
textPlain: '<string>',
textHtml: '<string>',
recordId: '<string>',
attachments: [{storageId: '<string>', filename: '<string>', mimeType: '<string>'}],
socialIdentifier: '<string>'
})
};

fetch('https://rest.breakcold.com/api/v1/inbox/conversations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://rest.breakcold.com/api/v1/inbox/conversations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'workspaceId' => '<string>',
'workspaceIntegrationAccountId' => '<string>',
'textPlain' => '<string>',
'textHtml' => '<string>',
'recordId' => '<string>',
'attachments' => [
[
'storageId' => '<string>',
'filename' => '<string>',
'mimeType' => '<string>'
]
],
'socialIdentifier' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://rest.breakcold.com/api/v1/inbox/conversations"

payload := strings.NewReader("{\n \"workspaceId\": \"<string>\",\n \"workspaceIntegrationAccountId\": \"<string>\",\n \"textPlain\": \"<string>\",\n \"textHtml\": \"<string>\",\n \"recordId\": \"<string>\",\n \"attachments\": [\n {\n \"storageId\": \"<string>\",\n \"filename\": \"<string>\",\n \"mimeType\": \"<string>\"\n }\n ],\n \"socialIdentifier\": \"<string>\"\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://rest.breakcold.com/api/v1/inbox/conversations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"workspaceId\": \"<string>\",\n \"workspaceIntegrationAccountId\": \"<string>\",\n \"textPlain\": \"<string>\",\n \"textHtml\": \"<string>\",\n \"recordId\": \"<string>\",\n \"attachments\": [\n {\n \"storageId\": \"<string>\",\n \"filename\": \"<string>\",\n \"mimeType\": \"<string>\"\n }\n ],\n \"socialIdentifier\": \"<string>\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://rest.breakcold.com/api/v1/inbox/conversations")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"workspaceId\": \"<string>\",\n \"workspaceIntegrationAccountId\": \"<string>\",\n \"textPlain\": \"<string>\",\n \"textHtml\": \"<string>\",\n \"recordId\": \"<string>\",\n \"attachments\": [\n {\n \"storageId\": \"<string>\",\n \"filename\": \"<string>\",\n \"mimeType\": \"<string>\"\n }\n ],\n \"socialIdentifier\": \"<string>\"\n}"

response = http.request(request)
puts response.read_body
{
  "conversation": {
    "id": "<string>",
    "workspaceId": "<string>",
    "lastMessageAtMs": 123,
    "isClosed": true,
    "subject": "<string>",
    "lifecycle": "<string>",
    "mailbox": "<string>",
    "lastMessageSnippet": "<string>",
    "hasAttachments": true,
    "hasLinkedRecords": true,
    "attendees": [
      {
        "id": "<string>",
        "displayName": "<string>",
        "handle": "<string>",
        "email": "<string>",
        "isSender": true,
        "isWorkspaceMember": true
      }
    ],
    "assignees": [
      {
        "id": "<string>",
        "name": "<string>",
        "email": "<string>"
      }
    ]
  },
  "message": {
    "id": "<string>",
    "workspaceId": "<string>",
    "conversationId": "<string>",
    "sentAtMs": 123,
    "textPlain": "<string>",
    "textHtml": "<string>",
    "subject": "<string>",
    "receivedAtMs": 123,
    "attachmentCount": 123
  },
  "providerMessageId": "<string>"
}
{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": "<unknown>",
"retryAfterMs": 123
}
}
{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": "<unknown>",
"retryAfterMs": 123
}
}
{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": "<unknown>",
"retryAfterMs": 123
}
}
{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": "<unknown>",
"retryAfterMs": 123
}
}
{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"details": "<unknown>",
"retryAfterMs": 123
}
}

Authorizations

Authorization
string
header
required

Breakcold public API key, for example Bearer bc_live_....

Headers

X-Breakcold-Organization-Id
string

Breakcold organization ID. API keys already carry their organization, so most API-key requests do not need this header. Use it only when Breakcold asks you to choose an organization for a signed-in user token.

Body

application/json
workspaceId
string
required
Minimum string length: 6
workspaceIntegrationAccountId
string
required
Minimum string length: 6
channel
enum<string>
required
Available options:
email,
linkedin,
telegram,
whatsapp
textPlain
string
required
textHtml
string
recordId
string
Minimum string length: 6
attachments
object[]
email
object
socialIdentifier
string

Recipient identifier for social channels, such as the provider username, account identifier, or phone number expected by the selected LinkedIn, Telegram, or WhatsApp account.

Response

Success

conversation
object
required
message
object
required
providerMessageId
string