curl --request POST \
--url https://api.hubapi.com/crm/extensions/calling/2026-03/transcripts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"engagementId": 123,
"transcriptCreateUtterances": [
{
"endTimeMillis": 123,
"speaker": {
"id": "<string>",
"name": "<string>",
"email": "<string>"
},
"startTimeMillis": 123,
"text": "<string>",
"languageCode": "<string>"
}
]
}
'import requests
url = "https://api.hubapi.com/crm/extensions/calling/2026-03/transcripts"
payload = {
"engagementId": 123,
"transcriptCreateUtterances": [
{
"endTimeMillis": 123,
"speaker": {
"id": "<string>",
"name": "<string>",
"email": "<string>"
},
"startTimeMillis": 123,
"text": "<string>",
"languageCode": "<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({
engagementId: 123,
transcriptCreateUtterances: [
{
endTimeMillis: 123,
speaker: {id: '<string>', name: '<string>', email: '<string>'},
startTimeMillis: 123,
text: '<string>',
languageCode: '<string>'
}
]
})
};
fetch('https://api.hubapi.com/crm/extensions/calling/2026-03/transcripts', 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.hubapi.com/crm/extensions/calling/2026-03/transcripts",
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([
'engagementId' => 123,
'transcriptCreateUtterances' => [
[
'endTimeMillis' => 123,
'speaker' => [
'id' => '<string>',
'name' => '<string>',
'email' => '<string>'
],
'startTimeMillis' => 123,
'text' => '<string>',
'languageCode' => '<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.hubapi.com/crm/extensions/calling/2026-03/transcripts"
payload := strings.NewReader("{\n \"engagementId\": 123,\n \"transcriptCreateUtterances\": [\n {\n \"endTimeMillis\": 123,\n \"speaker\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"startTimeMillis\": 123,\n \"text\": \"<string>\",\n \"languageCode\": \"<string>\"\n }\n ]\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.hubapi.com/crm/extensions/calling/2026-03/transcripts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"engagementId\": 123,\n \"transcriptCreateUtterances\": [\n {\n \"endTimeMillis\": 123,\n \"speaker\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"startTimeMillis\": 123,\n \"text\": \"<string>\",\n \"languageCode\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/crm/extensions/calling/2026-03/transcripts")
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 \"engagementId\": 123,\n \"transcriptCreateUtterances\": [\n {\n \"endTimeMillis\": 123,\n \"speaker\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"startTimeMillis\": 123,\n \"text\": \"<string>\",\n \"languageCode\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>"
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Create a transcript
Créez une nouvelle transcription pour un appel dans votre compte HubSpot. Ce point de terminaison vous permet de soumettre les détails d’une transcription d’appel, y compris l’ID d’engagement et les énoncés, afin qu’ils soient stockés et gérés dans HubSpot. Ceci est utile pour intégrer les données de transcription d’appel dans vos workflows CRM.
curl --request POST \
--url https://api.hubapi.com/crm/extensions/calling/2026-03/transcripts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"engagementId": 123,
"transcriptCreateUtterances": [
{
"endTimeMillis": 123,
"speaker": {
"id": "<string>",
"name": "<string>",
"email": "<string>"
},
"startTimeMillis": 123,
"text": "<string>",
"languageCode": "<string>"
}
]
}
'import requests
url = "https://api.hubapi.com/crm/extensions/calling/2026-03/transcripts"
payload = {
"engagementId": 123,
"transcriptCreateUtterances": [
{
"endTimeMillis": 123,
"speaker": {
"id": "<string>",
"name": "<string>",
"email": "<string>"
},
"startTimeMillis": 123,
"text": "<string>",
"languageCode": "<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({
engagementId: 123,
transcriptCreateUtterances: [
{
endTimeMillis: 123,
speaker: {id: '<string>', name: '<string>', email: '<string>'},
startTimeMillis: 123,
text: '<string>',
languageCode: '<string>'
}
]
})
};
fetch('https://api.hubapi.com/crm/extensions/calling/2026-03/transcripts', 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.hubapi.com/crm/extensions/calling/2026-03/transcripts",
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([
'engagementId' => 123,
'transcriptCreateUtterances' => [
[
'endTimeMillis' => 123,
'speaker' => [
'id' => '<string>',
'name' => '<string>',
'email' => '<string>'
],
'startTimeMillis' => 123,
'text' => '<string>',
'languageCode' => '<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.hubapi.com/crm/extensions/calling/2026-03/transcripts"
payload := strings.NewReader("{\n \"engagementId\": 123,\n \"transcriptCreateUtterances\": [\n {\n \"endTimeMillis\": 123,\n \"speaker\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"startTimeMillis\": 123,\n \"text\": \"<string>\",\n \"languageCode\": \"<string>\"\n }\n ]\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.hubapi.com/crm/extensions/calling/2026-03/transcripts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"engagementId\": 123,\n \"transcriptCreateUtterances\": [\n {\n \"endTimeMillis\": 123,\n \"speaker\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"startTimeMillis\": 123,\n \"text\": \"<string>\",\n \"languageCode\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/crm/extensions/calling/2026-03/transcripts")
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 \"engagementId\": 123,\n \"transcriptCreateUtterances\": [\n {\n \"endTimeMillis\": 123,\n \"speaker\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"startTimeMillis\": 123,\n \"text\": \"<string>\",\n \"languageCode\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>"
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Supported products
Supported products
Required Scopes
Required Scopes
Autorisations
The access token received from the authorization server in the OAuth 2.0 flow.
Corps
L'identifiant unique de l'engagement associé à cette transcription. Il s'agit d'un entier au format int64.
Un tableau d'énoncés qui composent la transcription. Chaque énoncé est représenté par un objet TranscriptCreateUtterance.
Show child attributes
Show child attributes
Réponse
successful operation
L'identifiant unique de la transcription créée, représenté sous forme de chaîne de caractères.