Get SIP Call Logs
curl --request GET \
--url https://api.bland.ai/v1/sip/calls \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v1/sip/calls"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v1/sip/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.bland.ai/v1/sip/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: <authorization>"
],
]);
$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.bland.ai/v1/sip/calls"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "<authorization>")
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.bland.ai/v1/sip/calls")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/sip/calls")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"data": {
"calls": [
{
"call_id": "abc123@sip.bland.ai",
"direction": "outbound",
"from": "+14150000000",
"to": "+15105551234",
"status": "200 OK",
"sip_code": 200,
"duration_seconds": 45,
"started_at": "2026-03-09T11:00:00Z",
"ended_at": "2026-03-09T11:00:45Z",
"source_ip": "35.80.235.26"
}
]
},
"errors": null
}
SIP Trunks
Get SIP Call Logs
Retrieve SIP call logs for a phone number with cursor-based pagination.
GET
/
v1
/
sip
/
calls
Get SIP Call Logs
curl --request GET \
--url https://api.bland.ai/v1/sip/calls \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v1/sip/calls"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v1/sip/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.bland.ai/v1/sip/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: <authorization>"
],
]);
$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.bland.ai/v1/sip/calls"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "<authorization>")
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.bland.ai/v1/sip/calls")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/sip/calls")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"data": {
"calls": [
{
"call_id": "abc123@sip.bland.ai",
"direction": "outbound",
"from": "+14150000000",
"to": "+15105551234",
"status": "200 OK",
"sip_code": 200,
"duration_seconds": 45,
"started_at": "2026-03-09T11:00:00Z",
"ended_at": "2026-03-09T11:00:45Z",
"source_ip": "35.80.235.26"
}
]
},
"errors": null
}
Headers
string
required
Your API key for authentication.
Query Parameters
string
required
The phone number to fetch call logs for. Must be in E.164 format.
number
Maximum number of calls to return. Default: 50.
string
Cursor for pagination. Pass the
call_id of the last call from the previous page to fetch the next page.Response
array
Array of call records. Each includes:
call_id(string) — Unique SIP Call-IDdirection(string) —"inbound"or"outbound"from(string) — Caller numberto(string) — Callee numberstatus(string) — Final SIP status (e.g.,"200 OK","486 Busy")sip_code(number) — SIP response codeduration_seconds(number) — Call durationstarted_at(string) — ISO 8601 timestampended_at(string) — ISO 8601 timestampsource_ip(string) — Source IP address
Example Request
curl -X GET 'https://api.bland.ai/v1/sip/calls?phone_number=%2B14150000000&limit=10' \
-H "Authorization: Bearer <token>"
{
"data": {
"calls": [
{
"call_id": "abc123@sip.bland.ai",
"direction": "outbound",
"from": "+14150000000",
"to": "+15105551234",
"status": "200 OK",
"sip_code": 200,
"duration_seconds": 45,
"started_at": "2026-03-09T11:00:00Z",
"ended_at": "2026-03-09T11:00:45Z",
"source_ip": "35.80.235.26"
}
]
},
"errors": null
}
Docs for agents: llms.txt
Was this page helpful?