> For clean Markdown of any page, append `.md` to the page URL.
> For a complete documentation index, see https://docs.sarvam.ai/llms.txt.
> For full documentation content in one file, see https://docs.sarvam.ai/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.sarvam.ai/_mcp/server.

# Transliteration API

> Complete overview of Sarvam AI Transliteration API for script conversion between Indian languages. Convert between Roman, Devanagari, and other scripts with high accuracy.

## Transliteration Types

Convert Indic scripts to Roman script (English alphabet). Example: मैं ऑफिस
→ main office

{" "}

Convert code-mixed, romanized, or English text to Indic scripts. Example: main
office → मैं ऑफिस

Convert written text to natural spoken form. Example: 9:30am → सुबह साढ़े नौ
बजे

## Code Examples

```python
from sarvamai import SarvamAI

client = SarvamAI(
    api_subscription_key="YOUR_SARVAM_API_KEY"
)

response = client.text.transliterate(
    input="मैं ऑफिस जा रहा हूँ",
    source_language_code="hi-IN",
    target_language_code="en-IN",
    spoken_form=True
)

print(response)
```

```javascript
import { SarvamAIClient } from "sarvamai";

const client = new SarvamAIClient({
    apiSubscriptionKey: "YOUR_SARVAM_API_KEY"
});

const response = await client.text.transliterate({
    input: "मैं ऑफिस जा रहा हूँ",
    source_language_code: "hi-IN",
    target_language_code: "en-IN",
    spoken_form: true
});

console.log(response);
```

```bash
curl -X POST https://api.sarvam.ai/transliterate \
  -H "api-subscription-key: <YOUR_SARVAM_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "input": "मैं ऑफिस जा रहा हूँ",
    "source_language_code": "hi-IN",
    "target_language_code": "en-IN",
    "spoken_form": true
  }'
```

<h3>
  Advanced Transliteration Features
</h3>

<p>
  Explore different parameters to customize your transliteration output:
</p>

<p>
  Choose between international (0-9) or native numerals (e.g., ०-९) for number representation in the output text.
</p>

```python
from sarvamai import SarvamAI

client = SarvamAI(
    api_subscription_key="YOUR_SARVAM_API_KEY"
)

response = client.text.transliterate(
    input="मेरा phone number है 9840950950",
    source_language_code="hi-IN",
    target_language_code="hi-IN",
    numerals_format="native"
)

print(response.transliterated_text)
```

```javascript
import { SarvamAIClient } from "sarvamai";

const client = new SarvamAIClient({
    apiSubscriptionKey: "YOUR_SARVAM_API_KEY"
});

const response = await client.text.transliterate({
    input: "मेरा phone number है 9840950950",
    source_language_code: "hi-IN",
    target_language_code: "hi-IN",
    numerals_format: "native"
});

console.log(response.transliterated_text);
```

```bash
curl -X POST https://api.sarvam.ai/transliterate \
  -H "api-subscription-key: <YOUR_SARVAM_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "input": "मैं ऑफिस जा रहा हूँ",
    "source_language_code": "hi-IN",
    "target_language_code": "en-IN",
    "numerals_format": "native"
  }'
```

<p>
  Convert text into natural spoken form. Note: This has no effect if output language is en-IN.
</p>

```python
from sarvamai import SarvamAI

client = SarvamAI(
    api_subscription_key="YOUR_SARVAM_API_KEY"
)

response = client.text.transliterate(
    input="मेरे पास ₹200 है",
    source_language_code="hi-IN",
    target_language_code="hi-IN",
    spoken_form=True
)

print(response.transliterated_text)
```

```javascript
import { SarvamAIClient } from "sarvamai";

const client = new SarvamAIClient({
    apiSubscriptionKey: "YOUR_SARVAM_API_KEY"
});

const response = await client.text.transliterate({
    input: "मेरे पास ₹200 है",
    source_language_code: "hi-IN",
    target_language_code: "hi-IN",
    spoken_form: true
});

console.log(response.transliterated_text);
```

```bash
curl -X POST https://api.sarvam.ai/transliterate \
  -H "api-subscription-key: <YOUR_SARVAM_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "input": "input",
    "source_language_code": "auto",
    "target_language_code": "en-IN",
    "spoken_form": true
  }'
```

<p>
  Choose between English or native language for number pronunciation when spoken_form is enabled.
</p>

```python
from sarvamai import SarvamAI

client = SarvamAI(
    api_subscription_key="YOUR_SARVAM_API_KEY"
)

response = client.text.transliterate(
    input="मेरे पास ₹200 है",
    source_language_code="hi-IN",
    target_language_code="hi-IN",
    spoken_form=True
)

print(response.transliterated_text)
```

```javascript
import { SarvamAIClient } from "sarvamai";

const client = new SarvamAIClient({
    apiSubscriptionKey: "YOUR_SARVAM_API_KEY"
});

const response = await client.text.transliterate({
    input: "मेरे पास ₹200 है",
    source_language_code: "hi-IN",
    target_language_code: "hi-IN",
    spoken_form: true,
    spoken_form_numerals_language: "english"
});

console.log(response.transliterated_text);
```

```bash
curl -X POST https://api.sarvam.ai/transliterate \
  -H "api-subscription-key: <YOUR_SARVAM_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "input": "मेरे पास ₹200 है",
    "source_language_code": "hi-IN",
    "target_language_code": "hi-IN",
    "spoken_form": true
  }'
```

<p>
  Example using all available parameters together for maximum customization.
</p>

```python
from sarvamai import SarvamAI

client = SarvamAI(
    api_subscription_key="YOUR_SARVAM_API_KEY"
)

response = client.text.transliterate(
    input="मेरे पास ₹200 है और time है 9:30am",
    source_language_code="hi-IN",
    target_language_code="hi-IN",
    spoken_form=True,
    numerals_format="native",
    spoken_form_numerals_language="native"
)

print(response.transliterated_text)
```

```javascript
import { SarvamAIClient } from "sarvamai";

const client = new SarvamAIClient({
    apiSubscriptionKey: "YOUR_SARVAM_API_KEY"
});

const response = await client.text.transliterate({
    input: "मेरे पास ₹200 है और time है 9:30am",
    source_language_code: "hi-IN",
    target_language_code: "hi-IN",
    spoken_form: true,
    numerals_format: "native",
    spoken_form_numerals_language: "native"
});

console.log(response.transliterated_text);
```

```bash
curl -X POST https://api.sarvam.ai/transliterate \
  -H "api-subscription-key: <YOUR_SARVAM_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "input": "मेरे पास ₹200 है और time है 9:30am",
    "source_language_code": "hi-IN",
    "target_language_code": "hi-IN",
    "spoken_form": true,
    "numerals_format": "native",
    "spoken_form_numerals_language": "native"
  }'
```

## API Features

* Multiple Indic languages
* Code-mixed text support
* Romanized text input
* English text input

{" "}

* Roman script (English)
* Native script conversion
* Spoken form output
* Natural number formats

{" "}

* International numerals (0-9)
* Native numerals (१-९)
* English number words
* Native number words

## API Response Format

| Field                  | Type   | Description                                          |
| ---------------------- | ------ | ---------------------------------------------------- |
| `request_id`           | string | Unique identifier for the request                    |
| `transliterated_text`  | string | Text converted to target script                      |
| `source_language_code` | string | Detected or provided source language (BCP-47 format) |

**Supported languages:** `bn-IN`, `en-IN`, `gu-IN`, `hi-IN`, `kn-IN`, `ml-IN`, `mr-IN`, `od-IN`, `pa-IN`, `ta-IN`, `te-IN`

```json
{
  "request_id": "20241115_12345678-1234-5678-1234-567812345678",
  "transliterated_text": "main office ja raha hun",
  "source_language_code": "hi-IN"
}
```

**Indic Script Conversion (English to Indic):**

```json
{
  "request_id": "20241115_12345678-1234-5678-1234-567812345678",
  "transliterated_text": "मैं ऑफिस जा रहा हूँ",
  "source_language_code": "en-IN"
}
```

**With Spoken Form Numerals:**

```json
{
  "request_id": "20241115_12345678-1234-5678-1234-567812345678",
  "transliterated_text": "मुझे कल सुबह साढ़े नौ बजे को अपॉइंटमेंट है",
  "source_language_code": "hi-IN"
}
```

**With Native Numerals:**

```json
{
  "request_id": "20241115_12345678-1234-5678-1234-567812345678",
  "transliterated_text": "मेरा फोन नंबर है: ९८४०९५०९५०",
  "source_language_code": "hi-IN"
}
```

## Error Responses

All errors return a JSON object with an `error` field containing details about what went wrong.

### Error Response Structure

```json
{
  "error": {
    "message": "Human-readable error description",
    "code": "error_code_for_programmatic_handling",
    "request_id": "unique_request_identifier"
  }
}
```

### Error Codes Reference

| HTTP Status | Error Code                   | When This Happens                                | What To Do                                                    |
| ----------- | ---------------------------- | ------------------------------------------------ | ------------------------------------------------------------- |
| `400`       | `invalid_request_error`      | Missing required parameters or malformed request | Check `input`, `source_language_code`, `target_language_code` |
| `403`       | `invalid_api_key_error`      | API key is invalid, missing, or expired          | Verify your API key in the dashboard                          |
| `422`       | `unprocessable_entity_error` | Text too long or unsupported language            | Keep text under 1000 characters                               |
| `429`       | `insufficient_quota_error`   | API quota or rate limit exceeded                 | Wait for reset or upgrade your plan                           |
| `500`       | `internal_server_error`      | Unexpected server error                          | Retry the request; contact support if persistent              |

### Example Error Response

```json
{
  "error": {
    "message": "Input text exceeds maximum length of 1000 characters",
    "code": "unprocessable_entity_error",
    "request_id": "20241115_abc12345"
  }
}
```

```python
from sarvamai import SarvamAI
from sarvamai.core.api_error import ApiError

client = SarvamAI(api_subscription_key="YOUR_SARVAM_API_KEY")

try:
    response = client.text.transliterate(
        input="मैं ऑफिस जा रहा हूँ",
        source_language_code="hi-IN",
        target_language_code="en-IN"
    )
    print(response.transliterated_text)
except ApiError as e:
    if e.status_code == 400:
        print(f"Bad request: {e.body}")
    elif e.status_code == 403:
        print("Invalid API key. Check your credentials.")
    elif e.status_code == 422:
        print(f"Invalid parameters: {e.body}")
    elif e.status_code == 429:
        print("Rate limit exceeded. Wait and retry.")
    else:
        print(f"Error {e.status_code}: {e.body}")
```

Check out our detailed [API Reference](/api-reference-docs/text/transliterate-text)
to explore Transliteration and all available options.

Need help with transliteration? Contact us on
[discord](https://discord.com/invite/5rAsykttcs) for guidance.