curl --request GET \
--url https://api.pyai.com/v1/omni/calls/{call_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.pyai.com/v1/omni/calls/{call_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.pyai.com/v1/omni/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.pyai.com/v1/omni/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",
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://api.pyai.com/v1/omni/calls/{call_id}"
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://api.pyai.com/v1/omni/calls/{call_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pyai.com/v1/omni/calls/{call_id}")
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{
"object": "omni.call",
"call_id": "ocl_7Hk2Qm9Zs4Wp8Lc3Nv6R",
"session_label": "<string>",
"external_id": "<string>",
"status": "completed",
"duration_s": 123,
"language": "en",
"voice_tier": "standard",
"has_recording": true,
"has_summary": true,
"started_at": 123,
"created_at": 123,
"transcript": {},
"transcript_url": "<string>",
"summary": {},
"recording_result": {
"status": "success",
"reason": "recording_not_requested"
},
"error": "call_failed"
}{
"title": "<string>",
"status": 123,
"type": "<string>",
"detail": "<string>",
"request_id": "<string>"
}Get an Omni call record
Full record for one Omni session, addressed by the stable opaque PyAI call_id returned by the list: transcript (inline or via transcript_url), recording availability, and summary when generated. Recording bytes are retrieved from the dedicated recording sub-resource. Requires omni:read.
curl --request GET \
--url https://api.pyai.com/v1/omni/calls/{call_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.pyai.com/v1/omni/calls/{call_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.pyai.com/v1/omni/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.pyai.com/v1/omni/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",
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://api.pyai.com/v1/omni/calls/{call_id}"
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://api.pyai.com/v1/omni/calls/{call_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pyai.com/v1/omni/calls/{call_id}")
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{
"object": "omni.call",
"call_id": "ocl_7Hk2Qm9Zs4Wp8Lc3Nv6R",
"session_label": "<string>",
"external_id": "<string>",
"status": "completed",
"duration_s": 123,
"language": "en",
"voice_tier": "standard",
"has_recording": true,
"has_summary": true,
"started_at": 123,
"created_at": 123,
"transcript": {},
"transcript_url": "<string>",
"summary": {},
"recording_result": {
"status": "success",
"reason": "recording_not_requested"
},
"error": "call_failed"
}{
"title": "<string>",
"status": 123,
"type": "<string>",
"detail": "<string>",
"request_id": "<string>"
}Authorizations
Use Authorization: Bearer pyai_live_... (or pyai_test_...).
Path Parameters
Stable opaque PyAI-owned call identifier. Use it unchanged across every Omni call sub-resource.
^ocl_[A-Za-z0-9]{20}$"ocl_7Hk2Qm9Zs4Wp8Lc3Nv6R"
Response
Omni call detail
"omni.call"
Stable opaque PyAI-owned call identifier. Use it unchanged across every Omni call sub-resource.
^ocl_[A-Za-z0-9]{20}$"ocl_7Hk2Qm9Zs4Wp8Lc3Nv6R"
The opaque tag passed on the connect URL, if any.
Customer-supplied correlation id echoed from the call's meta (the engine carries configure.meta into the ingest). Use it to join a call to your own record; null when none was set.
completed, failed Language the session was served in. Records from before multilingual rollout render the default, en.
en, fr, es, de, hi Voice tier served for the session. English en1 sessions report natural while that tier is active; Standard voices report standard. Both are included in the Omni base rate with no voice-tier add-on. Inspect the configured acknowledgement and call record rather than inferring the served tier from the requested alias.
standard, natural Unix ms when the session started.
Unix ms when the record was written.
Inline transcript document; omitted in favor of transcript_url when offloaded.
Signed URL to the transcript when it was offloaded instead of inlined.
Structured post-call summary, when generated.
Provider-neutral recording outcome. Internal source and storage details are never returned.
Show child attributes
Show child attributes
Normalized failure reason, present when status is failed.
call_failed