ChindaMT Translation
Translates text between Thai and English, one text or a batch per request, following the rules you set for terms, tone, length and format, and marks any part whose translation may be wrong. The model, ChindaMT-4B, is published at AACL-IJCNLP 2026 with open weights.
- Price1 ICper 400 characters
- Served704calls
Input
- text
- The meeting has been moved to Friday because the boss is busy.
- source_lang
- en
- target_lang
- th
- rules
- Use a casual, friendly tone
OutputPOST /v3/store/text/mt/translate
- translation
- ประชุมย้ายไปวันศุกร์แล้วนะ เพราะเจ้านายยุ่งมาก
- source_lang
- en
- target_lang
- th
- warnings
- []
Without the rule, the same sentence comes back in neutral written Thai: การประชุมถูกเลื่อนไปเป็นวันศุกร์เนื่องจากเจ้านายยุ่ง
Every field, under ResponseOther endpoints: /batch see Request
Request
JSON, with the key in the apikey header. /translate takes one text and /translate/batch several, such as UI strings or table cells; either takes at most 100,000 characters.
Price
1 IC per 400 characters of text, or of all texts, counted exactly as sent and rounded up to the next 400 per request: a 44-character sentence costs 1 IC, a 401-character paragraph 2 IC, a full 100,000-character request 250 IC.
- Spaces, line breaks and lines that come back unchanged all count;
rulesare not billed. - Characters are Unicode code points, so every Thai vowel and tone mark is one character:
ที่is 3. - Only a
200is billed, and it reports the billed characters in theiapp-input-charsheader. Before translating, the gateway checks that your balance covers the whole request and answers402if it does not.
Rules
Rules are short instructions in plain English, applied to the whole text, or to every text in a batch. ChindaMT was trained on five kinds:
| Kind | Example rule |
|---|---|
| Terminology | Translate บาท as THB, Keep product names such as iApp Portal in English |
| Tone and register | Use a formal, polite tone suitable for a business email, Use a casual, friendly tone |
| Length | Use exactly one sentence, Keep it short enough for a subtitle |
| Format | Return only the translation, no quotes, Keep the numbering of the list |
| Language | Avoid English contractions, Write numbers as digits |
A rule works best when it is specific and can be checked in the output. With Keep product names such as iApp Portal, API Keys and Document OCR in English, "press Create Key to start using Document OCR" keeps "Create Key" in English; without it, the button name is translated. For a long glossary, send the terms that occur in the text, not the whole list.
Response
JSON. A 200 carries the billed characters in the iapp-input-chars header, and every response carries an X-Request-ID header to quote when you report a problem.
Line by line
- Each line is translated on its own. Line breaks, and the spaces at the start and end of each line, are kept.
- A line with no letters of the source language comes back unchanged: a blank line, a line of numbers, or a line already in the target language. It is still billed.
- A batch succeeds or fails as a whole. If it fails, no translations are returned and nothing is billed, so send the whole batch again.
Warnings
A warning marks a part of your text whose translation may be wrong. The request still succeeds, and translation holds the best result for that part.
reason | Meaning |
|---|---|
truncated | The translation was cut off before it finished. |
too_short | The translation is much shorter than its source, so part of it may be missing. |
wrong_language | The translation is not in the target language. |
Details
Measured
In the accompanying paper, a judge model compared ChindaMT-4B with open translation models of the same size on 200 English-to-Thai and 200 Thai-to-English items per test, corrected for answer length, so 50% is a tie. These are the shares of comparisons in which it preferred ChindaMT-4B:
| ChindaMT-4B compared with | Plain translation | With rules |
|---|---|---|
| Typhoon-Translate-1.5-4B | 61.8% | 68.4% |
| TranslateGemma-4B | 87.2% | |
| MiLMMT-46-4B | 89.5% |
In a blind test of 100 items each, three native Thai speakers preferred ChindaMT-4B over Typhoon-Translate-1.5-4B in 64% of plain translations and 69% of translations with rules. Without rules, quality holds: on the public FLORES-200 benchmark ChindaMT-4B scores 90.7 on the mean of CometKiwi, GEMBA-DA and GEMBA-MQM, the highest of the 4B to 9B models tested, and 87.8 on WMT24++ news, second to a 7B model at 89.4.
Speed through the gateway on 29 September 2026, one request at a time, the median of 3 to 9 runs, network time from Bangkok included:
| Request | Characters | Round trip |
|---|---|---|
| One sentence, Thai to English | 82 | 0.36 s |
| Two sentences, English to Thai | 183 | 0.38 s |
| The same, with two rules | 183 | 0.40 s |
| One paragraph, English to Thai | 653 | 0.60 s |
| About one page, English to Thai | 2,028 | 0.71 s |
| About one page, Thai to English | 2,044 | 0.61 s |
| About five pages, English to Thai | 10,071 | 1.72 s |
Time grows far more slowly than length: five pages take about four times as long as one sentence. For many short strings, one /translate/batch request is faster than many single ones.
Errors
| Status | Cause | What to do |
|---|---|---|
401 | The apikey is missing or not valid. | Check the key on the API Keys page. |
402 | Your balance does not cover the characters in the request. | Top up, or send less text per request. |
413 | text is longer than 100,000 characters, or texts add up to more. | Split the text over several requests. |
422 | The body is invalid: a required field missing, a language other than th or en, the same language on both sides, rules over 2,000 characters, or an empty texts. | Fix the request. |
429 | The rate limit for this API key is exceeded. | Wait and retry. |
503 | The translation model is unavailable. | Retry later. |
504 | The translation did not finish within 90 seconds. | Retry later, or send less text per request. |
For a 413, 503 or 504, detail is a message; for a 422, it is a list of problems, each with the field's place in loc and the reason in msg. Errors are not billed.
Limits
- Thai and English, in either direction.
- 100,000 characters per request:
text, or all oftextstogether; 2,000 characters ofrulesin total. - 90 seconds per request.
- 5 requests per second, 120 per minute and 3,000 per hour per API key.
- Rules that a good reference translation could satisfy. Strict placeholder tokens and a large mandatory glossary are outside what the model was trained for; check such output before use.
- Like any machine translation, a translation can read fluently and still be wrong. Have legal, medical and other high-stakes text reviewed;
warningsmarks the parts most likely wrong.
Open model
ChindaMT-4B, 2B and 0.8B are open under Apache 2.0 on Hugging Face, with the 1.97 million training records (ChindaMT-Grounded), the evaluation suites (ChindaMT-CoreEval, ChindaMT-BroadEval) and the data curation code (ChindaMT-RGDC). For an on-premise deployment with your own terminology, write to sale@iapp.co.th.
Data handling
The service is GDPR and PDPA compliant. Text is translated on iApp-operated servers in Thailand and is not sent to any third party. It is not stored: the logs record the direction and the character count, not the content.
Changelog
| Version | Date | Change |
|---|---|---|
| v0.2.0-20260929 | 29 Sep 2026 | First public release: Thai-English translation in both directions with rules, /translate and /translate/batch, warnings, up to 100,000 characters per request, at 1 IC per 400 characters. |