Overview
What Squad Call History covers, how it differs from assistant Call History, and the response envelope.
What this reference explains
Squad Call History is the read-only surface for calls that ran through a squad: when the call happened, which squad handled it, which member assistant was active at the end, duration, summary, optional recording links, and (on the detail endpoint) the transcript plus a structured conversation.
This reference shows how the squad-call-logs system works under the hood: every Squad Call History dashboard action goes through these endpoints, with exact query parameters, response keys, storage columns, and error responses.
How this differs from Call History
- Base path is
/squad-call-logs(feature flagsquad_call_logs), not/call-logs. - Rows join
squadsandassistants. Responses exposesquad_nameandsquad_external_id; the numericsquad_idis always removed from the JSON (it remains a valid query filter). GET /squad-call-logs/listis implemented as an alias ofGET /squad-call-logs— same columns, same filters, samecreated_at.- Stats expose
squadPerformance(grouped by squad) instead ofassistantPerformance. - Detail 404 message is
Squad call log not found(not the assistant Call History wording).
Identifiers
The detail path uses the public call_id string (unique on squad_call_logs), not the numeric primary key. The squad's public identifier in responses is squad_external_id (from the Squads module). assistant_id on a row is the local assistants table primary key of the member that finished the call (nullable when unknown).
Role-based field visibility
Callers who are not content admins never receive cost, currency, metadata, or webhook_data. On the detail endpoint they also do not receive nested assistant or squad objects (which would otherwise include vapi_assistant_id on the assistant). They still get squad_name, squad_external_id, assistant_name, and assistant_phone.
Content admins receive cost fields on list/search/stats/detail, and on detail they also receive metadata, webhook_data, and the nested assistant / squad models (assistant includes vapi_assistant_id; the Squad model hides its numeric id). Raw upstream dump object bodies are omitted from the examples on this page.
Response envelope
List, search, index, and stats use {"success": true, "data": ...}. Paginated endpoints add sibling meta (current_page, last_page, per_page, total, from, to). The detail endpoint returns success, data, and a sibling conversation object.
Feature availability
This module is gated by the squad_call_logs feature. When disabled, every endpoint under /squad-call-logs returns 403 with {"message":"This feature is not enabled for your account. Please contact your administrator.","feature":"squad_call_logs"}.
Out of scope here
Assistant Call History (/api/call-logs), admin/super-admin squad-call-log routes, and write/delete of call logs are not part of this module. Rows are created by inbound webhook processing, not by these endpoints.