ChatbyteChatbyte Docs
Voice

Calls and transcripts

Know when post-call data is ready and retrieve the persisted transcript safely.

Chatbyte separates the post-call notification from the detailed call record:

  1. voice.postCall tells your integration that a call has reached the relevant terminal boundary.
  2. GET /v1/voice/calls/{conversationId} returns the persisted transcript, summary, and processing state.

Post-call timing

For an answered call, Chatbyte persists the available transcript before starting its post-call workflow. The customer voice.postCall webhook is sent only after that workflow reaches a terminal state.

The webhook is intentionally small. It contains call identity and outcome fields, but it does not contain the transcript or summary.

Failed connection attempts are different. When Chatbyte records that no post-call work was requested, it marks processing as SKIPPED before sending voice.postCall. These events can have no transcript because no answered conversation took place. A failed call that still has transcript or processor work does not send the webhook until that work reaches a terminal state.

Retrieve the call record

Use data.conversationId from the webhook as the path parameter in the Chatbyte API:

curl --request GET \
  --url https://api.chatbyte.ai/v1/voice/calls/{conversationId} \
  --header 'Authorization: Bearer YOUR_API_TOKEN'

The webhook ID is a Chatbyte call ID. It can use a Chatbyte-specific prefix such as vcs_. Do not send it to a provider API or assume it is a provider conversation ID.

Interpret the response

The call-detail response includes:

  • transcript: structured agent and user turns, or null when unavailable.
  • summary: the best persisted call summary, or null when unavailable.
  • postCallProcessingStatus: the terminal or current Chatbyte enrichment state.
  • postCallProcessingStage: the current or terminal workflow stage.
  • postCallProcessingCompletedAt: when enrichment reached a terminal state.

Terminal post-call statuses are:

StatusMeaning
COMPLETEDThe configured post-call work completed without a status-affecting failure.
PARTIALThe call is readable, but at least one enrichment or delivery produced only a partial result.
FAILEDPost-call processing failed. The response still contains the best persisted call data.
TIMED_OUTPost-call processing exceeded its recovery window. The response still contains the best persisted call data.
SKIPPEDPost-call processing was intentionally skipped, for example when no transcript was available.

When transcript is null

A terminal webhook guarantees that Chatbyte finished the relevant post-call attempt. It does not guarantee a non-empty transcript.

transcript can be null when:

  • the call failed before an answered conversation existed;
  • the transcription source did not return a transcript; or
  • the organization is not permitted to retrieve transcripts.

If postCallProcessingStatus is terminal and transcript is null, repeated immediate GET requests do not make the original transcript more complete. Record the webhook eventId and conversationId, then contact Chatbyte if the call should have contained speech.

Delivery and retries

voice.postCall delivery is at least once. Deduplicate retries with eventId, x-chatbyte-event-id, or x-chatbyte-idempotency-key, and return a successful 2xx response after storing the event.

Use the OpenAPI contract for the exact webhook and call-detail schemas.

On this page