Logo
Search
Docs

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 flag squad_call_logs), not /call-logs.
  • Rows join squads and assistants. Responses expose squad_name and squad_external_id; the numeric squad_id is always removed from the JSON (it remains a valid query filter).
  • GET /squad-call-logs/list is implemented as an alias of GET /squad-call-logs — same columns, same filters, same created_at.
  • Stats expose squadPerformance (grouped by squad) instead of assistantPerformance.
  • 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.