CRM Communications
Log a communication (call, email, SMS) on a deal, contact, or company
POST
/
crm
/
communications
Log a communication (call, email, SMS) on a deal, contact, or company
curl --request POST \
--url https://api.example.com/crm/communications \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"subject": "<string>",
"body": "<string>",
"durationSeconds": 1,
"occurredAt": "<string>",
"externalId": "<string>",
"dealId": "<string>",
"contactId": "<string>",
"crmCompanyId": "<string>"
}
'import requests
url = "https://api.example.com/crm/communications"
payload = {
"subject": "<string>",
"body": "<string>",
"durationSeconds": 1,
"occurredAt": "<string>",
"externalId": "<string>",
"dealId": "<string>",
"contactId": "<string>",
"crmCompanyId": "<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({
subject: '<string>',
body: JSON.stringify('<string>'),
durationSeconds: 1,
occurredAt: '<string>',
externalId: '<string>',
dealId: '<string>',
contactId: '<string>',
crmCompanyId: '<string>'
})
};
fetch('https://api.example.com/crm/communications', 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://api.example.com/crm/communications",
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([
'subject' => '<string>',
'body' => '<string>',
'durationSeconds' => 1,
'occurredAt' => '<string>',
'externalId' => '<string>',
'dealId' => '<string>',
'contactId' => '<string>',
'crmCompanyId' => '<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://api.example.com/crm/communications"
payload := strings.NewReader("{\n \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"durationSeconds\": 1,\n \"occurredAt\": \"<string>\",\n \"externalId\": \"<string>\",\n \"dealId\": \"<string>\",\n \"contactId\": \"<string>\",\n \"crmCompanyId\": \"<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://api.example.com/crm/communications")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"durationSeconds\": 1,\n \"occurredAt\": \"<string>\",\n \"externalId\": \"<string>\",\n \"dealId\": \"<string>\",\n \"contactId\": \"<string>\",\n \"crmCompanyId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/crm/communications")
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 \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"durationSeconds\": 1,\n \"occurredAt\": \"<string>\",\n \"externalId\": \"<string>\",\n \"dealId\": \"<string>\",\n \"contactId\": \"<string>\",\n \"crmCompanyId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"type": "call",
"direction": "inbound",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"subject": "<string>",
"body": "<string>",
"durationSeconds": 123,
"outcome": "connected",
"externalId": "<string>",
"dealId": "<string>",
"contactId": "<string>",
"crmCompanyId": "<string>",
"loggedById": "<string>",
"loggedByName": "<string>",
"occurredAt": "2023-11-07T05:31:56Z"
}{
"statusCode": 400,
"message": [
"limit must not be greater than 100"
],
"error": "BadRequestException"
}{
"statusCode": 400,
"message": [
"limit must not be greater than 100"
],
"error": "BadRequestException"
}{
"statusCode": 400,
"message": [
"limit must not be greater than 100"
],
"error": "BadRequestException"
}{
"statusCode": 400,
"message": [
"limit must not be greater than 100"
],
"error": "BadRequestException"
}Authorizations
ApiKeyJWTApiUserHeader
Bearer token: a Platform API Key (format: ak_live::) or a Personal Access Token (format: rgo-...). PATs always act as the token owner.
Body
application/json
Available options:
call, email, sms, whatsapp Available options:
inbound, outbound Subject line (for emails)
Body/notes about the communication
Duration in seconds (for calls)
Required range:
x >= 0Outcome (for calls)
Available options:
connected, voicemail, no_answer, busy When the communication occurred
External ID (email thread ID, etc.)
Deal ID to attach the communication to
Contact ID to attach the communication to
CRM Company ID to attach the communication to
Response
Available options:
call, email, sms, whatsapp Available options:
inbound, outbound Available options:
connected, voicemail, no_answer, busy ⌘I
Log a communication (call, email, SMS) on a deal, contact, or company
curl --request POST \
--url https://api.example.com/crm/communications \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"subject": "<string>",
"body": "<string>",
"durationSeconds": 1,
"occurredAt": "<string>",
"externalId": "<string>",
"dealId": "<string>",
"contactId": "<string>",
"crmCompanyId": "<string>"
}
'import requests
url = "https://api.example.com/crm/communications"
payload = {
"subject": "<string>",
"body": "<string>",
"durationSeconds": 1,
"occurredAt": "<string>",
"externalId": "<string>",
"dealId": "<string>",
"contactId": "<string>",
"crmCompanyId": "<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({
subject: '<string>',
body: JSON.stringify('<string>'),
durationSeconds: 1,
occurredAt: '<string>',
externalId: '<string>',
dealId: '<string>',
contactId: '<string>',
crmCompanyId: '<string>'
})
};
fetch('https://api.example.com/crm/communications', 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://api.example.com/crm/communications",
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([
'subject' => '<string>',
'body' => '<string>',
'durationSeconds' => 1,
'occurredAt' => '<string>',
'externalId' => '<string>',
'dealId' => '<string>',
'contactId' => '<string>',
'crmCompanyId' => '<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://api.example.com/crm/communications"
payload := strings.NewReader("{\n \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"durationSeconds\": 1,\n \"occurredAt\": \"<string>\",\n \"externalId\": \"<string>\",\n \"dealId\": \"<string>\",\n \"contactId\": \"<string>\",\n \"crmCompanyId\": \"<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://api.example.com/crm/communications")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"durationSeconds\": 1,\n \"occurredAt\": \"<string>\",\n \"externalId\": \"<string>\",\n \"dealId\": \"<string>\",\n \"contactId\": \"<string>\",\n \"crmCompanyId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/crm/communications")
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 \"subject\": \"<string>\",\n \"body\": \"<string>\",\n \"durationSeconds\": 1,\n \"occurredAt\": \"<string>\",\n \"externalId\": \"<string>\",\n \"dealId\": \"<string>\",\n \"contactId\": \"<string>\",\n \"crmCompanyId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"type": "call",
"direction": "inbound",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"subject": "<string>",
"body": "<string>",
"durationSeconds": 123,
"outcome": "connected",
"externalId": "<string>",
"dealId": "<string>",
"contactId": "<string>",
"crmCompanyId": "<string>",
"loggedById": "<string>",
"loggedByName": "<string>",
"occurredAt": "2023-11-07T05:31:56Z"
}{
"statusCode": 400,
"message": [
"limit must not be greater than 100"
],
"error": "BadRequestException"
}{
"statusCode": 400,
"message": [
"limit must not be greater than 100"
],
"error": "BadRequestException"
}{
"statusCode": 400,
"message": [
"limit must not be greater than 100"
],
"error": "BadRequestException"
}{
"statusCode": 400,
"message": [
"limit must not be greater than 100"
],
"error": "BadRequestException"
}