Calls
List calls
Retrieve a paginated list of WhatsApp voice calls.
Kapso Extension: This endpoint returns call records stored in Kapso’s database, not Meta’s API.
Supports filtering by direction, status, and time range. Uses cursor-based pagination.
GET
/
{phone_number_id}
/
calls
List calls
curl --request GET \
--url https://api.kapso.ai/meta/whatsapp/v24.0/{phone_number_id}/calls \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.kapso.ai/meta/whatsapp/v24.0/{phone_number_id}/calls"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.kapso.ai/meta/whatsapp/v24.0/{phone_number_id}/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.kapso.ai/meta/whatsapp/v24.0/{phone_number_id}/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 => [
"X-API-Key: <api-key>"
],
]);
$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.kapso.ai/meta/whatsapp/v24.0/{phone_number_id}/calls"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.kapso.ai/meta/whatsapp/v24.0/{phone_number_id}/calls")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kapso.ai/meta/whatsapp/v24.0/{phone_number_id}/calls")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"call_id": "call_abc123",
"direction": "inbound",
"status": "completed",
"duration_seconds": 180,
"started_at": "2024-01-15T12:34:56.123Z",
"ended_at": "2024-01-15T12:37:56.123Z",
"session_started_at": "2024-01-15T12:34:58.123Z",
"created_at": "2024-01-15T12:34:56.000Z",
"updated_at": "2024-01-15T12:37:56.000Z",
"user_wa_id": "15551234567",
"whatsapp_contact_id": "223e4567-e89b-12d3-a456-426614174001",
"whatsapp_conversation_id": "323e4567-e89b-12d3-a456-426614174002",
"project_id": "423e4567-e89b-12d3-a456-426614174003",
"whatsapp_config_id": "523e4567-e89b-12d3-a456-426614174004",
"config_display_name": "Support Line",
"config_display_phone_number": "+1 (555) 123-4567",
"phone_number_id": "110987654321",
"whatsapp_contact": {
"id": "223e4567-e89b-12d3-a456-426614174001",
"wa_id": "15551234567",
"profile_name": "John Doe",
"display_name": "John (VIP Customer)"
},
"whatsapp_conversation": {
"id": "323e4567-e89b-12d3-a456-426614174002",
"phone_number": "15551234567",
"status": "active",
"last_active_at": "2024-01-15T14:30:00.000Z"
}
},
{
"id": "724e4567-e89b-12d3-a456-426614174006",
"call_id": "call_def456",
"direction": "outbound",
"status": "failed",
"duration_seconds": null,
"started_at": "2024-01-15T10:20:15.123Z",
"ended_at": null,
"session_started_at": null,
"created_at": "2024-01-15T10:20:15.000Z",
"updated_at": "2024-01-15T10:20:30.000Z",
"user_wa_id": "15559876543",
"whatsapp_contact_id": "824e4567-e89b-12d3-a456-426614174007",
"whatsapp_conversation_id": null,
"project_id": "423e4567-e89b-12d3-a456-426614174003",
"whatsapp_config_id": "523e4567-e89b-12d3-a456-426614174004",
"config_display_name": "Support Line",
"config_display_phone_number": "+1 (555) 123-4567",
"phone_number_id": "110987654321",
"whatsapp_contact": {
"id": "824e4567-e89b-12d3-a456-426614174007",
"wa_id": "15559876543",
"profile_name": "Jane Smith",
"display_name": null
},
"whatsapp_conversation": null
}
],
"paging": {
"cursors": {
"after": "eyJ2YWx1ZXMiOlsiMjAyNC0wMS0xNVQxMDoyMDoxNS4wMDAwMDBaIiwiNzI0ZTQ1NjctZTg5Yi0xMmQzLWE0NTYtNDI2NjE0MTc0MDA2Il0sImNvbHVtbnMiOlsiY2FsbF90aW1lc3RhbXAiLCJpZCJdfQ=="
}
}
}{
"error": {
"message": "Invalid phone number format",
"type": "OAuthException",
"code": 400,
"error_subcode": 1001,
"fbtrace_id": "AXk7s_8dR4eVHp9Kq2MmNlO"
}
}Authorizations
ApiKeyAuthBearerAuth
Project API key for authentication. This is the recommended authentication method.
Get your API key from the Kapso dashboard under Integrations > API keys.
Path Parameters
WhatsApp Business Phone Number ID
Query Parameters
Filter by call direction
Available options:
inbound, outbound Filter by call status
Available options:
initiated, ringing, answered, completed, failed Filter calls started on or after this time (ISO 8601)
Filter calls started on or before this time (ISO 8601)
Maximum number of results per page (default 20, max 100)
Required range:
1 <= x <= 100Cursor for previous page (Base64 encoded)
Cursor for next page (Base64 encoded)
Filter response fields
Was this page helpful?
⌘I
List calls
curl --request GET \
--url https://api.kapso.ai/meta/whatsapp/v24.0/{phone_number_id}/calls \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.kapso.ai/meta/whatsapp/v24.0/{phone_number_id}/calls"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.kapso.ai/meta/whatsapp/v24.0/{phone_number_id}/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.kapso.ai/meta/whatsapp/v24.0/{phone_number_id}/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 => [
"X-API-Key: <api-key>"
],
]);
$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.kapso.ai/meta/whatsapp/v24.0/{phone_number_id}/calls"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.kapso.ai/meta/whatsapp/v24.0/{phone_number_id}/calls")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kapso.ai/meta/whatsapp/v24.0/{phone_number_id}/calls")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"call_id": "call_abc123",
"direction": "inbound",
"status": "completed",
"duration_seconds": 180,
"started_at": "2024-01-15T12:34:56.123Z",
"ended_at": "2024-01-15T12:37:56.123Z",
"session_started_at": "2024-01-15T12:34:58.123Z",
"created_at": "2024-01-15T12:34:56.000Z",
"updated_at": "2024-01-15T12:37:56.000Z",
"user_wa_id": "15551234567",
"whatsapp_contact_id": "223e4567-e89b-12d3-a456-426614174001",
"whatsapp_conversation_id": "323e4567-e89b-12d3-a456-426614174002",
"project_id": "423e4567-e89b-12d3-a456-426614174003",
"whatsapp_config_id": "523e4567-e89b-12d3-a456-426614174004",
"config_display_name": "Support Line",
"config_display_phone_number": "+1 (555) 123-4567",
"phone_number_id": "110987654321",
"whatsapp_contact": {
"id": "223e4567-e89b-12d3-a456-426614174001",
"wa_id": "15551234567",
"profile_name": "John Doe",
"display_name": "John (VIP Customer)"
},
"whatsapp_conversation": {
"id": "323e4567-e89b-12d3-a456-426614174002",
"phone_number": "15551234567",
"status": "active",
"last_active_at": "2024-01-15T14:30:00.000Z"
}
},
{
"id": "724e4567-e89b-12d3-a456-426614174006",
"call_id": "call_def456",
"direction": "outbound",
"status": "failed",
"duration_seconds": null,
"started_at": "2024-01-15T10:20:15.123Z",
"ended_at": null,
"session_started_at": null,
"created_at": "2024-01-15T10:20:15.000Z",
"updated_at": "2024-01-15T10:20:30.000Z",
"user_wa_id": "15559876543",
"whatsapp_contact_id": "824e4567-e89b-12d3-a456-426614174007",
"whatsapp_conversation_id": null,
"project_id": "423e4567-e89b-12d3-a456-426614174003",
"whatsapp_config_id": "523e4567-e89b-12d3-a456-426614174004",
"config_display_name": "Support Line",
"config_display_phone_number": "+1 (555) 123-4567",
"phone_number_id": "110987654321",
"whatsapp_contact": {
"id": "824e4567-e89b-12d3-a456-426614174007",
"wa_id": "15559876543",
"profile_name": "Jane Smith",
"display_name": null
},
"whatsapp_conversation": null
}
],
"paging": {
"cursors": {
"after": "eyJ2YWx1ZXMiOlsiMjAyNC0wMS0xNVQxMDoyMDoxNS4wMDAwMDBaIiwiNzI0ZTQ1NjctZTg5Yi0xMmQzLWE0NTYtNDI2NjE0MTc0MDA2Il0sImNvbHVtbnMiOlsiY2FsbF90aW1lc3RhbXAiLCJpZCJdfQ=="
}
}
}{
"error": {
"message": "Invalid phone number format",
"type": "OAuthException",
"code": 400,
"error_subcode": 1001,
"fbtrace_id": "AXk7s_8dR4eVHp9Kq2MmNlO"
}
}
