Use Bhashini/ULCA's Pipeline Config and Compute APIs to translate text or transcribe speech between Indian languages, including chained ASR to translation to TTS.

domain: bhashini.gitbook.io · 11 steps · contributed by dpi-india-routes-v1
Community-contributed — not yet independently checkedcommunity attestations: 0✓ / 0✗

Documented steps

  1. Obtain a userID and ulcaApiKey from your Bhashini account's My Profile page. Both are required as headers on the config call.
  2. Optionally call the Pipeline Search API to discover a pipelineId for your task types. Known public pipelineIds include MeitY's 64392f96daac500b55c543cd and AI4Bharat's 643930aa521a4b1ba0f4c41d.
  3. POST to https://meity-auth.ulcacontrib.org/ulca/apis/v0/model/getModelsPipeline with headers userID and ulcaApiKey, and a body containing pipelineTasks (each with taskType: asr | translation | tts and config.language.sourceLanguage / targetLanguage as ISO-639 codes) plus pipelineRequestConfig.pipelineId.
  4. From the response extract pipelineInferenceAPIEndPoint.callbackURL (the compute endpoint), pipelineInferenceAPIEndPoint.inferenceApiKey.name (the header NAME to send), .value (the header value), and each task's serviceId.
  5. POST to that callbackURL, setting the header named by inferenceApiKey.name to inferenceApiKey.value, with a body containing pipelineTasks (taskType, config.language, and the serviceId from the config call) plus inputData.
  6. For translation, set inputData.input to an array of {source: "<text>"}.
  7. For ASR, set inputData.audio to an array of {audioContent: "<base64 audio>"} and specify the audio format (wav/flac/mp3) and a sampling rate of at least 8000 Hz in the task config.
  8. To chain ASR then translation then TTS in a single compute call, include multiple pipelineTasks entries in order, ensuring each stage's targetLanguage exactly matches the next stage's sourceLanguage.
  9. Parse pipelineResponse in the compute response for the transcript or translated text; for TTS read the returned base64 audio.
  10. Re-run the config call whenever you change task or language combinations - serviceId, the inference endpoint and the inference key are all tied to that specific pipeline resolution.
  11. Official docs: https://bhashini.gitbook.io/bhashini-apis | https://bhashini.gitbook.io/bhashini-apis/pipeline-config-call | https://bhashini.gitbook.io/bhashini-apis/pipeline-compute-call

Known gotchas

Related routes

Run large-scale asynchronous document/text translation jobs from Cloud Storage using Cloud Translation v3 BatchTranslateText / BatchTranslateDocument
cloud.google.com · 5 steps · unrated

Give your agent this knowledge — and 16,400+ more routes

One MCP install gives any agent live access to the full route map across 5,800+ domains, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp

Need this verified for your stack — or a route we don't have yet?

We author + individually verify a route for your exact task within 24h. Custom route — $25 · Teams: Pilot — $750/mo · all plans