curl --request POST \
--url https://n-api.leadstaker.com/v1/telephony/calls/{id}/transcription \
--header 'x-api-key: <api-key>'import requests
url = "https://n-api.leadstaker.com/v1/telephony/calls/{id}/transcription"
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
fetch('https://n-api.leadstaker.com/v1/telephony/calls/{id}/transcription', 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://n-api.leadstaker.com/v1/telephony/calls/{id}/transcription",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://n-api.leadstaker.com/v1/telephony/calls/{id}/transcription"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://n-api.leadstaker.com/v1/telephony/calls/{id}/transcription")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://n-api.leadstaker.com/v1/telephony/calls/{id}/transcription")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "6abd10c5812811e995a28f1f",
"projectId": "665f1c2e8a94b70012d4e9a1",
"entityId": "6715be3a9c40aa0013d8e5c2",
"entityType": "DEAL",
"provider": "API4COM",
"externalId": "1759236412.4821",
"direction": "OUTBOUND",
"from": {
"type": "EXTENSION",
"number": "1000",
"userId": "664d9e0b7c83aa0010f1c2d3"
},
"to": {
"type": "PHONE",
"number": "5548999998888"
},
"startedAt": "2026-09-30T13:40:02.000Z",
"answeredAt": "2026-09-30T13:40:11.000Z",
"endedAt": "2026-09-30T13:42:34.000Z",
"durationInSeconds": 143,
"outcome": "ANSWERED",
"recording": {
"status": "STORED",
"mimeType": "audio/mpeg"
},
"transcription": {
"status": "PENDING"
},
"analysis": null,
"createdAt": "2026-09-30T13:42:40.000Z",
"updatedAt": "2026-09-30T13:43:15.000Z"
}{
"errorCode": "<string>",
"message": "<string>",
"status": 123,
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"errorCode": "<string>",
"message": "<string>",
"status": 123,
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"errorCode": "<string>",
"message": "<string>",
"status": 123,
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"errorCode": "<string>",
"message": "<string>",
"status": 123,
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}Transcribe a call
Queues the transcription of a call that has none yet, or whose last one failed, and answers with the call in PENDING. Calls over one hour are not transcribed on their own, so this is how to get theirs. A transcription already pending or done answers the call as it is, without queuing another. Answers 404 RECORDING while the recording is not STORED, and 422 TELEPHONY_CALL_TOO_LONG when it is over the size the transcription accepts (about 1h40).
curl --request POST \
--url https://n-api.leadstaker.com/v1/telephony/calls/{id}/transcription \
--header 'x-api-key: <api-key>'import requests
url = "https://n-api.leadstaker.com/v1/telephony/calls/{id}/transcription"
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
fetch('https://n-api.leadstaker.com/v1/telephony/calls/{id}/transcription', 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://n-api.leadstaker.com/v1/telephony/calls/{id}/transcription",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://n-api.leadstaker.com/v1/telephony/calls/{id}/transcription"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://n-api.leadstaker.com/v1/telephony/calls/{id}/transcription")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://n-api.leadstaker.com/v1/telephony/calls/{id}/transcription")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "6abd10c5812811e995a28f1f",
"projectId": "665f1c2e8a94b70012d4e9a1",
"entityId": "6715be3a9c40aa0013d8e5c2",
"entityType": "DEAL",
"provider": "API4COM",
"externalId": "1759236412.4821",
"direction": "OUTBOUND",
"from": {
"type": "EXTENSION",
"number": "1000",
"userId": "664d9e0b7c83aa0010f1c2d3"
},
"to": {
"type": "PHONE",
"number": "5548999998888"
},
"startedAt": "2026-09-30T13:40:02.000Z",
"answeredAt": "2026-09-30T13:40:11.000Z",
"endedAt": "2026-09-30T13:42:34.000Z",
"durationInSeconds": 143,
"outcome": "ANSWERED",
"recording": {
"status": "STORED",
"mimeType": "audio/mpeg"
},
"transcription": {
"status": "PENDING"
},
"analysis": null,
"createdAt": "2026-09-30T13:42:40.000Z",
"updatedAt": "2026-09-30T13:43:15.000Z"
}{
"errorCode": "<string>",
"message": "<string>",
"status": 123,
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"errorCode": "<string>",
"message": "<string>",
"status": 123,
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"errorCode": "<string>",
"message": "<string>",
"status": 123,
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"errorCode": "<string>",
"message": "<string>",
"status": 123,
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}Authorizations
Path Parameters
1Response
Success
11The deal the call is attached to, or the contact when it has no deal.
1DEAL, CONTACT API4COM The call id on the telephony provider.
1OUTBOUND, INBOUND - Option 1
- Option 2
Show child attributes
Show child attributes
- Option 1
- Option 2
Show child attributes
Show child attributes
Talk time, from the answer to the hang up.
ANSWERED, NO_ANSWER, BUSY, VOICEMAIL, FAILED Show child attributes
Show child attributes
Null while there is no stored recording.
Show child attributes
Show child attributes
The AI summary, written after each transcription; null before the first one.
Show child attributes
Show child attributes