curl --request GET \
--url https://api.openmic.ai/v1/calls \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.openmic.ai/v1/calls"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.openmic.ai/v1/calls', 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.openmic.ai/v1/calls",
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.openmic.ai/v1/calls"
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.openmic.ai/v1/calls")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openmic.ai/v1/calls")
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{
"calls": [
{
"call_type": "phonecall",
"from_number": "+1234567890",
"to_number": "+0987654321",
"direction": "outbound",
"call_id": "cmbbvrg8wzi487w02m2bc7dji",
"agent_id": "bvrg8wzi487w02m2bc7dh0ev",
"call_status": "ended",
"customer_id": "customer_001",
"start_timestamp": 1678886400000,
"end_timestamp": 1678886700000,
"duration_ms": 300000,
"transcript": [
[
"assistant",
"Hello! How can I help you today?"
],
[
"user",
"I'd like to schedule an appointment."
]
],
"recording_url": "https://recordings.openmic.ai/call_98765.mp3",
"latency": {
"e2e_min_latency": 0.5,
"e2e_median_latency": 1.2,
"e2e_p90_latency": 2.1,
"llm_min_latency": 0.3,
"llm_median_latency": 0.8,
"llm_p90_latency": 1.5,
"tts_min_latency": 0.2,
"tts_median_latency": 0.4,
"tts_p90_latency": 0.6
},
"call_analysis": {
"summary": "Customer called to schedule an appointment and was successfully assisted.",
"is_successful": true,
"success_evaluation": "excellent",
"extracted_data": null
},
"call_cost": {
"total_cost": 0.0822,
"llm_cost": 0.0052548,
"tts_cost": 0.0242269,
"stt_cost": 0.0527183
},
"dynamic_variables": {
"name": "John"
}
}
],
"pagination": {
"limit": 1,
"offset": 0,
"total": 1,
"has_more": false
}
}{
"error": "Invalid query parameters provided."
}{
"error": "Unauthorized",
"message": "Invalid or expired API key"
}{
"error": "An unexpected error occurred. Please try again later."
}List Calls
Retrieve all calls with optional filtering and pagination.
curl --request GET \
--url https://api.openmic.ai/v1/calls \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.openmic.ai/v1/calls"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.openmic.ai/v1/calls', 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.openmic.ai/v1/calls",
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.openmic.ai/v1/calls"
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.openmic.ai/v1/calls")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openmic.ai/v1/calls")
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{
"calls": [
{
"call_type": "phonecall",
"from_number": "+1234567890",
"to_number": "+0987654321",
"direction": "outbound",
"call_id": "cmbbvrg8wzi487w02m2bc7dji",
"agent_id": "bvrg8wzi487w02m2bc7dh0ev",
"call_status": "ended",
"customer_id": "customer_001",
"start_timestamp": 1678886400000,
"end_timestamp": 1678886700000,
"duration_ms": 300000,
"transcript": [
[
"assistant",
"Hello! How can I help you today?"
],
[
"user",
"I'd like to schedule an appointment."
]
],
"recording_url": "https://recordings.openmic.ai/call_98765.mp3",
"latency": {
"e2e_min_latency": 0.5,
"e2e_median_latency": 1.2,
"e2e_p90_latency": 2.1,
"llm_min_latency": 0.3,
"llm_median_latency": 0.8,
"llm_p90_latency": 1.5,
"tts_min_latency": 0.2,
"tts_median_latency": 0.4,
"tts_p90_latency": 0.6
},
"call_analysis": {
"summary": "Customer called to schedule an appointment and was successfully assisted.",
"is_successful": true,
"success_evaluation": "excellent",
"extracted_data": null
},
"call_cost": {
"total_cost": 0.0822,
"llm_cost": 0.0052548,
"tts_cost": 0.0242269,
"stt_cost": 0.0527183
},
"dynamic_variables": {
"name": "John"
}
}
],
"pagination": {
"limit": 1,
"offset": 0,
"total": 1,
"has_more": false
}
}{
"error": "Invalid query parameters provided."
}{
"error": "Unauthorized",
"message": "Invalid or expired API key"
}{
"error": "An unexpected error occurred. Please try again later."
}Authorizations
API key authentication. Include your secret API key (omic_...) in the Authorization header as: Authorization: Bearer <your-api-key>. The public key (omic_pub_...) is only accepted by the endpoints the browser widgets call (/whoami, /test-call, /workflow-test-call, and the chat endpoints); every other endpoint rejects it with 403 This endpoint requires a private API key.
Query Parameters
Maximum number of calls to return (1-100)
1 <= x <= 100Number of calls to skip
x >= 0Filter by customer ID
Filter by originating phone number
Filter by destination phone number
Filter by bot UID
Filter calls from this date (ISO 8601 format)
Filter calls to this date (ISO 8601 format)
Filter by call status
registered, ongoing, ended, error Filter by call type
phonecall, webcall Was this page helpful?