accounts

List Account Calls

This account's call activity across every campaign and manual dial, most-recent-first (admin only).

get/accounts/{account_id}/calls

Request

  • Base URL
    https://dev.whispa.net (the document declares no server; this is the origin it was published from)
  • Auth
    • OAuth 2
      Password
      Token URL: auth/bearer/login
    • or API key in cookie access_token

Path parameters

account_idstring uuid required

Query parameters

limitinteger

Max recent calls to return.

include_phone_matchesboolean

Also return calls that carry no CRM link at all but whose canonical number is one of this account's, tagged match_source='phone'. Off by default: the campaign surface reads this endpoint as the dials behind an attempts counter, and an unlinked inbound call is not a dial attempt.

include_summariesboolean

Also return each call's written summary (the review screen).

Response

Successful Response

idstring uuid required
match_source'linked' | 'phone'

'linked' when someone explicitly attached this call to the account; 'phone' when it carries no CRM decision at all and was matched on customer_number_e164. A phone match is display-only evidence of contact with the number — never account attribution.

started_atstring date-time required
ended_atstring date-time nullable
duration_secondsinteger nullable
call_direction'incoming' | 'outgoing' | 'internal'

Direction of the call.

  • INCOMING: Customer called agent
  • OUTGOING: Agent called customer
  • INTERNAL: Extension-to-extension call
call_mode'training' | 'production' | 'ai_agent'

Call mode enumeration.

summary_textstring nullable
scenariostring nullable
qa_scoreinteger nullable

Overall QA scorecard score. Mirrors analyzer_artifacts['qa_scorecard']['overall_score'].

status'ongoing' | 'completed' | 'unanswered' | 'error'

Call lifecycle state.

  • ONGOING: Call is currently in progress
  • COMPLETED: Call finished (regardless of whether it was answered)
  • ERROR: Technical error/exception during call processing
  • UNANSWERED: DEPRECATED - Use status=COMPLETED + telephony_result=NO_ANSWER instead. Kept for backwards compatibility with existing database records.
telephony_result'connected' | 'busy' | 'no_answer' | 'rejected' | 'failed'

Telephony-level call connection result.

Represents what happened at the telephony level before any conversation. This is typically provided by the PBX/telephony system, not AI-classified.

answered_by'human' | 'voicemail' | 'unclear'

Who answered the call (AI-classified from transcript).

This is the first stage of call classification - determining whether a human or voicemail answered the call.

conversation_outcome'engaged' | 'refused' | 'wrong_person' | 'other'

AI-classified judgement of what kind of conversation occurred.

Only applicable when answered_by=HUMAN. Runtime actions such as scheduling a callback or transferring the caller are recorded independently in WorkflowDisposition and must never overwrite this judgement.

workflow_disposition'none' | 'callback_scheduled' | 'transferred' | 'human_followup_required' | 'do_not_contact'

Deterministic action the autonomous workflow took before finalizing.

NONE is explicit for finalized autonomous calls with no special handoff/follow-up action. NULL means the dimension does not apply (human copilot, uploaded, or legacy calls), rather than overloading NULL with two meanings.

agent_end_reason'conversation_complete' | 'existing_arrangement_claimed' | 'customer_requested_human' | 'identity_verification_failed' | 'customer_declined_to_engage' | 'customer_unavailable' | 'wrong_person' | 'do_not_contact' | 'hardship_detected' | 'dispute_raised' | 'escalation' | 'voicemail' | 'no_answer' | 'caller_hung_up' | 'caller_abandoned' | 'answer_failed' | 'answer_timeout' | 'dial_failed' | 'transfer_failed' | 'screening_timeout' | 'idle_timeout' | 'max_duration' | 'api_hangup' | 'error' | 'other'

Normalized reason an autonomous call ended.

The raw runtime string remains in analyzer_artifacts for diagnostics. This enum is the stable operational projection: semantic reasons exposed to the voice model plus bounded technical termination categories. Novel runtime endings degrade to OTHER instead of failing finalization.

commitment_shape'new_arrangement' | 'immediate_payment' | 'settlement' | 'arrangement_repair' | 'promise_reset' | 'deferral' | 'refused' | 'other'

Taxonomy of commitment outcomes extracted from a collections call.

Changes

No recorded changes to this operation across all 1 revision of this API.