Call logs search
GET
https://app.sulus.ai/api/call-logs/search
Full-text search call logs (call id, summary, transcript)
Authentication
Send a bearer token created on your dashboard's Developer page:
Authorization: Bearer <YOUR_API_KEY>
Query parameters
search
string
Required
Search term. Matched with LIKE against call_id, summary, and transcript.
Validation:
required; minimum length 3 (enforced in controller, not FormRequest)assistant_id
integer
Optional
Nullable
Limit results to one local assistant id.
Stored in
call_logs.assistant_idstatus
string
Optional
Nullable
When present and not the literal string "all", filters call_logs.status.
Stored in
call_logs.statusdirection
string
Optional
Nullable
When present and not the literal string "all", filters call_logs.direction.
Stored in
call_logs.directionstart_date
string
Optional
Nullable
Inclusive lower bound on start_time (date portion).
Stored in
call_logs.start_timeend_date
string
Optional
Nullable
Inclusive upper bound on start_time (date portion).
Stored in
call_logs.start_timeper_page
integer
Optional
Nullable
Default: 15
Page size. Not clamped in this controller.
page
integer
Optional
Nullable
Default: 1
Laravel paginator page number.
Errors
| Status | Meaning | Body |
|---|---|---|
401 |
Missing or invalid bearer token | |
403 |
Feature call_logs not enabled for the account | {"message":"This feature is not enabled for your account. Please contact your administrator.","feature":"call_logs"} |
400 |
Missing search or fewer than 3 characters | {"success":false,"message":"Search term must be at least 3 characters"} |
Notes
- Default per_page is 15 (list/index default to 20).
- Results ordered by relevance CASE (call_id match, then summary, then transcript), then start_time descending.
- status/direction value "all" is ignored (same as index).
curl --request GET \
--url https://app.sulus.ai/api/call-logs/search \
--header 'Authorization: Bearer <YOUR_API_KEY>'
import requests
url = "https://app.sulus.ai/api/call-logs/search"
headers = {"Authorization": "Bearer <YOUR_API_KEY>"}
response = requests.get(url, headers=headers)
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "https://app.sulus.ai/api/call-logs/search"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <YOUR_API_KEY>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}
Response
200
{
"success": true,
"data": [
{
"id": 1842,
"call_id": "call_01hxyz9abcdeFGHIjklmnopq",
"assistant_id": 57,
"phone_number": "+14155550100",
"caller_number": "+14155550199",
"duration": 142,
"status": "completed",
"direction": "inbound",
"start_time": "2026-07-30T14:02:11.000000Z",
"end_time": "2026-07-30T14:04:33.000000Z",
"summary": "Caller asked about return policy; assistant confirmed 30-day window.",
"call_record_file_name": "rec_01hxyz9abcdeFGHIjklmnopq.mp3",
"assistant_name": "Front Desk",
"assistant_phone": "+14155550100",
"has_recording": true,
"public_audio_url": "https://app.example.com/play/rec_01hxyz9abcdeFGHIjklmnopq.mp3",
"public_audio_player_url": "https://app.example.com/p/rec_01hxyz9abcdeFGHIjklmnopq.mp3"
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 15,
"total": 2,
"from": 1,
"to": 2
}
}
Response — GET
/call-logs/search
200
{
"success": true,
"data": [
{
"id": 1842,
"call_id": "call_01hxyz9abcdeFGHIjklmnopq",
"assistant_id": 57,
"phone_number": "+14155550100",
"caller_number": "+14155550199",
"duration": 142,
"status": "completed",
"direction": "inbound",
"start_time": "2026-07-30T14:02:11.000000Z",
"end_time": "2026-07-30T14:04:33.000000Z",
"summary": "Caller asked about return policy; assistant confirmed 30-day window.",
"call_record_file_name": "rec_01hxyz9abcdeFGHIjklmnopq.mp3",
"assistant_name": "Front Desk",
"assistant_phone": "+14155550100",
"has_recording": true,
"public_audio_url": "https://app.example.com/play/rec_01hxyz9abcdeFGHIjklmnopq.mp3",
"public_audio_player_url": "https://app.example.com/p/rec_01hxyz9abcdeFGHIjklmnopq.mp3"
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 15,
"total": 2,
"from": 1,
"to": 2
}
}