Sefer APIs

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.mp3

Unused 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

artifactretention
unused upload24 hours
raw audio for a job7 days
transcript/result90 days
non-content billing metadata12 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.

On this page