List Calls
curl --request GET \
--url https://api.example.com/callsimport requests
url = "https://api.example.com/calls"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/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.example.com/calls",
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.example.com/calls"
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.example.com/calls")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/calls")
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_body{
"calls": [
{
"id": "<string>",
"created_time": "<string>",
"timestamp": 123,
"assistant_id": "<string>",
"from": "<string>",
"to": "<string>",
"status": "<string>",
"duration": 123,
"recording": "<string>",
"transcript": "<string>",
"success": true,
"summary": "<string>",
"output": {},
"data": {
"params": {}
}
}
],
"401 Unauthorized": {},
"403 Forbidden": {},
"500 Internal Server Error": {}
}Endpoints
List Calls
Retrieve a list of calls with filtering options
GET
/
calls
List Calls
curl --request GET \
--url https://api.example.com/callsimport requests
url = "https://api.example.com/calls"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/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.example.com/calls",
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.example.com/calls"
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.example.com/calls")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/calls")
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_body{
"calls": [
{
"id": "<string>",
"created_time": "<string>",
"timestamp": 123,
"assistant_id": "<string>",
"from": "<string>",
"to": "<string>",
"status": "<string>",
"duration": 123,
"recording": "<string>",
"transcript": "<string>",
"success": true,
"summary": "<string>",
"output": {},
"data": {
"params": {}
}
}
],
"401 Unauthorized": {},
"403 Forbidden": {},
"500 Internal Server Error": {}
}Overview
This endpoint retrieves a list of calls associated with the authenticated user’s assistants. You can filter calls by date range, status, and playbook.Authentication
This endpoint requires authentication using a Bearer token in the Authorization header.Authorization: Bearer YOUR_API_TOKEN
Query Parameters
string
Start date for filtering calls. Format:
YYYY-MM-DD or YYYY-MM-DD HH:mm:ssIf not provided, it will be calculated based on daysFromNow parameter.string
End date for filtering calls. Format:
YYYY-MM-DD or YYYY-MM-DD HH:mm:ssIf not provided, it will default to the current date/time.number
default:"15"
Number of days to look back from today. Only used if
startDate and endDate are not provided.- Minimum: 1
- Maximum: 90
- Default: 15
string
Filter calls by status. Valid values:
open- Call is in progress or pendingclosed- Call has been completed successfullyrong-phone-forno-answer- Wrong phone number or no answerwmat- Waiting for manual actionfailed- Call failedrecall-scheduled- A recall has been scheduledvoicemail- Call went to voicemail
string
Filter calls by a specific playbook (assistant) ID. Must be a valid UUID.
Response
array
Array of call objects, ordered by
created_time descending (most recent first).Show Call Object
Show Call Object
string
Unique identifier for the call (UUID)
string
When the call was created. Format:
YYYY-MM-DD HH:mm:ss (UTC)number
Unix timestamp in milliseconds of when the call was created
string
ID of the assistant (playbook) that handled the call
string
Phone number that initiated the call. Empty if not available or invalid.
string
Phone number that received the call
string
Current status of the call. See status parameter for possible values.
number
Duration of the call in seconds
string
URL to the call recording (if available)
string
HTML-formatted transcript of the call. Includes speaker labels formatted as
<b>[Speaker]</b>.boolean
Whether the call was successful
string
AI-generated summary of the call
object
Structured output data from the call. Format depends on the playbook configuration.
Example Requests
Get calls from the last 30 days
GET https://api.meetzy.io/calls?daysFromNow=30
Get calls within a specific date range
GET https://api.meetzy.io/calls?startDate=2024-01-01&endDate=2024-01-31
Get only closed calls
GET https://api.meetzy.io/calls?status=closed
Get calls for a specific playbook
GET https://api.meetzy.io/calls?playbook_id=550e8400-e29b-41d4-a716-446655440000
Combine filters
GET https://api.meetzy.io/calls?daysFromNow=7&status=closed&playbook_id=550e8400-e29b-41d4-a716-446655440000
Example Response
[
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"created_time": "2024-11-12 10:30:00",
"timestamp": 1731407400000,
"assistant_id": "550e8400-e29b-41d4-a716-446655440000",
"from": "+34612345678",
"to": "+34987654321",
"status": "closed",
"duration": 180,
"recording": "https://recordings.meetzy.io/call-123.mp3",
"transcript": "<b>[Agent]</b> Hello, this is Sarah from Meetzy...<br><br><b>[Customer]</b> Hi Sarah...",
"success": true,
"summary": "Customer was interested in the premium plan...",
"output": {
"appointment_scheduled": true,
"date": "2024-11-15",
"time": "14:00"
},
"data": {
"params": {
"campaign_id": "summer-2024",
"lead_source": "website"
}
}
}
]
Error Responses
object
Authentication failed or token is invalid
{
"error": "Unauthorized"
}
object
User does not have permission to access this resource
"Unauthorized"
object
An error occurred on the server
"Internal Server Error"
Notes
- All dates are handled in Europe/Madrid timezone and converted to UTC in the response
- The
fromfield is automatically sanitized to remove invalid entries like “phoneNumber.phoneNumber” - Transcripts are formatted with HTML tags for better readability in UI applications
- The endpoint automatically filters calls to only show those belonging to assistants owned by the authenticated user
- Maximum date range when using
daysFromNowis 90 days
Was this page helpful?

