Capture a voice note (transcription only)
Create a transcription-only voice capture session for a signal. The transcript is produced client-side by the browser’s Web Speech API — the same capture mechanism the existing voice-feedback pipeline uses — and stored as readable text; no audio bytes are uploaded by this endpoint. Returns the session id, which the consumer form then sends back as voice_session_id on the signal create call (linking it via Signal.voice_session).
This is the transcription-only branch of the in-production voice pipeline: it deliberately does NOT run the Bedrock enrichment / Linear-issue step. Transcription is a format conversion to make the note readable, not content analysis (epic dumb-pipe rule, C-3310).
Requires an authenticated (social-auth) consumer.
201— session created.400— empty/whitespace-only transcript.429— submission rate limit exceeded (per-identity / per-IP, C-3316).
Authorizations
Body
Payload to create a transcription-only voice session for a signal (C-3314).
The transcript is produced client-side by the browser's Web Speech API — the same capture mechanism the existing voice-feedback pipeline uses — so the consumer reviews and (optionally) edits the text before attaching it. Audio bytes are never uploaded to Closient by this endpoint; the session stores the readable transcript only. Crucially this path is transcription-only: it never runs the Bedrock enrichment / Linear-issue analysis step the superuser "/feedback" stream uses (epic dumb-pipe rule, C-3310).
Transcribed voice note, produced client-side by the browser's Web Speech API and reviewable/editable by the consumer before submit. Whitespace-only values are rejected with 400. Stored verbatim; never analysed (transcription is a format conversion, not content analysis — epic dumb-pipe rule).
1"The packaging smelled off when I opened the box."
URL of the hosted product page the voice note was captured on. Stored verbatim for context; empty when not provided.
2000Response
Created
The created voice session, returned so the form can attach it to a signal.
The consumer form takes id and sends it back as voice_session_id when
it POSTs the signal (C-3312), which links the session via the
Signal.voice_session FK (C-3311). No enrichment/Linear fields are exposed
— the signals voice path never runs that step.
Public short-UUID of the created voice session. Send this as voice_session_id when creating the signal to link the transcript to it.
22^[23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{22}$The stored transcript, echoed back so the client can confirm what was captured.