Logo
Search
Docs

Call logs list

GET https://app.sulus.ai/api/call-logs/list

List call logs (dashboard default)

Authentication

Send a bearer token created on your dashboard's Developer page:

Authorization: Bearer <YOUR_API_KEY>

Query parameters

assistant_id integer Optional Nullable

Limit results to one local assistant id.

Stored in call_logs.assistant_id
status string Optional Nullable

When present, filters call_logs.status exactly (the dashboard clears "all" client-side before calling).

Stored in call_logs.status
direction string Optional Nullable

When present, filters call_logs.direction exactly (the dashboard clears "all" client-side before calling).

Stored in call_logs.direction
start_date string Optional Nullable

Inclusive lower bound on start_time (date portion).

Stored in call_logs.start_time
end_date string Optional Nullable

Inclusive upper bound on start_time (date portion).

Stored in call_logs.start_time
search string Optional Nullable

Substring match on call_id and summary (list/index). On /search it is required and also matches transcript.

per_page integer Optional Nullable Default: 20

Page size. Not clamped in this controller.

page integer Optional Nullable Default: 1

Laravel paginator page number.

Errors

StatusMeaningBody
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"}

Notes

  • Does not return created_at (unlike GET /call-logs).
  • status and direction are applied whenever the query param is present — there is no server-side "all" skip on this endpoint.
  • cost and currency are present only for content admins; examples show the end-user shape.
  • assistant_name falls back to "Unknown Assistant" when the join finds no assistant row.
curl --request GET \
  --url https://app.sulus.ai/api/call-logs/list \
  --header 'Authorization: Bearer <YOUR_API_KEY>'
import requests

url = "https://app.sulus.ai/api/call-logs/list"
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/list"
	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": 3,
        "per_page": 20,
        "total": 47,
        "from": 1,
        "to": 20
    }
}