PurposeThe checkpoint event acts as a marker in your audio event queue. When Vobiz finishes playing all audio events that were sent before the checkpoint, it sends a
playedStream acknowledgment back to your application. This allows you to:- Track playback completion of specific audio segments
- Synchronize your application logic with audio playback
- Implement multi-turn conversations with timing control
Attributes
Request & Response
Request Format
Send this JSON message through the WebSocket to Vobiz:Checkpoint event request
Response Format
When the checkpoint is reached (all previous audio has been played), Vobiz responds with:playedStream acknowledgment
playedStream event carries only event and name - the name echoes the value you set on the matching checkpoint. Match acknowledgments by name, not streamId.
WebSocket
playedStream vs HTTP PlayedStream. Two different channels share a similar name:- The WebSocket
playedStreamevent (above) isevent+nameonly. - The HTTP
Event=PlayedStreamstatus callback (sent tostatusCallbackUrl) is form-encoded and does includeStreamID,CallUUID,Name, etc. See Status callback events.
Examples
Complete Event Sequence
Play audio + checkpoint + acknowledgment
Node.js Implementation
Using checkpoints to manage conversation flow
Python AsyncIO Example
Checkpoint handling in Python
Ordering and edge cases
- Send the
checkpointimmediately after the lastplayAudiochunk of an utterance. The checkpoint marks a position in the playback queue, so it acks only after every chunk queued before it has been delivered to the caller. - Acks are not guaranteed and not ordered against
media. AplayedStreammay arrive interleaved with inboundmediaframes. Match onname; don’t assume it is the next message after yourcheckpoint. - A
clearAudiovoids pending checkpoints. Any checkpoint whose audio was still queued when you sentclearAudiowill never ack. Reset per-utterance state when you barge in. - Use unique names per utterance. Re-using a name across turns makes acks ambiguous. A monotonic counter (
response-1,response-2, …) is a good pattern. - Always set a timeout fallback. Because the ack is conditional, drive a watchdog timer alongside each checkpoint so a dropped ack cannot stall the conversation.
Checkpoint with a timeout fallback