This is an n8n community node for Sarvam AI — Indian language AI APIs for transcription, speech synthesis, and chat across 22+ Indian languages.
Follow the n8n community nodes installation guide.
In n8n, go to Settings > Community Nodes and install:
n8n-nodes-sarvam
You need a Sarvam AI API key. Get one from the Sarvam AI Dashboard after signing up. You receive ₹1000 free credits on signup.
In n8n, create a new Sarvam AI API credential and paste your API key.
| Operation | Description |
|---|---|
| Speech to Text | Transcribe audio files with multiple modes — transcribe, translate to English, transliterate (roman), code-mixed, and verbatim |
| Text to Speech | Convert text to natural-sounding speech with 39 voice options |
| Operation | Description |
|---|---|
| Complete | Generate chat completions using Sarvam AI language models |
| Mode | Description |
|---|---|
| Transcribe | Standard transcription in the original language |
| Translate to English | Translate speech from any Indic language to English |
| Transliterate (Roman) | Romanize speech to Latin script |
| Code Mixed | English words in English, Indic words in native script |
| Verbatim | Exact word-for-word transcription without normalization |
Speech to Text (23 languages): Assamese, Bengali, Bodo, Dogri, English, Gujarati, Hindi, Kannada, Kashmiri, Konkani, Maithili, Malayalam, Manipuri, Marathi, Nepali, Odia, Punjabi, Sanskrit, Santali, Sindhi, Tamil, Telugu, Urdu.
Text to Speech (11 languages): Bengali, English, Gujarati, Hindi, Kannada, Malayalam, Marathi, Odia, Punjabi, Tamil, Telugu.
Chat: Supports all languages via Sarvam-105B, the flagship chat model.
Releases go to npm from GitHub Actions with npm provenance, per n8n’s publishing rules.
- On npm, add Trusted Publishers for this package: GitHub Actions, repository
vinayak-sarvam/n8n-sarvam-node, workflowpublish.yml. Alternatively, store anNPM_TOKENsecret in GitHub (granular token with write access to this package). - Either:
- Tag the version already in
package.json: withmainat the version you want (for example0.1.6), rungit tag 0.1.6 && git push origin 0.1.6, or - Interactive bump: on
main, runnpm run releaseto bump the version, update the changelog, commit, tag, and push (nothing is published from your laptop).
- Tag the version already in
- Pushing a semver tag matching
*.*.*triggers.github/workflows/publish.yml, which runs lint, build, andnpm publishwith provenance.
For a manual publish while CI is sorted out, log in to npm (npm login or a valid ~/.npmrc token), then from the repo root:
npm run publish:cliThat runs lint, build, then npm publish with RELEASE_MODE=true (so prepublishOnly passes) and --provenance=false (local publishes cannot satisfy publishConfig.provenance the way CI does). n8n Cloud verification still expects a GitHub Actions publish with provenance when you submit.
If npm whoami or publish returns 401 Unauthorized, npm is using a bad or revoked token (or a stale line in an .npmrc). Run npm logout, delete any //registry.npmjs.org/ auth lines in ~/.npmrc and in this repo’s .npmrc if you created one, revoke the old token on npmjs.com, then npm login or set a new granular write token. Do not commit .npmrc (it is gitignored).
Keep package.json version and nodes/ on main aligned with what you intend to ship; the published tarball must match this repository.
If the Publish workflow shows provenance then E404 on PUT …/n8n-nodes-sarvam: that response usually means no publish permission (not a missing package). Use npm ≥11.5.1, Node ≥22.14, and a repository.url that matches this GitHub repo. For Trusted Publishers (OIDC) only: remove the environment: NPM_TOKEN line from .github/workflows/publish.yml if you do not use that GitHub Environment (otherwise the job can fail before publish). Delete any unused NPM_TOKEN secret; the workflow uses NODE_AUTH_TOKEN="" with registry-url for OIDC (see setup-node#1440). For token publish, keep NPM_TOKEN. If that value is stored under Settings → Environments → … → Environment secrets, the workflow job must declare environment: <that-environment-name> (this repo uses NPM_TOKEN) or GitHub never injects the secret and you get ENEEDAUTH. Repository-level Actions secrets do not need environment:.
If the log shows NPM_TOKEN length: … but npm whoami → 401, the secret value is not a valid npm credential (revoked, expired, typo, or not Read and write for n8n-nodes-sarvam). Create a new granular token on npmjs.com while logged in as vinayak-sarvam, paste the full value into the NPM_TOKEN environment secret, and re-run the workflow. npm whoami in the log must succeed and print vinayak-sarvam before publish.