Translation API for developers

Localization infrastructure for modern apps

Store, manage, and deliver translations through a simple API. Ship multilingual apps without the complexity.

Free to start Β· No credit card required

example.ts
// Fetch all translations for a locale
const res = await fetch(
  "https://sapi.i18nme.com/v1/translations/en",
  { headers: { "X-API-Key": "key_live_xk9p2m..." } }
)
const t = await res.json()

console.log(t["auth.login"])   // "Sign in"
console.log(t["home.title"])   // "Welcome back"
100+Languages

Built for developers and product teams

StartupsSaaS TeamsIndie HackersDev AgenciesOpen SourceProduct Teams

The problem

Localization shouldn't slow you down

The current toolchain for managing translations is a patchwork of files, scripts, and spreadsheets. There's a better way.

Managing JSON files

Maintaining dozens of locale files across repos is error-prone and never stays in sync.

Syncing translations

Every deploy risks overwriting translator work or missing new keys entirely.

Working with translators

Sending spreadsheets back and forth with no version history or approval workflow.

Deployment complexity

Shipping a new locale requires a full redeploy even when only strings changed.

Missing key bugs

Production crashes when a key is missing from one locale and nobody noticed in review.

Framework fragmentation

Every framework has its own i18n library with incompatible formats and conventions.

The solution

Everything you need for global scale

One platform for managing translations, collaborating with teams, and delivering localized content to users worldwide.

API-first architecture

Fetch translations at runtime over HTTP. No build step, no file bundling. Works with any language or framework.

Live updates

Push new translations without a redeploy. Your app picks up changes on the next request.

Team collaboration

Invite translators and reviewers by email. Manage role-based approvals and track who changed what.

AI translation

Auto-translate new keys with AI (OpenAI). Review and approve suggestions before they go live.

REST API & integrations

A clean REST API that works with any language or framework. Code examples available for JavaScript, Python, and curl.

Edge-ready delivery

Serve translations from CDN-cached storage close to your users. Optimized for low latency globally, designed for high availability.

Translation Management

One dashboard for all your translations

Manage every string across all your projects in a clean, searchable interface. Organize by namespace, track translation status, and never ship with missing keys.

  • Namespace and project organization
  • Translation status tracking (draft, review, approved)
  • Search and filter across all keys
  • Version history and audit log
// Create a key, then set its translation via the portal API
await fetch("https://api.i18nme.com/projects/PROJECT_ID/keys", {
  method: "POST",
  headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json" },
  body: JSON.stringify({ key: "auth.forgot_password", group_name: "auth" })
})

await fetch(
  "https://api.i18nme.com/projects/PROJECT_ID/keys/KEY_ID/translations/fr",
  {
    method: "PUT",
    headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json" },
    body: JSON.stringify({ value: "Mot de passe oubliΓ© ?" })
  }
)
Runtime API Delivery

Fetch translations, don't bundle them

Your app fetches the latest translations at runtime via a fast REST API. No rebuild required when strings change. Deploy translations independently of your application.

  • Optimized for low-latency global API responses
  • Cached endpoints backed by pre-built S3/R2 JSON
  • Serve draft, review, or approved-only translations
  • Translation memory β€” unchanged strings cost nothing
// Fetch translations at the edge
const response = await fetch(
  "https://sapi.i18nme.com/v1/translations/en",
  { headers: { "X-API-Key": process.env.I18N_API_KEY } }
)

const { translations } = await response.json()
AI-Powered Localization

Translate new keys in seconds

Add a new string and i18nme automatically generates high-quality AI translations for all your target languages. Review, approve, or edit before publishing.

  • AI-powered translations (OpenAI)
  • Context-aware suggestions
  • Human review workflow
// Auto-translate a new key with AI
await fetch(
  "https://api.i18nme.com/projects/PROJECT_ID/keys/KEY_ID/auto-translate",
  {
    method: "POST",
    headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json" },
    body: JSON.stringify({ target_languages: ["fr", "de", "ja", "zh", "es"] })
  }
)
// Lands as "review" β€” approve it in the dashboard before it's served

How it works

Up and running in minutes

No complex setup. No config files. No surprises.

1

Create a project

Sign up, create a project, and add the languages you want to support. Takes less than a minute.

2

Add your translations

Import existing JSON files or add keys manually. Use the AI assistant to generate translations quickly.

3

Fetch via API

Call the REST API from your app with your API key. Get a flat JSON object of all translations for a locale.

4

Ship globally

Deploy your app. Update translations anytime from the dashboard β€” no redeploy needed.

Developer experience

Integrate in minutes, not days

A standard REST API with predictable JSON responses. One HTTP request to fetch all translations for a locale β€” works with any language, framework, or HTTP client, no extra dependencies required.

REST API β€” works with any language or framework
No extra dependencies to install
Flat JSON response, ready to use
API key authentication via request header
Detailed error responses with status codes
Read the docs
curl
$
curl https://sapi.i18nme.com/v1/translations/de \
  -H "X-API-Key: key_live_xxxx"
useTranslations.ts
// fetch-translations.ts
async function getTranslations(locale: string) {
  const res = await fetch(
    `https://sapi.i18nme.com/v1/translations/${locale}`,
    { headers: { "X-API-Key": process.env.I18N_API_KEY! } }
  )
  return res.json() as Promise<Record<string, string>>
}

// In a React component
export function useTranslations(locale: string) {
  return useQuery({
    queryKey: ["translations", locale],
    queryFn: () => getTranslations(locale),
    staleTime: 5 * 60 * 1000, // cache 5 min
  })
}

// Usage
const { data: t } = useTranslations("de")
return <h1>{t?.["home.welcome"]}</h1>

Pricing

Start free, scale as you grow

No credit card required. Upgrade when your project takes off.

Free forever
$0/month

Free

Ship your first multilingual app

  • 1 project
  • 2 languages
  • 1,000 translation units/mo
  • CLI + GitHub Action
  • Translation memory
  • No card required
  • Community support
Get started free
Most popular
$19/month

Solo

For indie hackers and solo founders

  • Up to 3 projects
  • Unlimited languages
  • 20,000 translation units/mo
  • CLI + GitHub Action
  • Translation memory
  • Email support
Start with Solo
$59/month

Team

For teams shipping at scale

  • Unlimited projects
  • Unlimited languages
  • 100,000 translation units/mo
  • Up to 5 seats
  • Version history & revert
  • Export translations to JSON
  • Email support
Start with Team
$199/month

Business

For enterprise

  • Unlimited projects
  • Unlimited languages
  • 500,000 translation units/mo
  • Unlimited seats
  • Version history & revert
  • Export translations to JSON
  • Priority support
Start with Business

Need a custom plan? Get in touch

Get started today

Start localizing your app today

Join developers shipping multilingual apps with confidence. Free to start, no credit card required.