MT (Machine Translation)

Translate text between African languages and English using neural machine translation.

Translate text between African languages and English using our neural machine translation models.

Overview

Our MT service provides high-quality translation between supported languages. The models are optimized for African languages including Amharic and Tigrinya.

Basic Usage

To translate text, send your API key in the request body (not the header):

curl "https://api.lesan.ai/translate/v1" \
  -d "key=YOUR_API_KEY" \
  -d "text=Hello world!" \
  -d "src_lang=en" \
  -d "tgt_lang=ti"

Request Parameters

Parameters are sent as form data (not JSON):

  • key (required) — Your API key
  • text (required) — The text to translate
  • src_lang (required) — Source language code
  • tgt_lang (required) — Target language code

Supported Languages

  • en — English
  • am — Amharic
  • ti — Tigrinya

Translation Directions

You can translate between any supported language pair. Common directions include:

  • English ↔ Amharic
  • English ↔ Tigrinya
  • Amharic ↔ Tigrinya

Response Format

The API returns the translated text in tgt_text:

json
{
  "tgt_text": "ሰላም ዝሰፈኖ ዓለም!"
}
  • tgt_text — The translated text in the target language

Error Handling

Handle common errors when calling the translation API:

import requests


def translate(text, src_lang, tgt_lang):
    r = requests.post(
        "https://api.lesan.ai/translate/v1",
        data={
            "key": "YOUR_API_KEY",
            "text": text,
            "src_lang": src_lang,
            "tgt_lang": tgt_lang
        }
    )


    if r.ok:
        return r.json()["tgt_text"]


    error = r.json().get("error", {})


    if r.status_code == 400:
        raise ValueError(f"Invalid request: {error.get('message', r.text)}")
    elif r.status_code == 401:
        raise PermissionError(f"Authentication failed: {error.get('message', r.text)}")
    elif r.status_code == 429:
        raise Exception(f"Rate limited. Retry after {error.get('retry_after', 1)}s")
    else:
        raise Exception(f"API error ({r.status_code}): {r.text}")


# Usage
try:
    result = translate("Hello, world!", "en", "ti")
    print(result)
except ValueError as e:
    print(f"Fix your request: {e}")
except PermissionError as e:
    print(f"Check your API key: {e}")

Best Practices

  • Keep input text at a reasonable length per request for best performance
  • For longer texts, split by paragraph or sentence boundaries
  • Cache translations for frequently used text to reduce API calls
  • Implement retry logic with exponential backoff for rate limit errors
  • Use the correct language codes — see the list above

For detailed API documentation, see the API Reference. For error handling patterns, see the Error Codes reference. For rate limit details, see the Rate Limits guide.