goals

Report Goal Voice Playback

Changed on

Take the page's account of what the athlete actually heard (#2758).

The relay sees its own half of a conversation and no further. It cannot see a worklet that died, a playback buffer that ran dry, a microphone the athlete took back, or a capture that was clipping the whole time — all four read from here as a healthy relay whose socket went away. This is the one door that hears about them, and it is the page's own report, sent once, after it ends.

The path's id is the ticket, so nothing is echoed in the body. The mint answers with it and the audio socket is opened on it, so the page already holds the only per-conversation key both ends know; stamping it beside the mint's own session_ticket is what turns two spans into one conversation. The ticket is not redeemed or verified here. It is single-use and the socket spends it, so a check would refuse every report ever sent — the other way round from the socket, where spending it is the check. What stands in for it is the browser boundary this route takes like every other unsafe one, so a wrong id costs a caller a span that joins nothing rather than a look at someone else's conversation.

Not named telemetry. looking-glass#539 found that word, along with collect and beacon, on common ad-block filter lists, which is why the page's own end-of-conversation report posts to /api/client-error. A report an extension silently drops is indistinguishable from a page that never sent one, and the whole value here is the denominator.

204 because there is nothing to answer with: the page is reporting, not asking, and a body would only be something for a producer to start depending on.

post/goals/voice/session/{session_id}/playback

Request

  • Base URL
    https://api.imperfect.co (the document declares no server; this is the origin it was published from)
  • URL
    https://api.imperfect.co/goals/voice/session/{session_id}/playback
  • Auth
    HTTP bearer

Path parameters

session_idstring required

Headers

x-device-timezonestring nullable
x-device-hintstring nullable
x-client-platformstring nullable

Request body

playback_stalls_msinteger[]
buffer_dropsinteger
clipping_rationumber
client_fault'none' | 'audioworklet_crash' | 'microphone_revoked' | 'playback_stalled' | 'transport_timeout'
echo_window_framesinteger
echo_window_voicedinteger

Response

Successful Response

Changes