Pricing and cost estimates

    See what each request costs, what your credits buy, and what every response was billed for.

    Credits are the currency: 1 credit = $0.001, so 1,000 credits = $1.00. Plans differ in how many credits they include, not in the per-minute rate. The rate depends on the language band, and on whether you use real-time or batch transcription. The price list below is the list rate for every plan: an organization with a negotiated rate sees the difference as multipliers.organization in an estimate, below 1 for a discount and above 1 for a premium, and only for that organization.

    How credits turn into minutes

    Every rate is published in credits per minute of audio. Divide your balance by the rate to see how many minutes it buys.

    For example, if a band costs 12 credits per minute in real-time, 5,000 credits buy about 416 minutes of audio in that band. A language in a more specialised band costs more per minute, so the same balance buys fewer minutes. Use the price list below for the current rates, and the estimate endpoint to do the arithmetic for your own usage.

    How audio is measured:

    • Prices are per minute, metered by the second. A fraction of a minute is billed as that fraction, not rounded up.
    • Real-time transcription is billed on speech time only. Silence is not billed.
    • Every request has a minimum charge of 0.1 credit.
    • Speaker diarization doubles the speech-to-text rate. A paid rate-limit bypass doubles the cost of every request. Both together multiply the rate by 4.

    Price list

    GET /v1/pricing returns every band and language. It is cacheable for five minutes.

    cURL

    curl https://api.glotlabs.ai/v1/pricing
    

    Response

    FieldTypeDescription
    creditobjectusd_per_credit and millicredits_per_credit.
    minimum_charge_creditsnumberThe minimum charge per request.
    multipliersobjectdiarization and rate_limit_bypass.
    stt.bands[]arrayEach speech-to-text band with streaming and batch rates.
    stt.languages[]arrayEach language with its band, its batch_band, and batch_supported.
    tts.bands[]arrayEach text-to-speech band with credits_per_minute and usd_per_hour.
    notes[]arrayHow audio is measured, in plain language.

    Each rate has credits_per_minute and usd_per_hour. A few Regional languages are billed at the Standard rate in batch mode, which is why a language lists both band and batch_band. batch_supported is false for languages that work in real-time but are not yet accepted by the batch endpoint, and asking the estimate for one of those in batch mode returns 400 with STT_BILLING_MODE_UNSUPPORTED.

    Estimate a request

    POST /v1/estimate returns the cost of a request before you make it, and how long your current balance lasts at that rate.

    Request body

    ParameterTypeRequiredDescription
    productstt | ttsYesSpeech-to-text or text-to-speech.
    languagestringYesLanguage name, for example vietnamese.
    modebatch | streamingNoSpeech-to-text only. Defaults to batch.
    duration_secondsnumberYesAudio length in seconds. For real-time, the speech time.
    diarizebooleanNoSpeech-to-text only. Applies the diarization multiplier.
    rate_limit_bypassbooleanNoApplies the rate-limit bypass multiplier.

    cURL

    curl -X POST https://api.glotlabs.ai/v1/estimate \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "product": "stt",
        "language": "vietnamese",
        "mode": "batch",
        "duration_seconds": 3600
      }'
    

    Response

    FieldTypeDescription
    bandstringThe band the request is billed in.
    rateobjectcredits_per_minute and usd_per_hour.
    multipliersobjectorganization, diarization, rate_limit_bypass and total.
    estimated_creditsnumberThe estimated cost.
    minimum_charge_appliedbooleantrue when the 0.1-credit minimum raised the cost.
    balance.credits_remainingnumberYour current balance.
    balance.minutes_remaining_at_this_ratenumberHow many minutes of this kind your balance buys.

    multipliers.organization is 1 unless your organization has a negotiated rate.

    A language that has no price returns 400 with the code STT_BILLING_LANGUAGE_UNSUPPORTED, the same as a transcription request would. A language that has a price but is not served in the requested mode returns 400 with STT_BILLING_MODE_UNSUPPORTED; retry in streaming rather than changing language.

    What each response was billed for

    Billed responses tell you what the credits bought.

    HeaderDescription
    X-Credits-UsedCredits charged for this request.
    X-Credits-RemainingYour balance after the charge.
    X-Billed-Audio-SecondsSeconds of audio that were billed.
    X-Rate-BandThe band the request was billed in.
    X-Credits-MultiplierPresent when a multiplier applied, for example diarization.

    Real-time sessions send a session.billing message when they end, with billed_seconds, credits_used, band and charge_failed. It is sent for every session with a user, including one that was stopped because the balance ran out. charge_failed is false when the session was charged in full and true when it was not, and on that path billed_seconds counts only the seconds that were charged while uncharged_seconds names the rest, so the two always add up to the session length. For a session that detects the language automatically, band is mixed.

    Was this page helpful?