Transcription
Upload audio, create a metered job, retrieve results, and delete content.
1. Upload audio
Send raw bytes. Supported content types are MP3, WAV, OGG, WebM, M4A, and FLAC. The default limit is 50 MiB.
curl -X POST "$SEFER_API/v1/uploads" \
-H "Authorization: Bearer $SEFER_KEY" \
-H "Content-Type: audio/mpeg" \
-H "X-Filename: shiur.mp3" \
--data-binary @shiur.mp3Unused uploads expire after 24 hours.
2. Create the job
curl -X POST "$SEFER_API/v1/transcriptions" \
-H "Authorization: Bearer $SEFER_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: shiur-2026-07-16" \
-d '{"upload_id":"UPLOAD_ID","language":"he"}'The job moves through queued, processing, and one terminal state: succeeded, failed,
cancelled, or deleted.
3. Poll and retrieve
curl "$SEFER_API/v1/transcriptions/JOB_ID" \
-H "Authorization: Bearer $SEFER_KEY"
curl "$SEFER_API/v1/transcriptions/JOB_ID/result" \
-H "Authorization: Bearer $SEFER_KEY"The provider's settled audio cost is recorded before a job becomes succeeded. Requests enforce
OpenRouter Zero Data Retention and deny provider data collection.
Retention and deletion
| artifact | retention |
|---|---|
| unused upload | 24 hours |
| raw audio for a job | 7 days |
| transcript/result | 90 days |
| non-content billing metadata | 12 months |
DELETE /v1/transcriptions/{job_id} removes stored audio and result content immediately. A queued
job can also be cancelled with /cancel; a processing job must be deleted to discard content.