Mongolian voice tech in a few lines of code

Add Mongolian speech-to-text and text-to-speech to your product with the Duudlaga STT and Duudlaga TTS APIs. Top up credits and pay only for what you use.

Per-minute STT pricing
Per-character TTS pricing
No monthly fee
Duudlaga Developer API

Ready-to-use REST API

Call it directly with your dk_live key.

200 OK
POST /v1/stt/transcriptions
Authorization: Bearer dk_live_••••••••••••

{
  "text": "Сайн байна уу, өнөөдрийн хурлыг эхэлье.",
  "model": "duudlaga-stt-1"
}

Duudlaga STT

70₮ / minute

Duudlaga TTS

5,000₮ / 10k chars

Rate limit

You decide

What you can build

Built for every kind of product that works with voice.

Call centers and meetings

Turn phone calls and meeting recordings into searchable Mongolian text automatically. Great for QA and note taking.

Voice-enabled apps

Add Mongolian voices for news reading, audio content generation, and in-app voice assistants.

Automation

Add speech recognition and speech generation steps to internal tools, chatbots, and workflows.

Simple pricing

No monthly fee. Buy credits up front and pay only for what you use.

Duudlaga STT

duudlaga-stt-1

200₮70₮ / minute

Transcribes Mongolian and mixed Mongolian-English speech with high accuracy. Billed by actual audio duration.

Duudlaga TTS

duudlaga-tts-1

5,000₮ / 10,000 characters

Converts text into natural Mongolian speech. Billed by the number of characters you send.

Credits are drawn from your Duudlaga Flow account balance. With auto-recharge enabled, your account tops itself up when the balance runs low.

Quickstart

Send your API key as a Bearer token in the Authorization header. Keys start with dk_live_.

Every request needs an Authorization: Bearer dk_live_... header.

Each request is charged against your credits. When the balance runs out, requests return 402.

TTS is asynchronous: you first get a 202 with an id, then poll for status and the audio_url.

MethodEndpoint
POST
/v1/stt/transcriptions

Upload an audio file and get Mongolian text back.

POST
/v1/tts/speech

Send text and start a speech generation job.

GET
/v1/tts/speech/{id}

Check job status and get the audio_url.

GET
/v1/tts/voices

List the available voices.

GET
/v1/me

Inspect key info, balances, and limits.

Transcribe speech

curl -X POST "https://api.duudlaga.dev/v1/stt/transcriptions" \
  -H "Authorization: Bearer dk_live_your_api_key" \
  -F "[email protected]"

# 200 OK
{
  "id": "tr_8f2c1a",
  "text": "Сайн байна уу, өнөөдрийн хурлыг эхэлье.",
  "duration_seconds": 12.4,
  "model": "duudlaga-stt-1"
}

Generate speech

curl -X POST "https://api.duudlaga.dev/v1/tts/speech" \
  -H "Authorization: Bearer dk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "duudlaga-tts-1",
    "voice": "female-1",
    "input": "Сайн байна уу, тавтай морилно уу."
  }'

# 202 Accepted
{ "id": "sp_4d9e7b", "status": "queued" }

# GET https://api.duudlaga.dev/v1/tts/speech/sp_4d9e7b
{ "id": "sp_4d9e7b", "status": "completed", "audio_url": "https://..." }

Rate limits

You set the limits for each API key yourself from the console — request rate, concurrency, and daily spend. New keys start with no limits. Requests over your limits return 429 with a Retry-After header.

Duudlaga STT request rate
Duudlaga TTS request rate
Concurrent requests
Daily spend cap

Error codes

All errors come back in one JSON shape. Branch on the code field in your integration.

400invalid_request

The request is malformed or a required field is missing.

402insufficient_credits

Your credit balance is too low. Top up and try again.

402payment_required

An auto-recharge payment failed, so access is paused until it is resolved.

422no_speech

No speech was detected in the audio file.

429rate_limit_exceeded

You hit the request rate limit. Retry after the time given in the Retry-After header.

429daily_spend_cap_exceeded

This key reached its daily spend cap.

429concurrency_limit_exceeded

Too many requests running at the same time for this key.

500internal_error

Server error. Please try again.

Use it from any AI agent via MCP

Connect Duudlaga to claude.ai, Claude Desktop, ChatGPT, Claude Code, Cursor, or any MCP client — over a URL, or with the local server.

Remote connectors only take a URL. Paste it, sign in in the browser, approve — there is no API key to copy.

Each connection is separate: set its daily spend cap, or disconnect it, any time from the developer console.

Tools: transcribe, synthesize_speech, get_speech_job, list_voices, get_account — billed from the same prepaid credits. Reading back what you already transcribed — list_transcriptions, list_recordings, get_recording — is free and asks for the history permission.

claude.ai · Claude Desktop · ChatGPT

https://api.duudlaga.dev/mcp

Paste this into the client’s "Add custom connector" dialog as the Remote MCP server URL.

Claude Code

claude mcp add --transport http duudlaga https://api.duudlaga.dev/mcp

Cursor · Windsurf · VS Code

{
  "mcpServers": {
    "duudlaga": {
      "url": "https://api.duudlaga.dev/mcp"
    }
  }
}

Local server (files on your machine)

claude mcp add duudlaga -- npx -y @duudlaga/mcp

Needs Node 18+. Use this one to transcribe files on your own computer; the remote server takes public HTTPS URLs.

Frequently asked questions

How do I get started?

Sign in to the console and create an API key. Keys spend your Duudlaga credits, so make sure your account has a balance.

How is usage billed?

Duudlaga STT costs 70₮ per minute and Duudlaga TTS costs 5,000₮ per 10,000 characters. There is no monthly fee, you only pay for what you use.

What limits apply?

You set each key’s rate, concurrency, and daily spend limits yourself from the console. New keys start with no limits; spending is bounded by your prepaid balance.

Why does TTS not respond instantly?

Speech generation runs as a queued job. The POST request returns 202 with an id, then you poll GET /v1/tts/speech/:id until the audio_url is ready.

Which languages are supported?

Mongolian is the primary language, and mixed Mongolian-English speech is recognized. TTS ships with Mongolian voices.

Can AI agents use Duudlaga via MCP?

Yes. Add https://api.duudlaga.dev/mcp as a custom connector in claude.ai, Claude Desktop, or ChatGPT: you sign in in the browser and approve, with no API key to copy. Claude Code, Cursor, Windsurf, and VS Code take the same URL. The @duudlaga/mcp local server is still there for transcribing files on your own computer.

Start today

Sign in to the console, create your first API key, and send your first request within minutes.