Accepts 1..20 audio segments (audio/webm, audio/ogg, audio/mp4, audio/mpeg, audio/wav).
Each segment is capped at 50 MB. When combine=true and all segments share a single
mimetype, the server concatenates them losslessly via ffmpeg before ingestion.
Returns 202 immediately; transcription runs asynchronously through the existing
ingestion queue and produces a transcript-derived file_title.
JWT token passed in authorization header
When true and all segments share a single mimetype, the server losslessly concatenates them via ffmpeg into a single upload before ingestion. Falls back to per-segment uploads on mismatch or concat failure.
true, false Optional names parallel to files[]; ignored when combine=true
Optional JSON-stringified course context ({ course_id, course_name, assistant: { _id } }) — applied to the History row that runFinalize updates as ingestion completes. Same shape as POST /user/files.
Optional active-assistant ObjectId — used as the History row's assistant field when no selectedCourse.assistant is provided.