Platform

Translation infrastructure for the agent era.

A human pasting text into a form and an agent calling an API thousands of times an hour are different workloads. The difference changes caching, batching, pricing and rate limiting, and FluentC is built around it.

POST /ai_agent/translate · bash
curl -X POST https://api.fluentc.ai/ai_agent/translate \
  -H "Authorization: $FLUENTC_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "input": "Hello, world!",
    "input_format": "text",
    "target_language": "es",
    "source_language": "en",
    "mode": "real-time"
  }'
response · json
{
  "status": "complete",
  "translation": "¡Hola, mundo!",
  "token_count": 15,
  "source_language_detected": "en"
}
What you can do with FluentC

Four things the giants make hard. We make them defaults.

API

Translate inside an agent.

Call the API from LangChain, n8n, Zapier, or your own code. Sub-200ms responses, predictable rate limits, no surprises in the bill.

tool_call: fluentc.translate
  text:   "How may I help?"
  target: "ja"
← "ご用件をお伺いします"
Batch

Translate at batch scale.

Push up to 50,000 rows per request. Translation memory means the second pass is cheaper and faster than the first.

mode: "batch"
← { "job_id": "abc123def456" }

POST /ai_agent/results
← { "status": "complete", … }
Auto

Detect, then translate.

Don't know what language is coming in? FluentC figures it out and routes accordingly. One call instead of two.

→ { "input": "안녕하세요", "target_language": "en" }
← { "translation": "Hello",
    "source_language_detected": "ko" }
Struct

Keep your formatting.

JSON stays JSON. HTML stays HTML. We don't make you put it back together.

→ { "title": "Welcome", "cta": "Start now" }
← { "title": "ようこそ", "cta": "今すぐ開始" }
What's in it

Six parts, one API.

Translation API

One endpoint takes text, HTML or JSON. Authenticate with your API key in the Authorization header. No SDK required.

POST /ai_agent/translate

Real-time translation

Synchronous requests with SHA-256 content-addressed caching. An identical string comes back from cache in 7 to 11 ms, with no model call.

mode: "real-time"

Batch translation

Up to 50,000 rows per request across 32 parallel workers. JSON is walked, each string translated on its own, and the result reassembled in the original shape.

mode: "batch"

Translation memory

Strings you've already translated are stored and reused, so repeated content isn't retranslated or billed again. Included, not upsold.

on by default

Language detection

Leave out source_language and FluentC detects it, then tells you what it found. Or detect on its own, without translating.

POST /ai_agent/checklanguage

128+ languages

Ask which languages are enabled for your key, then pass any of them as target_language. Configurable per agent.

GET /ai_agent/languages
Under the hood

Built for the way agents fail and retry.

Hash-keyed caching

The cache key is a SHA-256 of the content. Exact matches only, so there are no fuzzy-match surprises in what comes back.

Deterministic job IDs

The same batch submitted twice maps to the same job. Resubmitting after a timeout is safe.

Built-in retries

Five attempts on timeouts, ten on rate limits, before a request is reported as failed.

Parallel JSON batches

Thirty-two workers walk the structure, translate each value independently and reassemble the original shape.

Reference

Four endpoints.

The base URL is https://api.fluentc.ai. Send your API key in theAuthorization header. The documentation covers every field, and the OpenAPI spec loads straight into your tools.

MethodPathWhat it does
POST/ai_agent/translateTranslate text, HTML or JSON in real-time or batch mode. Batch returns a job_id.
POST/ai_agent/checklanguageDetect the language of text or HTML.
POST/ai_agent/resultsFetch a batch job by job_id: complete, processing (with a wait estimate) or failed.
GET/ai_agent/languagesList the target and source languages enabled for your key.
Translate request

Five fields.

FieldTypeNotes
inputstringRequired. The text, HTML or JSON to translate.
input_formatstringRequired. text or html.
target_languagestringRequired. ISO 639-1 or 639-2 code, such as es, fr or de.
source_languagestringOptional. Detected automatically when you leave it out.
modestringRequired. real-time or batch.
Errors

Plain status codes.

StatusMeaning
401The API key is missing, or no site matches it.
403The subscription isn't active, or a usage limit has been reached.
422The request is invalid: missing input, an unsupported input_format, or a target language that isn't enabled for your key.

Make your first call today.

Create a key, paste the curl, read the response.