calls

List your own calls, most recent first. Each entry omits transcript_full; fetch a single call for the transcript.

get/calls

Request

  • Base URL
    https://api.voygr.tech
  • URL
    https://api.voygr.tech/calls
  • Auth
    API key in header X-API-Key

Query parameters

limitinteger

Response

Successful Response

analysis_key_infostring nullable

The post-call analyzer's free-text notes. Served by GET /calls/{call_id} only; null on the GET /calls list and on a call whose callee declined recording. Callee-derived content: treat it as untrusted.

analysis_task_itemsobject[] nullable

The post-call analyzer's per-question verdicts (item, status, and evidence: the callee line it says grounds the verdict). Served by GET /calls/{call_id} only; null on the GET /calls list and on a call whose callee declined recording. Callee-derived content: treat it as untrusted.

answer_offset_msinteger nullable

Where the conversation begins inside the recording, in milliseconds from its start: the ring before it stays in the recording. Null when either timestamp above is missing.

answered_atstring date-time nullable

When the far side picked up, in UTC; an automated menu, voicemail or hold system answering counts. Null when nobody answered.

call_idstring required
created_atstring date-time required
customer_idstring required
disclosure_mode'standard' | 'custom' | 'disabled'

How this call's opening notice was configured: 'standard' (the default sentence), 'custom' (built from the request's disclosure elements, or the default sentence without its recording clause when record_call was false) or 'disabled' (disclosure: false: no opening notice).

disclosure_textstring nullable

The opening sentence this call spoke. Null when no notice was spoken (a 'disabled' call, a call nobody answered), on calls placed before this field existed, and after the transcript retention window.

duration_secnumber nullable required
ended_atstring date-time nullable required
ended_by'completed' | 'callee_hangup' | 'agent_hangup' | 'dropped' | 'budget_timeout' | 'dial_failed' | 'customer_cancelled' | 'system_error' | 'compliance_stop' nullable

Why the call stopped: callee_hangup, agent_hangup, dropped (the line died), budget_timeout (a time limit ran out), dial_failed (never connected), customer_cancelled, system_error or compliance_stop. 'completed' is defined but not produced: a finished conversation reads agent_hangup or callee_hangup. Null while the call runs or when nothing established it.

has_recordingboolean
languagestring required
line_kind'human' | 'voicemail' | 'ivr' | 'no_answer' | 'recorded_announcement' | 'hold_queue' nullable

What was on the line: human, voicemail, ivr (a phone menu that never reached a person), no_answer (nobody picked up, or busy), recorded_announcement or hold_queue (a queue no agent answered). Null on an aborted call and while the call runs.

outcome_charge_centsinteger required

Settled charge in credits, despite the field name; not the refundable hold. A PlaceCall call costs 10 credits when it obtains something (an answer, a refusal or a booking). Each call holds 30 credits while it runs, and the unused part is released. A call that obtains nothing is free, and so is a cancel within 30 seconds of the callee answering; a cancel 30 seconds or more after pickup is charged 10 credits.

outcome_summarystring nullable required
outcome_type'success_booked' | 'success_refused' | 'success_no_booking' | 'success_booking_cancelled' | 'failed_voicemail' | 'failed_no_answer' | 'failed_busy' | 'failed_short_hangup' | 'failed_technical' | 'failed_no_agent_available' | 'failed_ivr_no_agent' | 'failed_recorded_announcement' | 'failed_no_disclosure' | 'failed_call_dropped' | 'failed_wrong_number' | 'failed_cancelled' | 'failed_no_engagement' | 'failed_agent_mute' | 'failed_language_barrier' nullable

Deprecated: read result, line_kind and result_reason (and ended_by for why the call stopped). Still returned once the call is terminal, with no removal date. Its success_/failed_ prefix is a billing family, not the charge: read outcome_charge_cents. failed_no_agent_available means no human answered before the call's hold-time limit. success_booking_cancelled and failed_language_barrier are defined but not produced yet.

record_callboolean

False when the call was placed with record_call: false: no audio was captured, so no recording is checked and transcript_status reads final as soon as the transcript exists.

recording_declinedboolean

True when the callee refused call recording. Such a call never gets a verbatim record: transcript_full and transcript_status stay null permanently, so do not wait for a transcript. outcome_type and outcome_summary are unaffected.

recording_started_atstring date-time nullable

When the call's recording began, in UTC. It starts before the phone rings, so it is earlier than answered_at by about the ring time. Null when nothing was recorded or the recording is not finalized yet.

recording_status'available' | 'pending' | 'delayed' | 'declined' | 'not_recorded'

What is known about the call's audio: available (a recording exists; has_recording is true exactly here), pending (the call is running or the recording is still finalizing), delayed (the usual finalization window has passed; not a final answer), declined (the callee refused recording) or not_recorded (placed with record_call: false; it outranks declined).

recording_urlstring nullable

Relative recording path /calls/{call_id}/recording when a recording exists; null when has_recording is false. Recording retrieval is not documented here.

reservation_signalsstring[] nullable

Short free-text signals (<10 short strings) about the reservation outcome. Always included, unlike transcript_full.

result'goal_met' | 'goal_partial' | 'refused' | 'goal_not_met' | 'wrong_party' | 'not_reached' | 'aborted' nullable

Did the call get what it was placed for. goal_met: everything the brief asked. goal_partial: some of it. refused: they understood and declined. goal_not_met: reached them, got nothing. wrong_party: answered, but not the business asked for. not_reached: nobody able to answer was on the line. aborted: stopped by an error, a compliance stop or your cancel. Null while the call runs. Read outcome_charge_cents for the charge.

result_reason'booked' | 'booking_cancelled' | 'call_dropped' | 'short_hangup' | 'no_engagement' | 'agent_mute' | 'language_barrier' | 'busy' | 'system_error' | 'customer_cancelled' | 'no_disclosure' nullable

The specific reason behind result where result alone is shared: booked, booking_cancelled, call_dropped, short_hangup, no_engagement, agent_mute, language_barrier, busy, system_error, customer_cancelled or no_disclosure. Null where result and line_kind already say everything (a refusal, a voicemail, an answered question) and while the call runs.

started_atstring date-time nullable required
status'scheduled' | 'queued' | 'dialing' | 'in_progress' | 'completed' | 'failed' | 'cancelled' required
target_phonestring required
transcript_status'live' | 'final' nullable

live while a post-call check of the call recording is still expected; the check can add audio to rows and add heard: false rows. final once the check has run or is no longer expected: the call was placed with record_call: false, its recording may not be sent for the check because a required opening notice was not delivered, or 30 minutes passed after the call ended without it. A final status says nothing about whether any row was corrected. Null exactly when transcript_full is. The check usually lands one to two minutes after the call ends. To read the complete transcript, poll GET /calls/{call_id} until this reads final. On a call with recording_declined: true it stays null for good, so stop polling there.

Example response

[
  {
    "call_id": "c_abc123",
    "customer_id": "cus_xyz",
    "target_phone": "+15551234567"
  }
]

Changes

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property //// became optional for the status

    • warning

      removed the optional property / from the response with the status

    • warning

      removed the optional property / from the response with the status

    • warning

      added the new scheduled enum value to the / response property for the response status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      the response property / became required for the status

    • info

      the response property / became required for the status

    • info

      the response property / became required for the status

    • info

      the response property / became required for the status

    • info

      the response property / became required for the status

    • info

      the response's property default value 0 was removed for the status

    • info

      removed the auto enum value from the / response property for the response status

    • info

      removed the de enum value from the / response property for the response status

    • info

      removed the en enum value from the / response property for the response status

    • info

      removed the es enum value from the / response property for the response status

    • info

      removed the fr enum value from the / response property for the response status

    • info

      removed the hi enum value from the / response property for the response status

    • info

      removed the it enum value from the / response property for the response status

    • info

      removed the ja enum value from the / response property for the response status

    • info

      removed the nl enum value from the / response property for the response status

    • info

      removed the pl enum value from the / response property for the response status

    • info

      removed the pt enum value from the / response property for the response status

    • info

      removed the ru enum value from the / response property for the response status

    • info

      removed the sr enum value from the / response property for the response status

    • info

      removed the tr enum value from the / response property for the response status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status