Shunya LabsShunya LabsPlayground
Docs

Horizon models

Horizon is Shunya's Automated Speech Recognition (ASR) family: four models tuned for different domains. Pass the model id (for example horizon-indic) in the model field; the product names are for reading, the ids are what the API accepts (the earlier zero-* ids still work). You can't mix models within a single request, but you can switch between requests freely.

First: get an access token

The examples below send Authorization: Bearer $ACCESS_TOKEN. The speech APIs accept only a short-lived access token — never your API key directly.

From the Shunya Playground (recommended). Open API keys in the Playground, click Generate token next to your API key, and copy it — then set it:

shell
export ACCESS_TOKEN="eyJhbGciOiJSUzI1NiIs…paste-here"

Or mint it from your API key — the path for production, where your app refreshes the token as it nears expiry (the response carries expires_in):

shell
export ACCESS_TOKEN=$(curl -s -X POST https://app.shunyalabs.ai/api/auth/token \
  -H "api-key: $SHUNYALABS_API_KEY" | jq -r .token)

Side-by-side

ModelModel idLanguagesSpecial behaviourPrice ($/min)
Horizon Indichorizon-indic55+ Indian languagesStandard transcription$0.0045
Horizon Universalhorizon-universal204 languagesStandard transcription, strongest on English$0.0039
Horizon Medicalhorizon-medicalEnglish + IndicAuto medical-terminology correction$0.0050
Horizon Code-Switchhorizon-codeswitchHinglish, Tanglish, etc.Auto English-token restoration to Latin script$0.0050

Horizon Indic — model id horizon-indic

The default for Indian languages. Native handling of Hindi, Tamil, Telugu, Kannada, Marathi, Bengali, Gujarati, Punjabi, Malayalam, Odia, Urdu, Assamese, Maithili, and more.

When to use

  • Single-language Indic audio where you know (or can detect) the language
  • Call-centre audio for Indian customers in their native tongue
  • Meetings, interviews, dictation, media transcription

Example

shell
curl -X POST https://asrv2prod.shunyalabs.ai/v1/audio/transcriptions \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -F "[email protected]" \
  -F "model=horizon-indic" \
  -F "language_code=hi"

Horizon Universal — model id horizon-universal

Broad-coverage foundation model spanning English, European, Asian and African languages. Strongest on English and European content. Use it when the input could be anything — call GET /languages for the set it routes.

When to use

  • English or non-Indian-language content
  • Audio where you don't know the language in advance, set language_code=auto
  • International meetings with mixed English and other languages

Horizon Oriental (Japanese and Korean) is served through this same model id: send model=horizon-universal with language_code=ja or language_code=ko.

Benchmarks

Composite WER on the HuggingFace Open ASR leaderboard: 3.10%, claimed 48% fewer errors than the next-best model.

See per-dataset numbers →

Example

shell
curl -X POST https://asrv2prod.shunyalabs.ai/v1/audio/transcriptions \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -F "[email protected]" \
  -F "model=horizon-universal"

Horizon Medical — model id horizon-medical

Clinical-grade. Trained to recognise drug names, procedures, anatomy, dosages, and diagnostic terms. Auto-applies medical terminology correction (no extra flag needed).

When to use

  • Doctor-patient consultations
  • OT / surgical notes dictation
  • Case note transcription for EHR ingest

Compliance

HIPAA path
Horizon Medical (horizon-medical) is the model cleared for PHI handling under the Shunya BAA. Route PHI only through this model, and prefer on-prem deployment for the strongest data-residency story.

Example

shell
curl -X POST https://asrv2prod.shunyalabs.ai/v1/audio/transcriptions \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -F "[email protected]" \
  -F "model=horizon-medical" \
  -F "language_code=en"

Output shape

Same response schema as other models; the value-add is in the text itself, drug names in correct spelling, procedure names in standard terminology. Pair with enable_keyterm_normalization for further normalization against your own glossary.

Horizon Code-Switch — model id horizon-codeswitch

Tuned for speech that mixes two languages within a single utterance, Hinglish (mujhe yeh passbook update karna hai), Tanglish, Banglish, etc. Automatically restores English words to Latin script so the final transcript reads cleanly.

When to use

  • Urban Indian call-centre conversations (customers routinely switch mid-sentence)
  • Social-media, podcast, or creator content with code-mixed speech
  • Any conversation where separating languages would force unnatural phrasing

Example

shell
curl -X POST https://asrv2prod.shunyalabs.ai/v1/audio/transcriptions \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -F "[email protected]" \
  -F "model=horizon-codeswitch"

What the output looks like

json
{
  "text": "मुझे अपना EMI details check करना है",
  "detected_language": "Hinglish",
  "segments": [
    { "start": 0.3, "end": 3.1, "text": "मुझे अपना EMI details check करना है" }
  ]
}

Picking the right model, decision flow

Not sure which?
Start with Horizon Indic horizon-indic if the speakers are Indian; Horizon Universal horizon-universal otherwise. Swap to Horizon Code-Switch horizon-codeswitch if you see English words coming through phonetically in the Indic transcript, or Horizon Medical horizon-medical if drug/procedure terms are being butchered.