# Translate

import { Callout } from "zudoku/ui/Callout";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "zudoku/ui/Tabs";

Translate text from a source language to a target language in a single request.

```
POST https://api.lelapa.ai/v1/translate/process
```

<Callout type="info" title="New here? Get an API key first">
  Every request needs an API key in the `X-CLIENT-TOKEN` header. Sign up at
  [vulavula.lelapa.ai](https://vulavula.lelapa.ai/), generate a key, and
  you're set — every account includes **100 free API calls per month**. See
  [Authentication](/integrations/authentication) for the full walkthrough.
</Callout>

<Callout type="info">
  We recommend sending fewer than **100 words** at a time to ensure optimal
  performance.
</Callout>

## Request

### Headers

| Header           | Type   | Required | Description                          |
| ---------------- | ------ | -------- | ------------------------------------ |
| `X-CLIENT-TOKEN` | string | Yes      | Your API key — see [Authentication](/integrations/authentication) |
| `Content-Type`   | string | Yes      | Must be set to `application/json`    |

### Body parameters

| Parameter     | Type   | Required | Description                                        |
| ------------- | ------ | -------- | -------------------------------------------------- |
| `input_text`  | string | Yes      | The text to translate                              |
| `source_lang` | string | Yes      | Language code of the input text                    |
| `target_lang` | string | Yes      | Language code to translate the text into           |

#### Supported language codes

Use these values for `source_lang` and `target_lang`:

| Code       | Language        |
| ---------- | --------------- |
| `eng_Latn` | English         |
| `zul_Latn` | Zulu            |
| `xho_Latn` | Xhosa           |
| `afr_Latn` | Afrikaans       |
| `nso_Latn` | Northern Sotho  |
| `sot_Latn` | Southern Sotho  |
| `ssw_Latn` | Swati           |
| `tso_Latn` | Tsonga          |
| `tsn_Latn` | Tswana          |
| `swh_Latn` | Swahili         |

See [Language Support](/overview/language-support) for the current status of every language pair.

## Example request

<Tabs defaultValue="py">
  <TabsList>
    <TabsTrigger value="sdk">Python SDK</TabsTrigger>
    <TabsTrigger value="py">Python</TabsTrigger>
    <TabsTrigger value="curl">cURL</TabsTrigger>
  </TabsList>

  <TabsContent value="sdk">
    ```bash
    pdm add vulavula
    ```

    ```python showLineNumbers
    from vulavula import VulavulaClient

    client = VulavulaClient("<INSERT_TOKEN>")

    translation_result = client.translate({
        "input_text": "Lo musho ubhalwe ngesiZulu.",
        "source_lang": "zul_Latn",
        "target_lang": "eng_Latn",
    })
    print("Translation Result:", translation_result)
    ```
  </TabsContent>

  <TabsContent value="py">
    ```python showLineNumbers
    import requests

    response = requests.post(
        "https://api.lelapa.ai/v1/translate/process",
        headers={"X-CLIENT-TOKEN": "<INSERT_TOKEN>"},
        json={
            "input_text": "Lo musho ubhalwe ngesiZulu.",
            "source_lang": "zul_Latn",
            "target_lang": "eng_Latn",
        },
    )
    print(response.json()["translation"][0]["translated_text"])
    ```
  </TabsContent>

  <TabsContent value="curl">
    ```bash
    curl -X 'POST' \
      'https://api.lelapa.ai/v1/translate/process' \
      -H 'accept: application/json' \
      -H 'X-CLIENT-TOKEN: <INSERT_TOKEN>' \
      -H 'Content-Type: application/json' \
      -d '{
        "input_text": "Lo musho ubhalwe ngesiZulu.",
        "source_lang": "zul_Latn",
        "target_lang": "eng_Latn"
      }'
    ```
  </TabsContent>
</Tabs>

## Response

A successful request returns `200 OK`:

```json
{
  "id": "deed7995-dcf4-4456-bd33-c92ca1d990ca",
  "translation": [
    {
      "translated_text": "This sentence is written in Zulu."
    }
  ]
}
```

### Response fields

| Field                         | Type   | Description                              |
| ----------------------------- | ------ | ---------------------------------------- |
| `id`                          | string | Unique identifier for this translation   |
| `translation`                 | array  | Array of translation results             |
| `translation[].translated_text` | string | The translated text                    |

## Errors

| Status                      | Meaning                                             |
| --------------------------- | --------------------------------------------------- |
| `400 Bad Request`           | The request was malformed or contained invalid data |
| `401 Unauthorized`          | The client token is missing or invalid              |
| `500 Internal Server Error` | An unexpected error occurred on the server          |

## Next steps

- Transcribe audio first with the [Speech-to-Text API](/transcribe/sync), then translate the transcript
- See the [Translate model card](/translate/model/translate) for model details
- Browse the full [API Reference](/api/translate)
