Get call
curl --request GET \
--url https://api.nixflex.com/v1/calls/{call_id}import requests
url = "https://api.nixflex.com/v1/calls/{call_id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.nixflex.com/v1/calls/{call_id}', 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.nixflex.com/v1/calls/{call_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://api.nixflex.com/v1/calls/{call_id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.nixflex.com/v1/calls/{call_id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nixflex.com/v1/calls/{call_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyCalls
Get call
GET /v1/calls/:id
GET
/
v1
/
calls
/
{call_id}
Get call
curl --request GET \
--url https://api.nixflex.com/v1/calls/{call_id}import requests
url = "https://api.nixflex.com/v1/calls/{call_id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.nixflex.com/v1/calls/{call_id}', 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.nixflex.com/v1/calls/{call_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://api.nixflex.com/v1/calls/{call_id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.nixflex.com/v1/calls/{call_id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nixflex.com/v1/calls/{call_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyFetches a single call: transcript, recording URL, and post-call analysis.
Request
curl https://api.nixflex.com/v1/calls/CA1234567890 \
-H "Authorization: Bearer KEY_ID:KEY_SECRET"
Response
200 OK returns one call object with exactly the same shape as an entry in List calls - both endpoints return the full call record.
{
"call_id": "CA1234567890",
"agent_id": "agent_125207e452f8714a",
"call_direction": "inbound",
"call_type": "inbound",
"from_number": "+447386172392",
"to_number": "+447446466847",
"call_status": "completed",
"start_timestamp": 1784987006751,
"answered_at": 1784987011051,
"end_timestamp": 1784987048847,
"duration_ms": 37796,
"ended_reason": "caller_hangup",
"transcript": "AI: Hello, Acme Dental, how can I help?\nCaller: Hi, I'd like to book a check-up.",
"call_summary": "Caller booked a check-up for Tuesday at 2pm.",
"caller_sentiment": "happy",
"call_successful": true,
"extracted_data": {
"caller_name": "Sarah Johnson",
"appointment_time": "14:00"
},
"bookings": [],
"recording_url": "https://storage.nixflex.com/recordings/CA1234567890.mp3",
"recording_duration_s": 37,
"voicemail_detected": false,
"voicemail_detection_method": null,
"amd_result": null,
"campaign_id": null,
"avg_latency_ms": 780,
"caller_name": null,
"call_reason": null,
"created_at": "2026-07-25T03:45:12Z"
}
Field reference
Every field is described once, in List calls. The two endpoints return the same object, so there is deliberately no second table here to fall out of date. Three worth repeating:| Field | Notes |
|---|---|
duration_ms | Time connected, from answer to hangup - the number you are billed on. Ring time is excluded, so it will not equal end_timestamp - start_timestamp on an outbound call. |
transcript | A single string, with each turn on its own line - not an array of turn objects. |
recording_url | The MP3 in Nixflex storage, or null if recording was off for this call. The copy on your carrier is deleted after Nixflex downloads it, so this is the only copy - see Data retention. |
Timestamps
start_timestamp, answered_at and end_timestamp are epoch
milliseconds as numbers. Only created_at is an ISO 8601 string.Errors
| Code | Cause |
|---|---|
call_not_found | ID doesn’t exist or belongs to another account |
Related
- List calls - the full field reference, plus paging
- Webhooks - get this object pushed to you when a call ends
- Call recording - why
recording_urlmay benull
⌘I