Tarjumi API

Translate text into local African languages. 16 languages. Neural MT. No dictionary lookups.

Quick Start

curl -X POST https://api.thexi.dev/v1/translate \
  -H "Authorization: Bearer tj_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "Hello, how are you?", "target_lang": "sw"}'

Authentication

Every request requires an API key. Include it in one of:

MethodExample
HeaderAuthorization: Bearer tj_live_xxx
HeaderX-Api-Key: tj_live_xxx
Query?key=tj_live_xxx (for script embeds)

Get your API key at thexi.dev/contact or email api@thexi.dev.

Endpoints

POST /v1/translate

Translate text into a target language.

FieldTypeRequiredDescription
textstringYesSource text (English)
target_langstringNoTarget language code (default: sw)
source_langstringNoSource language code (default: en)
// Response
{
  "translation": "Habari, unaendeleaje?",
  "detected_lang": "en",
  "target_lang": "sw",
  "target_lang_name": "Swahili (Kiswahili)",
  "model": "nllb-200-ct2",
  "quality": "high",
  "cost_usd": 0.0,
  "usage": {
    "chars_used_today": 1240,
    "chars_remaining": 8760,
    "requests_today": 12
  }
}

POST /v1/bundle

Translate multiple strings in one call — ideal for website i18n.

// Request
{
  "target_lang": "ki",
  "strings": {
    "nav.home": "Home",
    "nav.about": "About us",
    "cta.signup": "Sign up now"
  }
}

// Response
{
  "translations": {
    "nav.home": "Mucii",
    "nav.about": "Niithui",
    "cta.signup": "Iyandikithie na hari"
  },
  "quality": "high",
  "model": "nllb-200"
}

GET /v1/languages

List all supported languages with quality tiers.

GET /v1/usage

Check your usage and remaining quota.

Embeddable Widget

Add mother-tongue translation to any website with one line:

<script src="https://api.thexi.dev/v1/snippet.js?key=tj_live_xxx"
  data-target="en|sw|ki|luo"></script>

Pricing

Free

KES 0

Starter

KES 2,500/mo

Pro

KES 6,500/mo

Enterprise

Custom

Rate Limits

Every response includes rate limit headers:

HeaderDescription
X-RateLimit-LimitMax requests per day
X-RateLimit-RemainingRequests remaining today
X-RateLimit-ResetWhen limits reset (midnight UTC)
X-Usage-CharsTotal characters translated today

Language Codes

CodeLanguageQuality
swSwahili (Kiswahili)High
kiKikuyu (Gikuyu)High
luoLuo (Dholuo)High
kamKamba (Kikamba)High
soSomaliHigh
amAmharicHigh
yoYorubaHigh
zuZulu (isiZulu)High
xhXhosa (isiXhosa)High
snShonaHigh
rwKinyarwandaHigh
lgLugandaHigh
luyLuhya (Oluluhya)Low
klnKalenjinLow
merMeru (Kimeru)Low
masMaasai (Maa)Low

Errors

All errors return JSON with an error field:

{"error": "rate_limit_exceeded", "message": "Daily request limit (100) exceeded.", "tier": "free"}