Logo
Search
Docs

Fields & validation

Query filters, list/detail response fields, and conversation shape.

Query filters

FieldEndpointsNotes
assistant_idlist, search, index, statsLocal assistants.id
statuslist, search, indexEnum values below. On search/index, literal all means no filter
directionlist, search, indexinbound or outbound. On search/index, literal all means no filter
start_date / end_datelist, search, index, statsApplied with whereDate on start_time
searchlist, index (optional); search (required, min 3)list/index: call_id + summary. search: + transcript
per_page / pagelist, search, indexDefaults 20 / 15 / 20 respectively; not clamped here

Status & direction values

status column enum: initiated, ringing, in-progress, completed, failed, busy, no-answer, cancelled.

direction column enum: inbound, outbound.

List / search row fields

FieldSourceEnd-user
idcall_logs.idyes
call_idcall_logs.call_idyes
assistant_idcall_logs.assistant_idyes (local PK)
phone_numbercall_logs.phone_numberyes — number used on this call
caller_numbercall_logs.caller_numberyes
durationcall_logs.durationyes (seconds)
status / directionenumsyes
start_time / end_timetimestampsyes
summarycall_logs.summaryyes
call_record_file_namecolumnyes
created_attimestampsindex only (not /list or /search)
assistant_name / assistant_phoneJOIN assistantsyes
has_recording, public_audio_url, public_audio_player_urlmodel appendsyes
cost / currencycolumnscontent admins only

Detail-only fields

  • transcript — full stored transcript text.
  • user_id, reseller_id, workspace_id, updated_at — present on the model toArray() for detail.
  • metadata, webhook_data, nested assistant (with vapi_assistant_id) — content admins only.
  • Sibling conversation — structured messages; see the show endpoint notes.

No FormRequest rules

These endpoints do not use Laravel validation rule strings except the hard-coded search length check that returns 400. Invalid filter values that do not match any rows simply yield an empty page rather than 422.