Batch Transcription (Speech-to-Text)

    Upload a complete audio file and receive a transcription in one batch request. Supports multiple languages via model selection. Optionally enables language correction and semantic tagging for enhanced output. For streaming results, use Real-time Transcription.

    Form Fields

    ParameterTypeRequiredDescription
    filestring (binary)YesThe audio file to transcribe (WAV, MP3, M4A, FLAC, OGG, WEBM). Maximum upload size: 10 MB. Maximum audio duration: 1 hour (3600 seconds).
    modelvalsea-transcribeYesThe transcription model to use. Always use valsea-transcribe. Language routing is determined by the language parameter.
    languagestringYesRouting hint for the audio language, such as english, singlish, or vietnamese. See Language hints.
    response_formatjson | verbose_jsonNoResponse verbosity level. Default: json
    enable_correctionbooleanNoEnable language/grammar correction on the transcript. Default: true
    enable_tagsbooleanNoEnable semantic tagging of the transcript.. Default: true
    diarizebooleanNoEnable speaker diarization. Requires response_format=verbose_json. Default: false
    diarization_min_speakersintegerNoMinimum expected speaker count for diarization. Default: 2. Must be a positive integer (≥ 1).
    diarization_max_speakersintegerNoMaximum expected speaker count for diarization. Default: 6. Must be ≥ 1 and ≥ diarization_min_speakers (no fixed upper limit).

    Speaker Diarization

    Set diarize=true to add speaker labels to the verbose response. Responses include speaker IDs on word objects (when words are returned) plus grouped utterances.

    Speaker diarization is only available with response_format=verbose_json. Requests with diarize=true and response_format=json are rejected with 400 because minimal output cannot include speaker-level metadata.

    LanguageDiarizationSpeaker labelsWord / utterance timestamps
    English❌ always 0
    Vietnamese❌ empty words array
    Other languages❌ not supported

    Speaker diarization bills at 2x the normal transcription credit cost. If you also use paid rate-limit bypass, the request bills at 4x normal transcription credits.

    The API playgrounds include a multi-speaker sample clip that automatically sets response_format=verbose_json, diarize=true, and a 2-speaker range for quick testing.

    If you need to exceed the transcription RPM limit for a request, you can bypass the rate-limit check by sending one of these opt-in flags:

    • Header: X-Bypass-Rate-Limit: true
    • Query parameter: bypass_rate_limit=true
    • Query parameter: bypassRateLimit=true

    Bypass applies only to the per-organization rate-limit check. Authentication, credit checks, upload size limits, and concurrent upload limits still apply. Requests using this bypass are billed at 2x the normal transcription credit cost and include X-Credits-Multiplier: 2 in the response headers. If speaker diarization is also enabled, the multiplier becomes 4.

    Code Examples

    This endpoint is OpenAI SDK compatible. You can use the official OpenAI client libraries by pointing them at the VALSEA API base URL.

    curl -X POST https://api.valsea.ai/v1/audio/transcriptions \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -F "file=@audio.wav" \
      -F "model=valsea-transcribe" \
      -F "language=english" \
      -F "response_format=verbose_json" \
      -F "diarize=true"
    

    Response

    Minimal (json)

    FieldTypeDescription
    textstringThe transcribed text.

    Verbose (verbose_json)

    FieldTypeDescription
    textstringThe transcribed text.
    raw_transcriptstringOriginal transcript before corrections.
    detected_languagesarrayLanguages detected in the audio.
    correctionsarrayList of corrections applied. Present only when corrections are generated.
    semantic_tagsarraySemantic tags extracted from the text. Present only when semantic tags are generated.
    wordsarrayWord-level timing and zero-based speaker labels when diarize=true.
    utterancesarrayContiguous speaker turns with speaker, timing, transcript, and words when diarize=true.

    Errors

    StatusDescription
    401Missing or invalid API key
    402Insufficient credits
    429Rate limit exceeded

    Language Hints

    The language field is a required routing hint for this batch endpoint. Provide the closest supported code—for example, english, singlish, vietnamese, or a regional variant—instead of testing separate endpoints.

    Use a language hint such as english, singlish, vietnamese, arabic, arabic-egypt, or arabic-uae to select batch routing.

    VALSEA supports 181 languages, dialects, and variants overall. Batch availability and feature coverage vary by language. See the current supported-language matrix for the authoritative list. For automatic detection, use Real-time Transcription.

    Was this page helpful?