Get Call Status
curl --request GET \
--url https://client-backend.oktivo.com/api/v1/crm/calls/{contactUID} \
--header 'Authorization: Bearer <token>'import requests
url = "https://client-backend.oktivo.com/api/v1/crm/calls/{contactUID}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://client-backend.oktivo.com/api/v1/crm/calls/{contactUID}', 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://client-backend.oktivo.com/api/v1/crm/calls/{contactUID}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://client-backend.oktivo.com/api/v1/crm/calls/{contactUID}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://client-backend.oktivo.com/api/v1/crm/calls/{contactUID}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-backend.oktivo.com/api/v1/crm/calls/{contactUID}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"contactUID": "contact_7f8a9b0c1d2e",
"campaignUID": "campaign_3e4f5g6h7i8j",
"phone": "+14155551234",
"name": "Jane Smith",
"status": "completed",
"callStatus": "completed",
"callDuration": 145,
"billingDuration": 180,
"attempts": 1,
"lastError": null,
"retryConfig": {
"retryCount": 2,
"retryDelays": [5, 15]
},
"dynamicVariables": {
"company": "Acme Corp",
"deal_value": "$50,000"
},
"callDirection": "outbound",
"createdAt": "2025-01-15T10:00:00.000Z",
"updatedAt": "2025-01-15T10:02:25.000Z"
}
}
{
"success": false,
"message": "Contact not found"
}
Calls
Get Call Status
Get the status and details of an API-triggered call.
GET
/
api
/
v1
/
crm
/
calls
/
{contactUID}
Get Call Status
curl --request GET \
--url https://client-backend.oktivo.com/api/v1/crm/calls/{contactUID} \
--header 'Authorization: Bearer <token>'import requests
url = "https://client-backend.oktivo.com/api/v1/crm/calls/{contactUID}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://client-backend.oktivo.com/api/v1/crm/calls/{contactUID}', 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://client-backend.oktivo.com/api/v1/crm/calls/{contactUID}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://client-backend.oktivo.com/api/v1/crm/calls/{contactUID}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://client-backend.oktivo.com/api/v1/crm/calls/{contactUID}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-backend.oktivo.com/api/v1/crm/calls/{contactUID}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"contactUID": "contact_7f8a9b0c1d2e",
"campaignUID": "campaign_3e4f5g6h7i8j",
"phone": "+14155551234",
"name": "Jane Smith",
"status": "completed",
"callStatus": "completed",
"callDuration": 145,
"billingDuration": 180,
"attempts": 1,
"lastError": null,
"retryConfig": {
"retryCount": 2,
"retryDelays": [5, 15]
},
"dynamicVariables": {
"company": "Acme Corp",
"deal_value": "$50,000"
},
"callDirection": "outbound",
"createdAt": "2025-01-15T10:00:00.000Z",
"updatedAt": "2025-01-15T10:02:25.000Z"
}
}
{
"success": false,
"message": "Contact not found"
}
Path Parameters
string
required
The unique identifier of the contact, returned from the Trigger Call endpoint.
Response
boolean
Indicates if the request was successful.
object
Show data properties
Show data properties
string
Unique identifier for this contact.
string
The campaign this call belongs to.
string
The phone number dialed (E.164 format).
string
The contact’s display name.
string
Contact-level status:
pending, in_progress, completed, failed, or stopped.string
Call-level outcome:
ringing, in_progress, completed, busy, no_answer, failed, etc.number
Actual call duration in seconds.
number
Rounded-up duration used for billing (in seconds, rounded to nearest minute).
number
Number of call attempts made (including the initial attempt).
string | null
Description of the most recent error, or
null if no errors.object | null
The retry configuration for this call, or
null if no retries configured.object | null
The dynamic variables passed when the call was triggered.
string
Always
outbound for API-triggered calls.string
ISO 8601 timestamp of when the call was created.
string
ISO 8601 timestamp of the last status update.
{
"success": true,
"data": {
"contactUID": "contact_7f8a9b0c1d2e",
"campaignUID": "campaign_3e4f5g6h7i8j",
"phone": "+14155551234",
"name": "Jane Smith",
"status": "completed",
"callStatus": "completed",
"callDuration": 145,
"billingDuration": 180,
"attempts": 1,
"lastError": null,
"retryConfig": {
"retryCount": 2,
"retryDelays": [5, 15]
},
"dynamicVariables": {
"company": "Acme Corp",
"deal_value": "$50,000"
},
"callDirection": "outbound",
"createdAt": "2025-01-15T10:00:00.000Z",
"updatedAt": "2025-01-15T10:02:25.000Z"
}
}
{
"success": false,
"message": "Contact not found"
}
This endpoint accepts both API Token (
okt_...) and JWT authentication. You can only access calls belonging to your account.