Documentation

Async Speech-to-Text Jobs

Use the async transcription flow for long audio files, subtitle generation, or any client behind a gateway with short connection limits. You submit the same multipart payload as POST /v1/audio/transcriptions, get a job ID immediately, poll status, then download the completed subtitle or transcription payload.

Step 1 — Submit a job

Set response_format to srt or vtt when you want subtitles.

1curl -X POST https://api.navy/v1/audio/transcriptions/jobs \
2  -H "Authorization: Bearer sk-navy-YOUR_KEY" \
3  -F file="@/path/to/video.mp4" \
4  -F model="whisper-1" \
5  -F response_format="srt"

Step 2 — Poll status

Poll with the same API key until status is done or failed. Polling does not consume tokens.

1curl https://api.navy/v1/audio/transcriptions/jobs/job_a1b2c3d4e5f6/status \
2  -H "Authorization: Bearer sk-navy-YOUR_KEY"

Step 3 — Download the subtitle

When the job is done, download the output. For srt, vtt, or text jobs this endpoint returns raw text. For json or verbose_json, it returns JSON.

Bash
1curl https://api.navy/v1/audio/transcriptions/jobs/job_a1b2c3d4e5f6/download \
2  -H "Authorization: Bearer sk-navy-YOUR_KEY" \
3  --output subtitles.srt

Status values

  • Pending — Accepted and waiting to start
  • processing — A provider is actively transcribing
  • done — Transcription finished and can be downloaded
  • failed — Transcription failed, with details in error

Errors

  • 404 job_not_found — The job ID does not exist or has expired. Audio jobs are retained for one hour after creation.
  • 403 unauthorized_job_access — The job exists, but it was created with a different API key.
  • 409 job_not_ready — The job is still Pending or processing; poll again before downloading.