Docs
Get an API key

Create Transcription

POST /v1/audio/transcriptions Models: Transcription View .md

Transcribe audio. The request can be OpenRouter's JSON form, with the audio base64-encoded in input_audio, or OpenAI's multipart/form-data upload with the audio in file. Both return the same response, so the OpenAI and OpenRouter SDKs work unchanged.

Audio: Up to 25 MB after decoding and 4 hours long. Audio URLs are not accepted.

Formats: response_format is json (the default) or text, which returns the bare transcript as text/plain. verbose_json, timestamp_granularities, srt and vtt are not supported and return 400.

Streaming: With stream: true the response is OpenAI's server-sent events: transcript.text.delta events with each piece of the transcript as it is decoded, then one transcript.text.done with the whole text and the same usage as the JSON response. A failure after the stream began ends it with a transcript.text.error event in the error envelope. The upload still completes before decoding starts; this is not live audio.

Billing: Per second of audio, rounded up, as reported in usage.seconds.

OpenRouter's transcription request. OpenRouter's provider is accepted and ignored.

  • model string required

    The speech-to-text model to use, e.g. whisper-large-v3-turbo.

  • input_audio object required
    2 fields
    • data string required

      The audio, base64-encoded. Raw base64, not a data URI. Up to 25 MB decoded.

    • format string required
      wavmp3flacm4aoggwebmaac
  • language string

    ISO-639-1 code of the spoken language. Detected when omitted.

  • prompt string

    Text to guide spelling and style, such as names and terms in the audio.

  • temperature number
    range 0–1
  • response_format string
    default jsonjsontext
  • stream boolean

    Stream the transcript as OpenAI's transcript.text.* server-sent events.

    default false
Fields as multipart/form-data
  • model string required

    The speech-to-text model to use, e.g. whisper-large-v3-turbo.

  • file string (binary) required

    The audio file, up to 25 MB.

  • language string

    ISO-639-1 code of the spoken language. Detected when omitted.

  • prompt string

    Text to guide spelling and style, such as names and terms in the audio.

  • temperature number
    range 0–1
  • response_format string
    default jsonjsontext
  • stream boolean

    Stream the transcript as OpenAI's transcript.text.* server-sent events.

    default false

OK

application/json, text/plain, text/event-stream · transcription-response-payload

2 fields
  • text string required

    The transcript.

  • usage object required
    2 fields
    • type string

      Always duration.

    • seconds integer

      Seconds of audio, rounded up. This is the billed amount.

curl https://api.vultrinference.com/v1/audio/transcriptions \
  -H "Authorization: Bearer $VULTR_INFERENCE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "whisper-large-v3-turbo",
    "input_audio": {
      "data": "UklGRiQAAABXQVZFZm10IBAAAAABAAEAgD4AAAB9AAACABAAZGF0YQAAAAA=",
      "format": "wav"
    },
    "language": "en"
  }'
Response · 200
{
    "text": "string",
    "usage": {
        "type": "string",
        "seconds": 0
    }
}