<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>iApp Technology Blog</title>
        <link>https://iapp.co.th/en/blog</link>
        <description>iApp Technology Blog</description>
        <lastBuildDate>Tue, 29 Sep 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[ChindaMT: Thai-English translation that follows your rules, published at AACL-IJCNLP 2026]]></title>
            <link>https://iapp.co.th/en/blog/chindamt-launch</link>
            <guid>https://iapp.co.th/en/blog/chindamt-launch</guid>
            <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[iApp Technology releases ChindaMT, a Thai-English translation model family (4B, 2B, 0.8B) that follows rules on tone, terminology, length and format without losing translation quality. Research published at AACL-IJCNLP 2026 (Main Conference). Open weights, data and code under Apache 2.0, and a hosted API at 1 IC per 400 characters.]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="ChindaMT, instruction-following Thai-English translation, published at AACL-IJCNLP 2026" src="https://iapp.co.th/en/assets/images/chindamt-launch-98b273e50c23e9204dab31c8abef4340.webp" width="1600" height="1300" class="img_ev3q"></p>
<p>Today we are releasing <strong>ChindaMT</strong>, a family of Thai-English translation models that follow the rules you give them: the term to use, the tone to write in, the length and the format. The research behind it is published at <strong>AACL-IJCNLP 2026 (Main Conference)</strong>. The models, the training data, the evaluation suites and the code are open under Apache 2.0, and ChindaMT-4B is available now as a hosted API.</p>
<p><strong>Try it: <a href="https://iapp.co.th/en/tools/chindamt-thai-english-translator">ChindaMT Translator</a></strong> · <strong>API: <a href="https://iapp.co.th/en/docs/nlp/translation/chindamt">documentation and live demo</a></strong> · <strong>Paper: <a href="https://arxiv.org/abs/2609.34770" target="_blank" rel="noopener noreferrer">arxiv.org/abs/2609.34770</a></strong> · <strong>Weights: <a href="https://huggingface.co/iapp/ChindaMT-4B" target="_blank" rel="noopener noreferrer">huggingface.co/iapp/ChindaMT-4B</a></strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="a-translation-can-be-correct-and-still-wrong-for-the-job">A translation can be correct and still wrong for the job<a href="https://iapp.co.th/en/blog/chindamt-launch#a-translation-can-be-correct-and-still-wrong-for-the-job" class="hash-link" aria-label="Direct link to A translation can be correct and still wrong for the job" title="Direct link to A translation can be correct and still wrong for the job" translate="no">​</a></h2>
<p>Take one sentence: "The meeting has been moved to Friday because the boss is busy."</p>
<p>A standard translation gives <em>การประชุมถูกเลื่อนไปเป็นวันศุกร์เนื่องจากเจ้านายยุ่ง</em>. Every word is right, and nobody would type it into a group chat. Ask ChindaMT to "use a casual, friendly tone" and it writes <em>ประชุมย้ายไปวันศุกร์แล้วนะ เพราะเจ้านายยุ่งมาก</em>.</p>
<p>Translation rarely has one answer. Subtitles need the character's voice, papers need a formal register, a brand needs its own style, a contract needs the same term every time. The difficulty is that the harder a model is pushed to follow such rules, the more its translation quality tends to fall. Translation-specialised models translate well but ignore instructions; general instruction-following models obey but translate less well. No open Thai-English model closed that gap.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-answer-was-in-the-data">The answer was in the data<a href="https://iapp.co.th/en/blog/chindamt-launch#the-answer-was-in-the-data" class="hash-link" aria-label="Direct link to The answer was in the data" title="Direct link to The answer was in the data" translate="no">​</a></h2>
<p>We built the training data with a method we call <strong>Reference-Grounded Data Curation (RGDC)</strong>. Instead of asking a language model to invent rules and hoping they can be satisfied, RGDC extracts every rule from a good reference translation that already satisfies it. If the reference uses "THB" for บาท, keeps one sentence and stays formal, those become the rules for that example, and they are achievable by construction because a real translation already meets them.</p>
<p>The pipeline starts from 17.85 million English-Thai sentence pairs from ten public corpora. The first phase keeps the 1.75 million pairs that are hardest but still learnable. The second extracts rules from each reference in five categories (content, numbers, style, format, language), regenerates translations under those rules, and keeps only the candidates that pass every rule. The result is <strong>Grounded</strong>, a dataset of 1.97 million records with 3.7 rules each on average.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="results">Results<a href="https://iapp.co.th/en/blog/chindamt-launch#results" class="hash-link" aria-label="Direct link to Results" title="Direct link to Results" translate="no">​</a></h2>
<p>We fine-tuned three sizes, 4B, 2B and 0.8B, and compared each with open translation models of the same size, in both directions, with and without rules. The figure below is how often a judge model preferred ChindaMT's translation when rules were given (50% is a tie):</p>
<table><thead><tr><th>ChindaMT</th><th>Compared with</th><th>Preferred</th></tr></thead><tbody><tr><td>4B</td><td>Typhoon-Translate-1.5-4B</td><td>68.4%</td></tr><tr><td>4B</td><td>TranslateGemma-4B</td><td>87.2%</td></tr><tr><td>4B</td><td>MiLMMT-46-4B</td><td>89.5%</td></tr><tr><td>2B</td><td>HY-MT-1.5-1.8B</td><td>78.6%</td></tr><tr><td>2B</td><td>GemmaX2-28-2B</td><td>89.9%</td></tr><tr><td>0.8B</td><td>HY-MT-1.5-1.8B</td><td>67.8%</td></tr><tr><td>0.8B</td><td>GemmaX2-28-2B</td><td>86.5%</td></tr></tbody></table>
<p>Following rules did not cost translation quality. On the public FLORES-200 benchmark, ChindaMT-4B scored 90.7 on the mean of three quality metrics, the highest among the 4B to 9B models tested. Three native Thai speakers, rating anonymised pairs without knowing which model produced which, preferred ChindaMT-4B in 69% of translations with rules and 67% overall, more than two to one. The same recipe also improved a second model generation at fixed settings, which indicates the gain comes from the data rather than from one particular base model.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="use-it">Use it<a href="https://iapp.co.th/en/blog/chindamt-launch#use-it" class="hash-link" aria-label="Direct link to Use it" title="Direct link to Use it" translate="no">​</a></h2>
<p><strong>On the web.</strong> The <a href="https://iapp.co.th/en/tools/chindamt-thai-english-translator">ChindaMT Translator</a> lets you translate with your own rules and compare the result with a translation without them.</p>
<p><strong>As an API.</strong> ChindaMT-4B is live at <code>POST https://api.iapp.co.th/v3/store/text/mt/translate</code>, with a batch endpoint for UI strings and table cells. It takes up to 100,000 characters per request and returns a sentence in about 0.4 seconds and five pages in 1.7 seconds. The price is 1 IC per 400 characters of source text; rules are free and failed requests are not charged. Everything is in the <a href="https://iapp.co.th/en/docs/nlp/translation/chindamt">API documentation</a>.</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl -X POST https://api.iapp.co.th/v3/store/text/mt/translate \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -H "apikey: YOUR_API_KEY" \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -H "Content-Type: application/json" \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -d '{"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"]}'</span><br></span></code></pre></div></div>
<p><strong>On your own hardware.</strong> All three sizes are open under Apache 2.0. The 0.8B model is small enough to run on a laptop.</p>
<table><thead><tr><th>Release</th><th>Link</th></tr></thead><tbody><tr><td>Models (Apache 2.0)</td><td><a href="https://huggingface.co/iapp/ChindaMT-4B" target="_blank" rel="noopener noreferrer">ChindaMT-4B</a>, <a href="https://huggingface.co/iapp/ChindaMT-2B" target="_blank" rel="noopener noreferrer">ChindaMT-2B</a>, <a href="https://huggingface.co/iapp/ChindaMT-0.8B" target="_blank" rel="noopener noreferrer">ChindaMT-0.8B</a></td></tr><tr><td>Training data, 1.97M records</td><td><a href="https://huggingface.co/datasets/iapp/ChindaMT-Grounded" target="_blank" rel="noopener noreferrer">ChindaMT-Grounded</a></td></tr><tr><td>Evaluation suites</td><td><a href="https://huggingface.co/datasets/iapp/ChindaMT-CoreEval" target="_blank" rel="noopener noreferrer">ChindaMT-CoreEval</a>, <a href="https://huggingface.co/datasets/iapp/ChindaMT-BroadEval" target="_blank" rel="noopener noreferrer">ChindaMT-BroadEval</a></td></tr><tr><td>Code</td><td><a href="https://github.com/iapp-technology/ChindaMT-RGDC" target="_blank" rel="noopener noreferrer">github.com/iapp-technology/ChindaMT-RGDC</a></td></tr><tr><td>Paper</td><td><a href="https://arxiv.org/abs/2609.34770" target="_blank" rel="noopener noreferrer">arxiv.org/abs/2609.34770</a></td></tr></tbody></table>
<p>Organisations that need their own terminology built in, or an on-premise deployment for data security, can contact <a href="mailto:sale@iapp.co.th" target="_blank" rel="noopener noreferrer">sale@iapp.co.th</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="limits">Limits<a href="https://iapp.co.th/en/blog/chindamt-launch#limits" class="hash-link" aria-label="Direct link to Limits" title="Direct link to Limits" translate="no">​</a></h2>
<p>ChindaMT covers Thai and English only. It follows the kinds of rules a good reference translation can demonstrate: terminology, tone, length and output format. A large mandatory glossary and strict placeholder tokens are outside what it was trained for. Like any machine translation it can produce fluent but incorrect text, so translations for legal, medical and other high-stakes use should be reviewed by a person; the API marks likely problems in its <code>warnings</code> field.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="acknowledgements">Acknowledgements<a href="https://iapp.co.th/en/blog/chindamt-launch#acknowledgements" class="hash-link" aria-label="Direct link to Acknowledgements" title="Direct link to Acknowledgements" translate="no">​</a></h2>
<p>ChindaMT is the work of the iApp AI Research team, with Prof. Dr. Thanaruk Theeramunkong. We thank SiamAI for computational resources, OpenThai Lab for its support, and the three native Thai speakers who volunteered as raters.</p>
<p>If you could give a translator one rule, what would it be? Try it in the <a href="https://iapp.co.th/en/tools/chindamt-thai-english-translator">translator</a> and tell us on <a href="https://discord.gg/kYcpmdEcS2" target="_blank" rel="noopener noreferrer">Discord</a>.</p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>OpenThai</category>
            <category>Translation</category>
            <category>Thai NLP</category>
            <category>Open Source</category>
            <category>Announcement</category>
            <category>Thai Language AI</category>
            <category>AI API</category>
        </item>
        <item>
            <title><![CDATA[NVIDIA highlights OpenThai 2.0 Legal at AI Day Singapore]]></title>
            <link>https://iapp.co.th/en/blog/nvidia-ai-day-singapore-openthai2p0-legal</link>
            <guid>https://iapp.co.th/en/blog/nvidia-ai-day-singapore-openthai2p0-legal</guid>
            <pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[NVIDIA's AI Day Singapore article names iApp Technology and OpenThai 2.0 Legal, the open-source Thai legal model built on NVIDIA Nemotron, as Thailand's example of region-specialized AI. The model powers Thanoy, with approximately 43,000 users, and is now available to TH-AI Passport holders on AiPASS.]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="OpenThai 2.0 Legal, the open-weight Thai legal model" src="https://iapp.co.th/en/assets/images/launch-hero-en-8805a78303d70ac6a8eb087213ac303c.webp" width="1920" height="1080" class="img_ev3q"></p>
<p>On 22 September 2026, NVIDIA published its round-up of <a href="https://blogs.nvidia.com/blog/ai-day-singapore/" target="_blank" rel="noopener noreferrer">NVIDIA AI Day Singapore</a> (Raffles City Convention Centre, 22–23 September). Under the heading "Southeast Asia Technology Leaders Build With NVIDIA Nemotron Open Models for Region-Specialized AI", Thailand is represented by iApp Technology, the Big Data Institute and <strong>OpenThai 2.0 Legal</strong>, our open-source Thai legal model.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-nvidia-wrote">What NVIDIA wrote<a href="https://iapp.co.th/en/blog/nvidia-ai-day-singapore-openthai2p0-legal#what-nvidia-wrote" class="hash-link" aria-label="Direct link to What NVIDIA wrote" title="Direct link to What NVIDIA wrote" translate="no">​</a></h2>
<blockquote>
<p>"In Thailand, the Big Data Institute and iApp Technology, as members of the ThaiLLM Collaboration, are exploring Nemotron as a foundation model. With an initial focus on legal applications, iApp Technology is adapting Nemotron 3 Nano by fine-tuning OpenThai 2.0 Legal with Thai-language legal data using the NVIDIA NeMo framework. The model is released as open source for the Thai developer community and serves as the engine for Thanoy, the company's legal-assistant chatbot, which already serves approximately 43,000 users."</p>
<p>— NVIDIA, <a href="https://blogs.nvidia.com/blog/ai-day-singapore/" target="_blank" rel="noopener noreferrer">At AI Day Singapore, NVIDIA and Partners Showcase AI Advancements Across Southeast Asia</a>, 22 September 2026</p>
</blockquote>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="where-the-model-runs-today">Where the model runs today<a href="https://iapp.co.th/en/blog/nvidia-ai-day-singapore-openthai2p0-legal#where-the-model-runs-today" class="hash-link" aria-label="Direct link to Where the model runs today" title="Direct link to Where the model runs today" translate="no">​</a></h2>
<table><thead><tr><th>Channel</th><th>Who it serves</th><th>Access</th></tr></thead><tbody><tr><td><a href="https://thanoy.ai/" target="_blank" rel="noopener noreferrer">Thanoy</a></td><td>Thai legal-assistant chatbot, approximately 43,000 users</td><td>Web</td></tr><tr><td><a href="https://aipass.go.th/" target="_blank" rel="noopener noreferrer">TH-AI Passport</a> (AiPASS)</td><td>National programme run by the Office of the National Digital Economy and Society Commission, Ministry of Digital Economy and Society; target of at least 5 million Thais aged 15 and over</td><td>No additional cost for passport holders</td></tr><tr><td><a href="https://iapp.co.th/en/openmodels/openthai2p0-legal">iApp hosted API</a></td><td>Developers, OpenAI-compatible endpoint</td><td>Free with an iApp API key until 30 September 2026, then 0.01 / 0.02 IC per 1K input / output tokens</td></tr><tr><td><a href="https://huggingface.co/iapp/openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b" target="_blank" rel="noopener noreferrer">Hugging Face</a></td><td>Organisations that need to keep legal matters on their own servers</td><td>Open weights, free download</td></tr></tbody></table>
<p><em>Update, 3 October 2026: the free period has ended; the hosted API now costs 0.01 IC per 1,000 input tokens and 0.02 IC per 1,000 output tokens.</em></p>
<p>The TH-AI Passport listing went live the same week as the NVIDIA article (<a href="https://www.thansettakij.com/technology/ai/669542" target="_blank" rel="noopener noreferrer">Thansettakij, 22 September 2026</a>). Passport holders can ask questions on Thai law with cited statutes and sections, search and summarise Supreme Court judgments, and summarise contracts.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-model-in-brief">The model in brief<a href="https://iapp.co.th/en/blog/nvidia-ai-day-singapore-openthai2p0-legal#the-model-in-brief" class="hash-link" aria-label="Direct link to The model in brief" title="Direct link to The model in brief" translate="no">​</a></h2>
<p>OpenThai 2.0 Legal is a 30-billion-parameter Mixture-of-Experts model that activates about 3 billion parameters per token and runs on a single GPU with 24 GB of VRAM. Asked a question with no statute in the prompt, it recalls and cites the correct law and section from memory. On our published benchmark it has roughly four times the closed-book recall of Qwen 35B on the Civil and Commercial Code. Full results, the demo and the retrieval (RAG) tutorial are on the <a href="https://iapp.co.th/en/openmodels/openthai2p0-legal">model page</a>.</p>
<p>Its outputs are decision support, not legal advice. A qualified professional should verify each citation against the current law.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="built-together">Built together<a href="https://iapp.co.th/en/blog/nvidia-ai-day-singapore-openthai2p0-legal#built-together" class="hash-link" aria-label="Direct link to Built together" title="Direct link to Built together" translate="no">​</a></h2>
<p>OpenThai 2.0 Legal was built with the Artificial Intelligence Entrepreneur Association of Thailand (AIEAT) and the members of the ThaiLLM initiative, including the Big Data Institute (BDI), on NVIDIA Nemotron open models and the NVIDIA NeMo framework. We thank each of them, and the iApp team who trained, evaluated and shipped it.</p>
<p>Thai AI, built by Thais, for Thais.</p>
<p><strong>Read more:</strong> <a href="https://iapp.co.th/en/blog/openthai2p0-legal-launch">Launch story</a> · <a href="https://iapp.co.th/en/blog/openthai2p0-legal-press-release">Press release</a> · <a href="https://iapp.co.th/en/openmodels/openthai2p0-legal">Model page and live demo</a></p>
<p>Press and partnership inquiries: <a href="mailto:sale@iapp.co.th" target="_blank" rel="noopener noreferrer">sale@iapp.co.th</a> · 02-124-4041</p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>OpenThai</category>
            <category>LLM</category>
            <category>Legal AI</category>
            <category>Open Source</category>
            <category>Announcement</category>
            <category>Thai Language AI</category>
        </item>
        <item>
            <title><![CDATA[OpenThai-SystemOne — an open Thai and English System One model you can run on a laptop]]></title>
            <link>https://iapp.co.th/en/blog/openthai-systemone-launch</link>
            <guid>https://iapp.co.th/en/blog/openthai-systemone-launch</guid>
            <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[iApp Technology and OpenThai release OpenThai-SystemOne, an open-source (Apache 2.0) 0.8B decision model for Thai and English. It does not generate text: send a state and typed questions, get a calibrated probability for every option in one forward pass. Weights, code, data and a free hosted API.]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="OpenThai-SystemOne, an open Thai and English System One decision model, released 20 September 2026" src="https://iapp.co.th/en/assets/images/openthai-systemone-launch-9717a0b0fa1b8764c4d1838f65092d48.webp" width="1600" height="1600" class="img_ev3q"></p>
<p>Tonight we are releasing <strong>OpenThai-SystemOne</strong>, an open-source Thai and English <em>System One</em> decision model: 0.8B parameters, Apache 2.0, weights and training recipe on Hugging Face and GitHub, and a free hosted API on <code>api.iapp.co.th</code>.</p>
<p>It does not write. It decides. Send it a state and typed questions; it returns a calibrated probability for every option of every question in one forward pass, with zero output tokens.</p>
<p><strong>Model page: <a href="https://iapp.co.th/en/openmodels/openthai-systemone">iapp.co.th/openmodels/openthai-systemone</a></strong> · <strong>Weights: <a href="https://huggingface.co/iapp/OpenThai-SystemOne" target="_blank" rel="noopener noreferrer">huggingface.co/iapp/OpenThai-SystemOne</a></strong> · <strong>Code: <a href="https://github.com/iapp-technology/openthai-systemone" target="_blank" rel="noopener noreferrer">github.com/iapp-technology/openthai-systemone</a></strong> · <strong>Try it: <a href="https://iapp.co.th/en/docs/llm/openthai-systemone">API playground</a></strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-a-model-that-does-not-generate-text">Why a model that does not generate text<a href="https://iapp.co.th/en/blog/openthai-systemone-launch#why-a-model-that-does-not-generate-text" class="hash-link" aria-label="Direct link to Why a model that does not generate text" title="Direct link to Why a model that does not generate text" translate="no">​</a></h2>
<p>Thai businesses route support tickets, moderate comments, pick the next button for an agent to press and check whether an answer is grounded, millions of times a day. Each of those is a decision among options you already know. Calling a large language model for each one is slow, costs tokens, and can answer with something that was never on the list.</p>
<p>A System One model answers the structured question directly. TypeSafe AI introduced the category with Jev on 15 September 2026. Five days later, here is an open one for Thai and English, with the part TypeSafe kept closed, the architecture, in the open.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-it-does">What it does<a href="https://iapp.co.th/en/blog/openthai-systemone-launch#what-it-does" class="hash-link" aria-label="Direct link to What it does" title="Direct link to What it does" translate="no">​</a></h2>
<p>You give it a <em>state</em> (any text or JSON) and one or more <em>questions</em> of three types:</p>
<table><thead><tr><th>Type</th><th>You give</th><th>You get</th></tr></thead><tbody><tr><td><code>choice</code></td><td>instructions and up to 255 named options</td><td>best option, a probability per option, <code>confidence</code>, <code>abstain</code></td></tr><tr><td><code>score</code></td><td>instructions and 2 to 10 ordered levels</td><td>a probability-weighted score and per-level probabilities</td></tr><tr><td><code>noul</code></td><td>a yes/no question</td><td>P(yes)</td></tr></tbody></table>
<p>All questions are answered in the same forward pass. Here is a Thai support ticket with three questions, and the model's measured output:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">"state"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">"ticket"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"โดนหักเงินซ้ำสองครั้งเมื่อวานนี้ ขอเงินคืนด่วนนะครับ โทรไปสามรอบแล้วไม่มีใครรับ"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"questions"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token property" style="color:#36acaa">"department"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"choice"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"instructions"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ทีมใดควรรับผิดชอบ"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                   </span><span class="token property" style="color:#36acaa">"criteria"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">"billing"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"การเงิน/คืนเงิน"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"technical"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ระบบใช้งานไม่ได้"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"sales"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token null keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token property" style="color:#36acaa">"frustration"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"score"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"instructions"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ลูกค้าหงุดหงิดแค่ไหน"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                   </span><span class="token property" style="color:#36acaa">"criteria"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"ใจเย็น"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"หงุดหงิดแต่สุภาพ"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"โกรธมาก"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token property" style="color:#36acaa">"refund"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"noul"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"instructions"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ลูกค้าขอเงินคืนอย่างชัดเจนหรือไม่"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<table><thead><tr><th>Question</th><th>Answer</th><th>Confidence</th></tr></thead><tbody><tr><td>department</td><td>billing (96.3%), technical 1.1%, sales 2.6%</td><td>0.83</td></tr><tr><td>frustration</td><td>1.95 of 2 (very angry 95.7%)</td><td>0.82</td></tr><tr><td>refund</td><td>P(yes) = 0.946</td><td></td></tr></tbody></table>
<p>166 input tokens, 0 output tokens, 0.23 s round trip through our gateway.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-it-works">How it works<a href="https://iapp.co.th/en/blog/openthai-systemone-launch#how-it-works" class="hash-link" aria-label="Direct link to How it works" title="Direct link to How it works" translate="no">​</a></h2>
<p>We took the text tower of Qwen3.5-0.8B, continued pretraining on about 5B Thai tokens, and replaced the 248K-token language-model head with a 256-way decision head. Options are introduced by control tokens. Every answer position is projected onto 256 logits; slots beyond the number of options are masked, and slot 255 means "none of the above". <code>choice</code> takes the argmax, <code>score</code> is the probability-weighted level index, <code>noul</code> is the probability of yes. Option order is shuffled during training, so there is no position bias. The model was trained on public classification, NLI, QA and agent datasets plus synthetic Thai and English decision tasks, then calibrated.</p>
<p>The result runs on a laptop GPU: 154 ms per request on a MacBook M3 Max, 40 to 70 ms on an H100.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="limits-so-nobody-has-to-find-them-for-us">Limits, so nobody has to find them for us<a href="https://iapp.co.th/en/blog/openthai-systemone-launch#limits-so-nobody-has-to-find-them-for-us" class="hash-link" aria-label="Direct link to Limits, so nobody has to find them for us" title="Direct link to Limits, so nobody has to find them for us" translate="no">​</a></h2>
<ul>
<li>This is version 0.1 and a 0.8B model. It is not a reasoning model.</li>
<li>It cannot emit an option you did not offer, but it can still choose the wrong one. Every answer carries a <code>confidence</code>; route the low ones to a larger model or a person.</li>
<li>Text only.</li>
<li>At most 255 options per <code>choice</code>, 2 to 10 levels per <code>score</code>, 64K tokens per request.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-numbers">The numbers<a href="https://iapp.co.th/en/blog/openthai-systemone-launch#the-numbers" class="hash-link" aria-label="Direct link to The numbers" title="Direct link to The numbers" translate="no">​</a></h2>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Updated 22 September 2026: v0.3</div><div class="admonitionContent_BuS1"><p>Two updates since launch. v0.2 (21 September) added a 22k-record synthetic Thai sentiment set: macro 61.9 to 63.2, Wisesight 38.7 to 51.5. v0.3 (22 September) continued for 5,000 steps with real train splits and five targeted synthetic sets for the weak spots: macro 63.2 to 74.3, within 0.5 of Bespoke-Nimble-9B (74.8), SQuAD2 50.2 to 89.3, PAWS 68.0 to 94.0, Aegis2 61.6 to 83.2, with one regression (SummEval consistency 84.0 to 75.0). An order-invariant mode removes the sensitivity to option order that single-pass models share with Jev. The hosted API and the weights on Hugging Face are v0.3; the tables below are updated to it.</p></div></div>
<p>On Bespoke Labs' public 13-subset System One benchmark, same subsets, splits, instructions and sampler as their published comparison, the 0.8B model scores <strong>74.3</strong> macro average (v0.3). Bespoke-Nimble-9B scores 74.8 and Jev 1.13.0 scores 76.0. Bold marks where the 0.8B model is ahead of the 9B.</p>
<table><thead><tr><th>Subset</th><th>Type</th><th>n</th><th>OpenThai-SystemOne 0.8B</th><th>Nimble-9B</th><th>Jev 1.13.0</th></tr></thead><tbody><tr><td>aegis2</td><td>noul</td><td>250</td><td><strong>83.2</strong></td><td>81.2</td><td>80.4</td></tr><tr><td>boolq</td><td>noul</td><td>300</td><td>79.7</td><td>86.0</td><td>89.7</td></tr><tr><td>civil_comments</td><td>noul</td><td>300</td><td><strong>79.0</strong></td><td>70.3</td><td>81.0</td></tr><tr><td>helpsteer2</td><td>score</td><td>250</td><td><strong>41.6</strong></td><td>39.0</td><td>34.1</td></tr><tr><td>massive-de-DE</td><td>choice</td><td>350</td><td><strong>88.3</strong></td><td>83.4</td><td>86.9</td></tr><tr><td>massive-en-US</td><td>choice</td><td>350</td><td><strong>88.3</strong></td><td>86.9</td><td>87.4</td></tr><tr><td>multinli</td><td>choice</td><td>299</td><td><strong>89.0</strong></td><td>85.3</td><td>82.9</td></tr><tr><td>paws</td><td>noul</td><td>250</td><td><strong>94.0</strong></td><td>82.8</td><td>89.2</td></tr><tr><td>pubmedqa</td><td>choice</td><td>250</td><td>64.0</td><td>75.6</td><td>77.2</td></tr><tr><td>squad2</td><td>noul</td><td>299</td><td><strong>89.3</strong></td><td>80.6</td><td>82.9</td></tr><tr><td>summeval-consistency</td><td>score</td><td>144</td><td>75.0</td><td>75.7</td><td>81.2</td></tr><tr><td>summeval-relevance</td><td>score</td><td>240</td><td>21.7</td><td>49.2</td><td>35.0</td></tr><tr><td>vitaminc-dev</td><td>choice</td><td>599</td><td>72.5</td><td>76.6</td><td>80.1</td></tr><tr><td><strong>Macro average</strong></td><td></td><td></td><td><strong>74.3</strong></td><td>74.8</td><td>76.0</td></tr></tbody></table>
<p>We would rather you read the per-subset row than the average. v0.3 is ahead of the 9B on 8 of 13 subsets (paraphrase, safety, NLI, both MASSIVE intent sets, toxicity, helpfulness scoring, extractive yes/no) and behind on PubMedQA, VitaminC and the two summary-rating tasks, where relevance scoring stays the weakest. Since v0.3 the train splits of SQuAD2, BoolQ, PubMedQA, PAWS, Aegis2 and MASSIVE-de are in the training mix; the benchmark uses only their validation and test splits. On Thai held-out sets that were never in training it scores 90.0 on 60-way MASSIVE-th intents, 98.1 on Prachathai topics, 77.1 on XNLI-th and 77.9 on SIB-200 Thai, with calibration error at or below 0.05 on most of them, and its two weakest sets are Wisesight sentiment (51.6) and 77-way banking77 intents (45.4). Every table, with ECE and Brier score per dataset and the before/after calibration comparison, is in the <a href="https://huggingface.co/iapp/OpenThai-SystemOne" target="_blank" rel="noopener noreferrer">model card</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="get-started">Get started<a href="https://iapp.co.th/en/blog/openthai-systemone-launch#get-started" class="hash-link" aria-label="Direct link to Get started" title="Direct link to Get started" translate="no">​</a></h2>
<p><strong>Hosted, free preview.</strong> The endpoint <code>POST https://api.iapp.co.th/v3/store/openthai/systemone</code> is free with any iApp API key (registration is free), capped at 1,000 decisions per day per key. Per-decision pricing will be published in October 2026. The <a href="https://iapp.co.th/en/docs/llm/openthai-systemone">API page</a> has a playground with four presets, code in cURL, Python and JavaScript, and the full request and response reference. The request shape mirrors <code>POST /v1/systemone</code>, so code written for that API works unchanged.</p>
<p><strong>Local.</strong></p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">pip install "git+https://github.com/iapp-technology/openthai-systemone"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">OPENTHAI_SYSTEMONE_MODEL=iapp/OpenThai-SystemOne uvicorn openthai_systemone.server:app --port 8000</span><br></span></code></pre></div></div>
<p>Everything is open under Apache 2.0: weights, training scripts, configs and the synthetic data. We would like help with GGUF and MLX conversions (the head is a plain linear layer) and with Thai and English evaluation sets we missed. Issues and pull requests on GitHub are welcome.</p>
<p>OpenThai-SystemOne joins <a href="https://iapp.co.th/en/openmodels/openthai2p0">OpenThai 2.0</a> and <a href="https://iapp.co.th/en/openmodels/openthai2p0-legal">OpenThai 2.0 Legal</a> in the OpenThai 2.0 family.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="thank-you-siam-ai">Thank you, Siam AI<a href="https://iapp.co.th/en/blog/openthai-systemone-launch#thank-you-siam-ai" class="hash-link" aria-label="Direct link to Thank you, Siam AI" title="Direct link to Thank you, Siam AI" translate="no">​</a></h2>
<a href="https://siam.ai/" target="_blank" rel="noopener"><img src="https://iapp.co.th/img/openthai2/siamai-logo.png" alt="Siam AI Corporation" width="180"></a>
<p>Training, evaluation and the free hosted API run on NVIDIA H100 GPUs generously provided by <a href="https://siam.ai/" target="_blank" rel="noopener noreferrer">Siam AI Corporation</a>. Thank you for backing open Thai AI.</p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>OpenThai</category>
            <category>LLM</category>
            <category>Open Source</category>
            <category>Announcement</category>
            <category>Thai Language AI</category>
        </item>
        <item>
            <title><![CDATA[iApp Image Generation 1.1.0 — เพิ่มความเป็นไทยและความสมจริงเข้าไปอีก: more Thai, more realistic]]></title>
            <link>https://iapp.co.th/en/blog/iapp-image-generation-1-1-0</link>
            <guid>https://iapp.co.th/en/blog/iapp-image-generation-1-1-0</guid>
            <pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Release 1.1.0 of iApp Image Generation: Thai text that blends into real surfaces, more than 4,000 Thai public figures rendered by name, reference image upload, and a regenerated example gallery.]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="iApp Image Generation 1.1.0 — a keynote scene generated from the prompt &amp;quot;ดร.กอบกฤตย์ วิริยะยุทธกร กำลังบรรยายบนเวที…&amp;quot; with the headline &amp;quot;ปัญญาประดิษฐ์ไทย ก้าวไกลระดับโลก&amp;quot; on the LED wall" src="https://iapp.co.th/en/assets/images/keynote-2441da3a4a5c003248c434d5a10d38e1.webp" width="1200" height="720" class="img_ev3q"></p>
<p>One day after launch, iApp Image Generation moves to version 1.1.0. The theme of this release is <strong>เพิ่มความเป็นไทยและความสมจริงเข้าไปอีก</strong>: more Thai, more realistic. Thai text now looks like part of the photograph rather than a label placed on top of it, the model knows Thai public figures by name, and you can hand it a reference image of your own.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-new-in-110">What is new in 1.1.0<a href="https://iapp.co.th/en/blog/iapp-image-generation-1-1-0#what-is-new-in-110" class="hash-link" aria-label="Direct link to What is new in 1.1.0" title="Direct link to What is new in 1.1.0" translate="no">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-text-that-belongs-to-the-scene">1. Text that belongs to the scene<a href="https://iapp.co.th/en/blog/iapp-image-generation-1-1-0#1-text-that-belongs-to-the-scene" class="hash-link" aria-label="Direct link to 1. Text that belongs to the scene" title="Direct link to 1. Text that belongs to the scene" translate="no">​</a></h3>
<p>In the launch version, Thai text was always rendered exactly, but it often sat on a white panel. In 1.1.0 the lettering is painted, printed, carved, embossed or lit on a surface that really exists in the scene, a shop sign, a bottle label, a banner, a night-market arch, following that surface's perspective, material and lighting. The API response reports in <code>text_check</code> whether the text was rendered exactly.</p>
<p><img decoding="async" loading="lazy" alt="Night market arch with the sign &amp;quot;ตลาดนัดกลางคืน&amp;quot;" src="https://iapp.co.th/en/assets/images/night-market-f9a76f36da9a16e8e40e653341b57a40.webp" width="900" height="540" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" alt="Fish-sauce bottle with the label &amp;quot;น้ำปลาแท้&amp;quot;" src="https://iapp.co.th/en/assets/images/fish-sauce-9afebedd63e3ec0157fdaafda29acdd1.webp" width="900" height="900" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-more-than-4000-thai-public-figures-by-name">2. More than 4,000 Thai public figures, by name<a href="https://iapp.co.th/en/blog/iapp-image-generation-1-1-0#2-more-than-4000-thai-public-figures-by-name" class="hash-link" aria-label="Direct link to 2. More than 4,000 Thai public figures, by name" title="Direct link to 2. More than 4,000 Thai public figures, by name" translate="no">​</a></h3>
<p>The model was trained with more than 4,000 Thai public figures from the <a href="https://huggingface.co/datasets/iapp/thai_famous_people_images_dataset" target="_blank" rel="noopener noreferrer">iApp Thai Famous People dataset</a>: politicians, artists, athletes, business leaders and academics. Name one of them in the prompt and the picture shows that person.</p>
<p>Two rules make this work reliably. Write the <strong>full name or the official position exactly as spelled</strong>, for example <code>กอบกฤตย์ วิริยะยุทธกร</code> or <code>นายกรัฐมนตรี</code>. A partial or misspelled name is treated as an ordinary description and produces a generic person. The cover image of this post was generated from a Thai prompt that names Dr. Kobkrit Viriyayudhakorn, CEO of iApp Technology, giving a keynote, with the headline on the LED wall specified in the <code>text</code> field.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-bring-your-own-reference-image">3. Bring your own reference image<a href="https://iapp.co.th/en/blog/iapp-image-generation-1-1-0#3-bring-your-own-reference-image" class="hash-link" aria-label="Direct link to 3. Bring your own reference image" title="Direct link to 3. Bring your own reference image" translate="no">​</a></h3>
<p>The new <code>reference_image</code> field accepts a PNG, JPEG or WebP image (base64, up to 6 MB). The generated picture keeps the subject of that image, a person, a product, a place or an artwork, together with its appearance and style, and follows your prompt for everything else. The <a href="https://iapp.co.th/en/docs/image-generation/iapp-image-generation">live demo</a> has an upload button for it; images are downscaled in the browser before they are sent.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-example-gallery-regenerated">4. Example gallery regenerated<a href="https://iapp.co.th/en/blog/iapp-image-generation-1-1-0#4-example-gallery-regenerated" class="hash-link" aria-label="Direct link to 4. Example gallery regenerated" title="Direct link to 4. Example gallery regenerated" translate="no">​</a></h3>
<p>The 29 examples on the documentation page were generated again with 1.1.0 and re-verified. Each card shows the exact request, so you can load it into the demo with one click and change only the text.</p>
<p><img decoding="async" loading="lazy" alt="New Year card with &amp;quot;สวัสดีปีใหม่&amp;quot; over the Bangkok skyline" src="https://iapp.co.th/en/assets/images/new-year-0e089fd08f2d4544c0c0beb42a03ee6b.webp" width="900" height="900" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" alt="Die-cut sticker of a cat on white paper with &amp;quot;สู้ ๆ นะ&amp;quot;" src="https://iapp.co.th/en/assets/images/sticker-283940fb0aa82db304dfe1b8295565ef.webp" width="900" height="900" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-try-it">How to try it<a href="https://iapp.co.th/en/blog/iapp-image-generation-1-1-0#how-to-try-it" class="hash-link" aria-label="Direct link to How to try it" title="Direct link to How to try it" translate="no">​</a></h2>
<p>iApp Image Generation is available now on the <a href="https://iapp.co.th/en/docs/image-generation/iapp-image-generation">iApp AI Marketplace</a> at the preview price of 1.5 IC per image, and through the same API endpoint as before. Existing integrations need no change: the realistic text placement and the public-figure recognition are on by default, and the reference image is an optional field.</p>
<p>Full details are in the <a href="https://iapp.co.th/en/docs/image-generation/iapp-image-generation#changelog">changelog</a>.</p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>API</category>
            <category>AI Tools</category>
            <category>Announcement</category>
        </item>
        <item>
            <title><![CDATA[iApp Technology launches iApp Image Generation — the first Thai-made AI image generation model, with Thai text rendered exactly as written]]></title>
            <link>https://iapp.co.th/en/blog/iapp-image-generation-launch</link>
            <guid>https://iapp.co.th/en/blog/iapp-image-generation-launch</guid>
            <pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Official press release: iApp Image Generation, built by the iApp Technology team, generates posters, signs, cards, labels and slides with Thai text spelled exactly as typed. Available today through the iApp AI API at a preview price of 1.5 IC per image.]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="iApp Image Generation — AI สร้างภาพ ฝีมือคนไทย ภาษาไทยแม่นยำ 100%" src="https://iapp.co.th/en/assets/images/poster-d15efefb96e76e9f5e0f33c1ff2a5ce0.png" width="862" height="1070" class="img_ev3q"></p>
<p><em>The following is the official press release issued on 2 September 2026.</em></p>
<p><strong>Bangkok, 2 September 2026</strong> — iApp Technology today launched <strong>iApp Image Generation</strong>, the first AI image generation model built by a Thai team for the Thai language. Developed by the iApp Technology team, the service produces posters, shop signs, greeting cards, product labels, presentation slides and social-media graphics in which the Thai text appears exactly as the user typed it — every consonant, vowel and tone mark in place. It is available today to every iApp AI API account at a preview price of 1.5 IC per image, half the list price of 3 IC.</p>
<p>Anyone who has asked a general-purpose image model to draw a Thai shop sign knows the result: strokes that look Thai from a distance and read as nonsense up close. Thai script stacks vowels and tone marks above and below the consonant line, and models trained mainly on English and Chinese imagery reproduce the shape but not the spelling. For a printer, a marketing team or a small shop, an image with a misspelled headline is unusable.</p>
<p>iApp Image Generation treats the text as the most important element of the image. The user writes a description of the scene in Thai or English, lists the text that must appear, and chooses one of 19 Thai typefaces and one of five image sizes. The service returns a finished image in about 10 seconds.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="measured-not-promised">Measured, not promised<a href="https://iapp.co.th/en/blog/iapp-image-generation-launch#measured-not-promised" class="hash-link" aria-label="Direct link to Measured, not promised" title="Direct link to Measured, not promised" translate="no">​</a></h2>
<ul>
<li>In iApp's internal acceptance set of 11 requests covering signs, posters, slides, labels and clothing, all 11 images carried the requested Thai text letter for letter, verified with iApp's own Thai OCR.</li>
<li>In the 34-image launch gallery generated on 2 September 2026, 33 images (97%) rendered the text exactly as typed. Twenty-five of those images are published unedited on the product page.</li>
<li>In the same period, five well-known foreign open image models were given between 3 and 6 Thai sign and poster requests each. None produced a single image with the Thai text fully correct.</li>
</ul>
<p><img decoding="async" loading="lazy" alt="Eight images from the launch gallery, generated on 2 September 2026 without retouching" src="https://iapp.co.th/en/assets/images/hero-b8bb1f9d6bbe18722430020b6f57fbca.jpg" width="1600" height="900" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="built-for-real-work">Built for real work<a href="https://iapp.co.th/en/blog/iapp-image-generation-launch#built-for-real-work" class="hash-link" aria-label="Direct link to Built for real work" title="Direct link to Built for real work" translate="no">​</a></h2>
<p>The service is aimed at the everyday graphics that Thai businesses produce in volume: promotional posters, storefront and event signage, greeting and invitation cards, packaging and product labels, slide backgrounds, T-shirt and merchandise designs, and social-media posts. Text can be up to four lines and in Thai or English, and the same request works from a script, a spreadsheet macro or a marketing tool through the standard iApp AI API.</p>
<p>The launch capacity is about 1,000 images per hour. Requests beyond that are served in the order received rather than refused.</p>
<blockquote>
<p>"Thai businesses have been told to accept image AI that cannot spell their own language. We built iApp Image Generation so that a shop owner in Khon Kaen can type ก๋วยเตี๋ยวเรือ and get a sign that says ก๋วยเตี๋ยวเรือ. This is the first image generation model made by a Thai team for Thai, and we are pricing the preview so that everyone can try it today."</p>
<p>— Dr. Kobkrit Viriyayudhakorn, Chief Executive Officer, iApp Technology</p>
</blockquote>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="availability-and-pricing">Availability and pricing<a href="https://iapp.co.th/en/blog/iapp-image-generation-launch#availability-and-pricing" class="hash-link" aria-label="Direct link to Availability and pricing" title="Direct link to Availability and pricing" translate="no">​</a></h2>
<p>iApp Image Generation is available now to all iApp AI API accounts, including free accounts with starter credits, at the endpoint <code>POST /v3/store/image-generation/iapp-image-generation/generate</code>. The preview price is 1.5 IC per generated image (list price 3 IC, 50% off during the preview); listing the available typefaces is free. Images are returned to the caller and are not retained beyond 24 hours.</p>
<p>Try it in the browser, browse the 25 launch examples and read the API reference at <a href="https://iapp.co.th/en/docs/image-generation/iapp-image-generation">iapp.co.th/docs/image-generation/iapp-image-generation</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="about-iapp-technology">About iApp Technology<a href="https://iapp.co.th/en/blog/iapp-image-generation-launch#about-iapp-technology" class="hash-link" aria-label="Direct link to About iApp Technology" title="Direct link to About iApp Technology" translate="no">​</a></h2>
<p>iApp Technology is a Thai artificial-intelligence company building Thai-language AI products across speech, document intelligence, large language models and, from today, image generation.</p>
<p>Press and partnership inquiries: <a href="mailto:sale@iapp.co.th" target="_blank" rel="noopener noreferrer">sale@iapp.co.th</a> · 02-124-4041 · <a href="https://discord.gg/kYcpmdEcS2" target="_blank" rel="noopener noreferrer">Discord</a></p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>API</category>
            <category>AI Tools</category>
            <category>Announcement</category>
        </item>
        <item>
            <title><![CDATA[AI Thai License Plate Recognition (LPR) Version 3.0 Released]]></title>
            <link>https://iapp.co.th/en/blog/iapp-lpr-v3</link>
            <guid>https://iapp.co.th/en/blog/iapp-lpr-v3</guid>
            <pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Version 3.0 of the License Plate Recognition (LPR) API brings a new vehicle make/model engine with 99.18% accuracy, support for the newest cars including Chinese EV brands, and fuel-type detection — with zero API changes required.]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="iapp-lpr-v3" src="https://iapp.co.th/en/assets/images/lpr-e5852f24fbf3772f58e78f0bb8af5554.png" width="1540" height="686" class="img_ev3q"></p>
<p>Dear Users,</p>
<p>We are pleased to announce the release of version 3.0 of our License Plate Recognition (LPR) API. This release replaces the vehicle make/model recognition engine with a new deep-learning classifier built specifically for the Thai car market — the largest accuracy improvement in the product's history.</p>
<p><strong>What's new in version 3.0:</strong></p>
<ul>
<li><strong>Vehicle brand &amp; model accuracy improved dramatically</strong> — brand accuracy 99.4% (up from 38.5%) and make+model 99.18%, measured on 853 real photos of today's Thai traffic. The previous engine was built for the market of its era — much of today's traffic consists of 2020–2026 models and EV brands that simply didn't exist in its catalog, which is exactly what version 3.0 fixes</li>
<li><strong>Supports the newest cars</strong> — the recognition catalog now covers 73 models across 17 brands in the current Thai market, including 2020–2026 models and Chinese EV brands such as BYD, MG, GWM and Neta that previous versions could not identify</li>
<li><strong>New: fuel type &amp; EV detection</strong> — every identified vehicle now reports its fuel type (EV / Hybrid / Petrol / Diesel), enabling EV analytics for parking and smart-city use cases</li>
<li><strong>New: confidence scores</strong> — make/model confidence and an independent logo-brand verification are included in every response</li>
<li><strong>New: neighbor-country plates</strong> — Malaysia (production), Myanmar (beta) and Laos (detection-only)</li>
<li><strong>Reliable on gate cameras</strong> — brand recognition stays correct and consistent even on tight close-up framing from parking and village entrance cameras</li>
</ul>
<p><strong>No changes required on your side.</strong> Version 3.0 is 100% backward compatible: the endpoints, request format, and every existing response field keep exactly the same names and formats. All new information arrives in additive fields, so your current integration continues to work unchanged.</p>
<p><strong>Staged rollout — nothing changes for existing integrations until 11 September 2026.</strong> The main endpoints continue to serve the version 2.0 engine for now. Version 3.0 is available today on its own preview endpoints (<code>/v3/store/smart-city/license-plate-ocr-v3</code> and <code>/v3/store/smart-city/license-plate-ocr-v3/base64</code>) at the same 0.75 IC per request, so you can evaluate it against your own traffic first. On 11 September 2026 the main endpoints switch to version 3.0 automatically, with no action required on your side.</p>
<p><em>Update, 3 October 2026: the main endpoints now serve version 3.0. The <code>-v3</code> paths remain available as aliases at the same price.</em></p>
<p>To try the new engine now, see the <a href="https://iapp.co.th/docs/smart-city/license-plate" target="_blank" rel="noopener noreferrer">Thai Vehicle License Plate OCR documentation</a> — the live demo lets you compare v2.0 and v3.0 on the same image.</p>
<p>Thank you for choosing iApp Technology Co., Ltd.</p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>License Plate Recognition</category>
        </item>
        <item>
            <title><![CDATA[OpenThai is a registered trademark of iApp Technology]]></title>
            <link>https://iapp.co.th/en/blog/openthai-registered-trademark</link>
            <guid>https://iapp.co.th/en/blog/openthai-registered-trademark</guid>
            <pubDate>Thu, 27 Aug 2026 18:00:00 GMT</pubDate>
            <description><![CDATA[A note for the ecosystem: the OpenThai name and logo are registered with Thailand's Department of Intellectual Property (registration no. 251122938). The models remain free and open under Apache 2.0 — this post explains what the trademark covers and how to use the name.]]></description>
            <content:encoded><![CDATA[<p>With OpenThai 2.0 reaching thousands of developers this week, we would like to make one thing clear for everyone building on it: <strong>OpenThai — the name and the logo — is a registered trademark of iApp Technology Co., Ltd.</strong>, registered with Thailand's Department of Intellectual Property under registration no. 251122938.</p>
<p>This is a housekeeping note, not a policy change. The models are open and stay open. This post simply puts the ownership on the record and explains how the name may be used.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-registration">The registration<a href="https://iapp.co.th/en/blog/openthai-registered-trademark#the-registration" class="hash-link" aria-label="Direct link to The registration" title="Direct link to The registration" translate="no">​</a></h2>
<img src="https://iapp.co.th/img/OpenThai_Trademark_Certificate.webp" alt="OpenThai trademark registration certificate issued by the Department of Intellectual Property, Thailand" width="480">
<table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>Trademark</td><td>OpenThai (name and logo)</td></tr><tr><td>Registration No.</td><td>251122938 (Application No. 240121032)</td></tr><tr><td>Class</td><td>9 — computer programs, interactive computer programs, data processing programs</td></tr><tr><td>Registered</td><td>9 May 2024 · Certificate issued 22 July 2025</td></tr><tr><td>Term</td><td>10 years from registration, renewable (current term to 8 May 2034)</td></tr><tr><td>Issued by</td><td>Trademark Office, Department of Intellectual Property, Thailand</td></tr></tbody></table>
<p>The registration covers the OpenThai brand and its continued versions — OpenThai 2.0, OpenThai 2.0 Legal, and releases that follow. The certificate is published on our <a href="https://iapp.co.th/en/awards">Awards &amp; Recognition page</a>, and the document itself is here: <a href="https://iapp.co.th/en/assets/files/OpenThai-Trademark-Certificate-5320eb04ae4d2f1411316aaf04471fe4.pdf" target="_blank">OpenThai trademark certificate (PDF)</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-stays-exactly-as-it-is">What stays exactly as it is<a href="https://iapp.co.th/en/blog/openthai-registered-trademark#what-stays-exactly-as-it-is" class="hash-link" aria-label="Direct link to What stays exactly as it is" title="Direct link to What stays exactly as it is" translate="no">​</a></h2>
<p>The OpenThai models are released under the <strong>Apache 2.0 license</strong>, and none of that changes:</p>
<ul>
<li>Download the weights, run them anywhere, self-host them for commercial work.</li>
<li>Fine-tune, quantize, modify, and redistribute under the terms of the license.</li>
<li>Say, factually, that your product is "built on OpenThai 2.0" or "fine-tuned from OpenThai 2.0" — accurate references to the model you build on are welcome and always have been.</li>
</ul>
<p>We built OpenThai to be used. Seeing it inside other people's products is the point.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="where-the-trademark-comes-in">Where the trademark comes in<a href="https://iapp.co.th/en/blog/openthai-registered-trademark#where-the-trademark-comes-in" class="hash-link" aria-label="Direct link to Where the trademark comes in" title="Direct link to Where the trademark comes in" translate="no">​</a></h2>
<p>The one thing the registration reserves is the <strong>brand itself</strong>: using the OpenThai name or logo as the name or identity of your own product, service, hosted API, or company requires our written permission. The trademark exists so that users can tell which releases and services are official — that clarity protects everyone who builds on the models as much as it protects us.</p>
<p>If you are planning something under the OpenThai name, or are unsure whether your use needs permission, write to us at <a href="mailto:sale@iapp.co.th" target="_blank" rel="noopener noreferrer">sale@iapp.co.th</a>. We respond quickly, and we are glad to see the ecosystem grow.</p>
<p>Built by iApp Technology, published openly with AIEAT — by Thais, for Thailand.</p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>OpenThai</category>
            <category>Open Source</category>
            <category>Announcement</category>
        </item>
        <item>
            <title><![CDATA[OpenThai 2.0 — one open model that reads Thai documents, knows Thailand, and does agentic work]]></title>
            <link>https://iapp.co.th/en/blog/openthai2p0-launch</link>
            <guid>https://iapp.co.th/en/blog/openthai2p0-launch</guid>
            <pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[iApp Technology and AIEAT release OpenThai 2.0, an open-source Thai vision-language model (27B, Apache 2.0). It cuts Thai handwriting reading errors by 60% versus its base model, scores 0.842 on Thai national exams, leads on agentic tool use (BFCL 0.820), and ships in five formats from MacBook to Blackwell. Weights free on Hugging Face.]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="OpenThai 2.0 — open-source Thai knowledge, document and agentic AI, released 27 August 2026" src="https://iapp.co.th/en/assets/images/hero-en-ce1ec8b8b7578a28008036e4805da65f.webp" width="1600" height="1600" class="img_ev3q"></p>
<p>Today, together with the Artificial Intelligence Entrepreneur Association of Thailand (AIEAT), we are releasing <strong>OpenThai 2.0</strong> — an open-source Thai vision-language model, 27B parameters, Apache 2.0, weights free on Hugging Face.</p>
<p>One month ago we released <a href="https://iapp.co.th/en/blog/openthai2p0-legal-launch">OpenThai 2.0 Legal</a>, a specialist that knows Thai law by heart. OpenThai 2.0 is its generalist sibling, and the bigger release of the two: a single model that <strong>reads Thai documents and handwriting at specialist level, answers Thai knowledge questions in natural Thai, and calls tools reliably enough to run agents</strong> — while keeping its base model's general intelligence.</p>
<p><strong>Model page: <a href="https://iapp.co.th/en/openmodels/openthai2p0">iapp.co.th/openmodels/openthai2p0</a></strong> · <strong>Weights: <a href="https://huggingface.co/iapp/openthai2.0-qwen3.8-27b" target="_blank" rel="noopener noreferrer">huggingface.co/iapp/openthai2.0-qwen3.8-27b</a></strong> · <strong>Try it free, no install: <a href="https://chinda3.iapp.co.th/" target="_blank" rel="noopener noreferrer">chinda3.iapp.co.th</a></strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-one-model-matters">Why one model matters<a href="https://iapp.co.th/en/blog/openthai2p0-launch#why-one-model-matters" class="hash-link" aria-label="Direct link to Why one model matters" title="Direct link to Why one model matters" translate="no">​</a></h2>
<p>Every production Thai document system today is a pipeline: an OCR engine that reads but cannot think, feeding a language model that thinks but cannot read. Each hand-off loses layout, context and confidence — and neither half can check the other.</p>
<p>OpenThai 2.0 is both halves in one set of weights. Show it a Royal Gazette page and it transcribes it. Ask it a question about that page and it answers, in explanatory Thai. Give it tools and it files the result. It is the only Thai open model we measured that reads documents at specialist level <em>and</em> answers questions about them in the same model.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-numbers">The numbers<a href="https://iapp.co.th/en/blog/openthai2p0-launch#the-numbers" class="hash-link" aria-label="Direct link to The numbers" title="Direct link to The numbers" translate="no">​</a></h2>
<p>All results measured by us, every model on the same suite under identical serving conditions, each with its own recommended prompts — repeatable with the public checkpoints. Full tables and per-category results are on the <a href="https://iapp.co.th/en/openmodels/openthai2p0">model page</a> and in the Hugging Face repository.</p>
<p><strong>Reading Thai (character error rate — lower is better):</strong></p>
<table><thead><tr><th>Track</th><th>OpenThai 2.0</th><th>Base Qwen3.8-27B</th></tr></thead><tbody><tr><td>Thai handwriting (n=916)</td><td><strong>0.261</strong></td><td>0.649</td></tr><tr><td>Books and Royal Gazette (n=608)</td><td><strong>0.126</strong></td><td>0.370</td></tr><tr><td>Government documents (n=906)</td><td><strong>0.327</strong></td><td>0.530</td></tr><tr><td>Printed documents (n=104)</td><td><strong>0.077</strong></td><td>0.103</td></tr></tbody></table>
<p>A 60% error reduction on handwriting and 66% on books and gazette pages. On a held-out handwriting sample the base model reads "เชียงราย" as "3.1.4 การจ่าย" — total error. OpenThai 2.0 reads it exactly.</p>
<p><strong>Thai knowledge and instruction-following (higher is better):</strong></p>
<table><thead><tr><th>Track</th><th>OpenThai 2.0</th><th>Base</th><th>Typhoon 2.5</th><th>Pathumma 3.0</th></tr></thead><tbody><tr><td>OpenThaiEval — Thai national exams</td><td><strong>0.842</strong></td><td>0.820</td><td>0.742</td><td>0.660</td></tr><tr><td>IFEval-TH — Thai instruction-following</td><td><strong>0.795</strong></td><td>0.772</td><td>0.749</td><td>0.498</td></tr><tr><td>HumanEval — coding</td><td><strong>0.957</strong></td><td>0.939</td><td><strong>0.957</strong></td><td>0.805</td></tr></tbody></table>
<p><strong>Agentic tool use, official BFCL harness (3,841 cases):</strong></p>
<table><thead><tr><th>Track</th><th>OpenThai 2.0</th><th>Base</th><th>Typhoon 2.5</th></tr></thead><tbody><tr><td>BFCL overall</td><td><strong>0.820</strong></td><td>0.811</td><td>0.792</td></tr><tr><td>Multi-turn agentic episodes</td><td><strong>0.775</strong></td><td>0.750</td><td>0.550</td></tr></tbody></table>
<p>Thai fine-tuning usually costs capability elsewhere. Here it did not: the model leads its base on tool use and coding while gaining its Thai skills, and gives up only 0.008 on world knowledge (MMLU-Redux 0.916 versus 0.924).</p>
<p>We publish the losses too: a dedicated transcription specialist (Typhoon-OCR 1.5) still wins on clean printed lines and isolated handwriting, scene text remains the weakest reading track, and structured table extraction is at parity with the base model — the full comparison, with every number, is on the model page.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="five-formats-one-licence">Five formats, one licence<a href="https://iapp.co.th/en/blog/openthai2p0-launch#five-formats-one-licence" class="hash-link" aria-label="Direct link to Five formats, one licence" title="Direct link to Five formats, one licence" translate="no">​</a></h2>
<p>Apache 2.0 — commercial use, modification and redistribution allowed, no gated access.</p>
<table><thead><tr><th>Format</th><th>Runs on</th></tr></thead><tbody><tr><td>bf16</td><td>vLLM / transformers, one 80 GB GPU</td></tr><tr><td>GGUF Q4_K_M / Q8_0</td><td>llama.cpp, CPU or consumer GPU (17 / 29 GB)</td></tr><tr><td>MLX 4-bit</td><td>Apple silicon, 24 GB+ unified memory</td></tr><tr><td>INT8 W8A8</td><td>vLLM, ~40 GB-class GPUs</td></tr><tr><td>NVFP4</td><td>vLLM, NVIDIA Blackwell</td></tr></tbody></table>
<p>The checkpoint also ships a multi-token-prediction draft head: vLLM runs self-speculative decoding at <strong>75.2 tokens/s versus 50.1 without it</strong> (+50%, measured on H100), with token-identical outputs. Nothing leaves your infrastructure — the model runs entirely on your own hardware.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="trained-on-verified-data-only">Trained on verified data only<a href="https://iapp.co.th/en/blog/openthai2p0-launch#trained-on-verified-data-only" class="hash-link" aria-label="Direct link to Trained on verified data only" title="Direct link to Trained on verified data only" translate="no">​</a></h2>
<p>Three stages of LoRA fine-tuning on ~143,000 rows, every one of them machine-verified: transcriptions checked against human-confirmed ground truth, knowledge chains leak-checked against the evaluation sets, and instruction data kept only when the answer passed a programmatic constraint check. The handwriting benchmark is text-disjoint — no transcription string in training appears in the test set — so the numbers above measure reading, not memorisation.</p>
<p>Training and evaluation ran on 8× NVIDIA H100 GPUs provided by <a href="https://siam.ai/" target="_blank" rel="noopener noreferrer">Siam AI Corporation</a> — thank you for backing open Thai AI.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="get-started">Get started<a href="https://iapp.co.th/en/blog/openthai2p0-launch#get-started" class="hash-link" aria-label="Direct link to Get started" title="Direct link to Get started" translate="no">​</a></h2>
<p>The fastest path is the browser: <strong><a href="https://chinda3.iapp.co.th/" target="_blank" rel="noopener noreferrer">chinda3.iapp.co.th</a></strong> — free, no install, upload a Thai document and ask.</p>
<p>Prefer an API call? The hosted endpoint is <strong>free until 30 September 2026</strong> with any free iApp API key — OpenAI-compatible at <code>https://api.iapp.co.th/v3/llm/openthai2p0</code>, text and vision, 30 requests/minute (<a href="https://iapp.co.th/en/openmodels/openthai2p0">details on the model page</a>).</p>
<p><em>Update, 3 October 2026: the free period has ended; the hosted API now costs 0.01 IC per 1,000 input tokens and 0.02 IC per 1,000 output tokens.</em></p>
<p>To self-host:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">vllm serve iapp/openthai2.0-qwen3.8-27b \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --max-model-len 32768 --gpu-memory-utilization 0.85 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --max-num-seqs 128 --reasoning-parser qwen3 --trust-remote-code</span><br></span></code></pre></div></div>
<p>The <a href="https://iapp.co.th/en/openmodels/openthai2p0">model page</a> has the full benchmark tables, deployment notes that will save you an afternoon (<code>--max-num-seqs 128</code> is mandatory; leave <code>max_tokens</code> unset), the quantised repositories, and the honest limitations list. For legal work, pair it with our purpose-built <a href="https://iapp.co.th/en/openmodels/openthai2p0-legal">OpenThai 2.0 Legal</a>.</p>
<p>Built by iApp Technology, launched jointly with AIEAT — by Thais, for Thailand.</p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>OpenThai</category>
            <category>LLM</category>
            <category>OCR</category>
            <category>Agentic AI</category>
            <category>Open Source</category>
            <category>Announcement</category>
            <category>Thai Language AI</category>
        </item>
        <item>
            <title><![CDATA[iApp Technology releases OpenThai 2.0 Legal — an open-weight Thai legal AI built by Thais, for Thailand]]></title>
            <link>https://iapp.co.th/en/blog/openthai2p0-legal-press-release</link>
            <guid>https://iapp.co.th/en/blog/openthai2p0-legal-press-release</guid>
            <pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Official press release: OpenThai 2.0 Legal, an open-weight large language model purpose-built for Thai law, is freely downloadable on Hugging Face. It is the strongest closed-book Thai-law recaller among self-hostable models — roughly four times the recall of Qwen 35B on the Civil and Commercial Code — and runs on a single GPU from 24 GB of VRAM.]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="OpenThai 2.0 Legal — open-weight Thai legal LLM" src="https://iapp.co.th/en/assets/images/launch-hero-en-8805a78303d70ac6a8eb087213ac303c.webp" width="1920" height="1080" class="img_ev3q"></p>
<p><em>The following is the official press release issued on 26 August 2026.</em></p>
<p><strong>Bangkok, 26 August 2026</strong> — iApp Technology today released <strong>OpenThai 2.0 Legal</strong>, an open-weight large language model purpose-built for Thai law, and made its full weights freely available on <a href="https://huggingface.co/iapp/openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b" target="_blank" rel="noopener noreferrer">Hugging Face</a>. Built by Thais for Thailand, the model is designed for lawyers, in-house counsel, compliance teams, legal-tech builders and public agencies that need reliable, source-grounded answers on Thai statutes and case law.</p>
<p>OpenThai 2.0 Legal does something most general chatbots cannot: asked a question with no statute placed in the prompt, it recalls and cites the correct law and section from memory. Independent, code-scored benchmarks make it the strongest closed-book Thai-law recaller among models you can run yourself — roughly four times the recall of the much larger Qwen 35B on the Civil and Commercial Code — and it wins all four axes of the Thai bar-exam essay evaluation against the same competitor, from correct citations to legal reasoning. Every answer can be returned as structured JSON that names the exact law and section, so it plugs directly into retrieval (RAG) and drafting pipelines.</p>
<p>Crucially, the model is self-hostable. It is a 30-billion-parameter Mixture-of-Experts model that activates only ~3B parameters per token and runs on a single GPU from 24 GB of VRAM — so law firms and agencies can keep sensitive matters entirely on their own infrastructure. It is built on open <a href="https://www.nvidia.com/en-sg/ai-data-science/foundation-models/nemotron/" target="_blank" rel="noopener noreferrer">NVIDIA Nemotron</a> models and trained end-to-end with the <a href="https://www.nvidia.com/en-sg/ai-data-science/products/nemo/" target="_blank" rel="noopener noreferrer">NVIDIA NeMo</a> open libraries, in collaboration with the Artificial Intelligence Entrepreneur Association of Thailand (AIEAT) and the members of the ThaiLLM initiative.</p>
<blockquote>
<p>"Thai law deserves an AI that actually knows Thai law — and that Thai organizations can own and run themselves. By releasing OpenThai 2.0 Legal as open weights, we're putting a genuinely capable, self-hostable legal model into the hands of every Thai lawyer, developer and institution. It was built by Thais, for Thailand."</p>
<p>— Dr. Kobkrit Viriyayudhakorn, Chief Executive Officer, iApp Technology</p>
</blockquote>
<p>The model is available now, and can be tried immediately with no setup required on the <a href="https://iapp.co.th/en/openmodels/openthai2p0-legal">model page</a>, which also hosts the full technical documentation, benchmark results, and a free hosted API (free with a registered iApp API key until 30 September 2026). The open weights can be downloaded from <a href="https://huggingface.co/iapp/openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b" target="_blank" rel="noopener noreferrer">Hugging Face</a>.</p>
<p><em>Update, 3 October 2026: the free period has ended; the hosted API now costs 0.01 IC per 1,000 input tokens and 0.02 IC per 1,000 output tokens.</em></p>
<p>As with any AI, its outputs are decision support rather than legal advice, and a qualified professional should verify each citation against the current law. For maximum accuracy, the model should be paired with a retrieval (RAG) system — a <a href="https://iapp.co.th/en/openmodels/openthai2p0-legal-rag-tutorial">step-by-step guide</a> is available.</p>
<p>Learn more: <a href="https://iapp.co.th/en/openmodels/openthai2p0-legal">iapp.co.th/openmodels/openthai2p0-legal</a> · Launch story: <a href="https://iapp.co.th/en/blog/openthai2p0-legal-launch">OpenThai 2.0 Legal — the Thai legal AI that knows the law by heart</a></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="about-iapp-technology">About iApp Technology<a href="https://iapp.co.th/en/blog/openthai2p0-legal-press-release#about-iapp-technology" class="hash-link" aria-label="Direct link to About iApp Technology" title="Direct link to About iApp Technology" translate="no">​</a></h2>
<p>iApp Technology is a Thai artificial-intelligence company building Thai-language AI products across speech, document intelligence and large language models.</p>
<p>Press and partnership inquiries: <a href="mailto:sale@iapp.co.th" target="_blank" rel="noopener noreferrer">sale@iapp.co.th</a> · 02-124-4041 · <a href="https://discord.gg/kYcpmdEcS2" target="_blank" rel="noopener noreferrer">Discord</a></p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>OpenThai</category>
            <category>LLM</category>
            <category>Legal AI</category>
            <category>Open Source</category>
            <category>Announcement</category>
            <category>Thai Language AI</category>
        </item>
        <item>
            <title><![CDATA[OpenThai 2.0 Legal free API extended to 30 September 2026]]></title>
            <link>https://iapp.co.th/en/blog/openthai2p0-legal-free-extended</link>
            <guid>https://iapp.co.th/en/blog/openthai2p0-legal-free-extended</guid>
            <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The free period of the hosted OpenThai 2.0 Legal API is extended, from 25 August through 30 September 2026. In its first month the API answered nearly 2,000 requests from 88 registered developers. RAG-connected, OpenAI-compatible, free with an iApp API key.]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="OpenThai 2.0 Legal — open-weight Thai legal LLM" src="https://iapp.co.th/en/assets/images/launch-hero-en-8805a78303d70ac6a8eb087213ac303c.webp" width="1920" height="1080" class="img_ev3q"></p>
<p>The free period of the hosted <strong>OpenThai 2.0 Legal</strong> API was scheduled to end on 24 August 2026. We are extending it: the API remains <strong>free through 30 September 2026</strong> with any free iApp API key.</p>
<p><em>Update, 3 October 2026: the free period has ended; the hosted API now costs 0.01 IC per 1,000 input tokens and 0.02 IC per 1,000 output tokens.</em></p>
<p>In its first month the endpoint served <strong>nearly 2,000 requests from 88 registered developers</strong> — lawyers, legal-tech builders and researchers asking real Thai legal questions and getting answers grounded in the current statute text. The extra five weeks give everyone still evaluating the model time to finish their integration on the free tier.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-you-get-during-the-free-period">What you get during the free period<a href="https://iapp.co.th/en/blog/openthai2p0-legal-free-extended#what-you-get-during-the-free-period" class="hash-link" aria-label="Direct link to What you get during the free period" title="Direct link to What you get during the free period" translate="no">​</a></h2>
<p>The hosted API is the full production setup, not a trial build:</p>
<ul>
<li><strong>RAG built in</strong> — every request hybrid-searches a 39-law, 6,300-section Thai statute corpus and grounds the answer in the current law text, returning the exact sections used in a <code>retrieved_documents</code> array.</li>
<li><strong>OpenAI-compatible</strong> — the OpenAI SDK works unchanged; point <code>base_url</code> at the endpoint.</li>
<li><strong>Verifiable citations</strong> — answers cite the applicable law and มาตรา in a fixed JSON contract.</li>
<li>Rate limit 30 requests/minute; a free iApp API key is the only requirement (<a href="https://iapp.co.th/register" target="_blank" rel="noopener noreferrer">register</a> → <strong>API Keys</strong>).</li>
</ul>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> openai </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> OpenAI</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">client </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> OpenAI</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">base_url</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"https://api.iapp.co.th/v3/llm/openthai2p0-legal"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                api_key</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"YOUR_IAPP_API_KEY"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">r </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">chat</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">completions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"openthai2.0-legal"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    messages</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ลักทรัพย์ในเวลากลางคืน ผิดมาตราใด"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    max_tokens</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">1024</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">r</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">choices</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">message</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">content</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">r</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">model_extra</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"retrieved_documents"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="after-30-september-2026">After 30 September 2026<a href="https://iapp.co.th/en/blog/openthai2p0-legal-free-extended#after-30-september-2026" class="hash-link" aria-label="Direct link to After 30 September 2026" title="Direct link to After 30 September 2026" translate="no">​</a></h2>
<p>The endpoint stays available at standard Thanoy-rate pricing: <strong>0.01 / 0.02 IC per 1K input / output tokens</strong>. Nothing else changes — same URL, same key, same RAG-connected behavior.</p>
<p>The model itself remains open weight regardless of the promo: download it from <a href="https://huggingface.co/iapp/openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b" target="_blank" rel="noopener noreferrer">Hugging Face</a> and self-host it on a single 24 GB GPU, with our <a href="https://iapp.co.th/en/openmodels/openthai2p0-legal-rag-tutorial">Open WebUI &amp; OpenThaiRAG tutorial</a> covering the retrieval stack.</p>
<ul>
<li>Model page and live demo: <a href="https://iapp.co.th/en/openmodels/openthai2p0-legal">iapp.co.th/openmodels/openthai2p0-legal</a></li>
<li>API documentation: <a href="https://iapp.co.th/en/docs/llm/openthai2p0-legal">OpenThai 2.0 Legal ThaiLLM</a></li>
<li>Launch story: <a href="https://iapp.co.th/en/blog/openthai2p0-legal-launch">OpenThai 2.0 Legal — the Thai legal AI that knows the law by heart</a></li>
</ul>
<p>Questions or production deployments: <a href="mailto:sale@iapp.co.th" target="_blank" rel="noopener noreferrer">sale@iapp.co.th</a> · 02-124-4041 · <a href="https://discord.gg/kYcpmdEcS2" target="_blank" rel="noopener noreferrer">Discord</a></p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>OpenThai</category>
            <category>LLM</category>
            <category>Legal AI</category>
            <category>Announcement</category>
        </item>
        <item>
            <title><![CDATA[Seedance 2.5 is live on iApp — 30-second AI videos from text, image, video or audio references]]></title>
            <link>https://iapp.co.th/en/blog/seedance-2p5-video-generation-launch</link>
            <guid>https://iapp.co.th/en/blog/seedance-2p5-video-generation-launch</guid>
            <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[iApp now resells BytePlus Dreamina Seedance 2.5 alongside Seedance 2.0 — clips up to 30 seconds, sharper motion, and reference image, video and audio input, billed in IC through your existing iApp API key.]]></description>
            <content:encoded><![CDATA[<p><strong>Dreamina Seedance 2.5</strong> is now available through the iApp platform, sitting alongside Seedance 2.0 on the same endpoint and the same API key. BytePlus released it on 7 August 2026; it is live on iApp today.</p>
<p>The headline change is length. Seedance 2.0 renders 5-second clips; <strong>2.5 renders up to 30 seconds</strong> — long enough for a complete product spot or a scene with a beginning, middle, and end, rather than a loop you have to stitch. Motion is noticeably steadier over that longer window, and the model holds a subject's identity across shots far better than 2.0 did.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="one-model-four-kinds-of-input">One model, four kinds of input<a href="https://iapp.co.th/en/blog/seedance-2p5-video-generation-launch#one-model-four-kinds-of-input" class="hash-link" aria-label="Direct link to One model, four kinds of input" title="Direct link to One model, four kinds of input" translate="no">​</a></h2>
<p>Seedance 2.5 is a single model — <code>dreamina-seedance-2-5-260628</code> — and you steer it with what you put in the <code>content</code> array:</p>
<table><thead><tr><th>Content block</th><th>Role</th><th>What it does</th></tr></thead><tbody><tr><td><code>text</code></td><td>—</td><td>The prompt. Timestamped beats work well: "0–2s … 2–4s …"</td></tr><tr><td><code>image_url</code></td><td><code>reference_image</code></td><td>Subject, style or product reference. You can pass more than one.</td></tr><tr><td><code>image_url</code></td><td><code>first_frame</code> / <code>last_frame</code></td><td>Pin the opening or closing frame.</td></tr><tr><td><code>video_url</code></td><td><code>reference_video</code></td><td>Match an existing clip's camera work or motion.</td></tr><tr><td><code>audio_url</code></td><td><code>reference_audio</code></td><td>Use a track as the soundtrack.</td></tr></tbody></table>
<p>That is the same shape as Seedance 2.0 — no new endpoint, no new request format, just a different <code>model</code> value and a much better result.</p>
<p>Same asynchronous submit-then-poll flow, too:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl -X POST https://api.iapp.co.th/v3/store/video/seedance/tasks \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -H "apikey: YOUR_IAPP_API_KEY" \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -H "Content-Type: application/json" \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -d '{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "model": "dreamina-seedance-2-5-260628",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "content": [</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      { "type": "text", "text": "A cinematic dolly shot of a Thai floating market at sunrise, mist over the water, vendors paddling past" }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ],</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "duration": 10,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "resolution": "720p",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "ratio": "16:9",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "generate_audio": true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  }'</span><br></span></code></pre></div></div>
<p>Poll <code>GET /v3/store/video/seedance/tasks/{task_id}</code> until the status is <code>succeeded</code>. Polling is free.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="try-it">Try it<a href="https://iapp.co.th/en/blog/seedance-2p5-video-generation-launch#try-it" class="hash-link" aria-label="Direct link to Try it" title="Direct link to Try it" translate="no">​</a></h2>
<div class="gate_zkxL"><p class="line_rAX3">Sign in to run this demo.</p><p class="free_JazG">50 credits free on sign-up. No card.</p><div class="acts_E9Zf"><a class="act_P_lz primary_tIha" href="https://iapp.co.th/en/register?redirect=%2Fen%2Fblog%2Fseedance-2p5-video-generation-launch">Create a free account</a><a class="act_P_lz" href="https://iapp.co.th/en/login?redirect=%2Fen%2Fblog%2Fseedance-2p5-video-generation-launch">Log in</a></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-it-costs">What it costs<a href="https://iapp.co.th/en/blog/seedance-2p5-video-generation-launch#what-it-costs" class="hash-link" aria-label="Direct link to What it costs" title="Direct link to What it costs" translate="no">​</a></h2>
<p>Seedance bills per <strong>output token</strong>, where tokens scale with resolution and duration. Seedance 2.5 costs about 1.5× Seedance 2.0 per second of video at the same resolution — that is BytePlus's pricing, and our margin over it is unchanged.</p>
<table><thead><tr><th>Model</th><th>Resolution</th><th>Input has video?</th><th>iApp rate</th></tr></thead><tbody><tr><td>Seedance 2.5</td><td>480p / 720p</td><td>no</td><td><strong>0.45 IC</strong> / 1K output tokens</td></tr><tr><td>Seedance 2.5</td><td>480p / 720p</td><td>yes</td><td><strong>0.28 IC</strong> / 1K output tokens</td></tr><tr><td>Seedance 2.0</td><td>480p / 720p</td><td>no</td><td><strong>0.302 IC</strong> / 1K output tokens</td></tr><tr><td>Seedance 2.0</td><td>1080p</td><td>no</td><td><strong>0.333 IC</strong> / 1K output tokens</td></tr><tr><td>Seedance 2.0 Fast</td><td>480p / 720p</td><td>no</td><td><strong>0.242 IC</strong> / 1K output tokens</td></tr></tbody></table>
<p>In practice: a <strong>5-second 720p clip</strong> from a text prompt costs roughly <strong>51 IC</strong> on Seedance 2.5, against about 34 IC on Seedance 2.0. A full <strong>30-second 720p</strong> clip lands around <strong>300 IC</strong>.</p>
<p>You are only charged for <strong>successful</strong> generations. Failed jobs — including content-moderation rejections — cost nothing, and polling the status endpoint is free.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="which-one-should-you-use">Which one should you use?<a href="https://iapp.co.th/en/blog/seedance-2p5-video-generation-launch#which-one-should-you-use" class="hash-link" aria-label="Direct link to Which one should you use?" title="Direct link to Which one should you use?" translate="no">​</a></h2>
<p>Seedance 2.5 is not a straight replacement for 2.0. Choose by what the job needs:</p>
<ul>
<li><strong>Need longer than 5 seconds, or complex motion?</strong> Seedance 2.5. Nothing in the 2.0 family gets close on either, and only 2.5 accepts a reference audio track.</li>
<li><strong>Need 1080p?</strong> Seedance 2.0. Seedance 2.5 currently tops out at <strong>720p</strong>.</li>
<li><strong>Iterating on prompts, or generating variants in bulk?</strong> Seedance 2.0 Fast is still the cheapest way to explore, then switch models for the final render.</li>
</ul>
<p>Both generations stay available on the same endpoint — this is an addition, not a migration. Nothing about your existing Seedance 2.0 calls changes.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="paid-accounts-only">Paid accounts only<a href="https://iapp.co.th/en/blog/seedance-2p5-video-generation-launch#paid-accounts-only" class="hash-link" aria-label="Direct link to Paid accounts only" title="Direct link to Paid accounts only" translate="no">​</a></h2>
<p>Seedance remains a <strong>premium API</strong>: it is available to accounts that have purchased any IC package at least once. The free signup bonus does not unlock it. Video generation is expensive enough per call that we gate it against throwaway signups — a one-time credit purchase enables it permanently, along with the rest of the premium catalogue.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="get-started">Get started<a href="https://iapp.co.th/en/blog/seedance-2p5-video-generation-launch#get-started" class="hash-link" aria-label="Direct link to Get started" title="Direct link to Get started" translate="no">​</a></h2>
<ul>
<li><strong>Docs:</strong> <a href="https://iapp.co.th/en/docs/video-generation/seedance-2p5">Seedance 2.5 &amp; 2.0 Video Generation</a></li>
<li><strong>Pricing:</strong> <a href="https://iapp.co.th/en/pricing">full IC rate table</a></li>
<li><strong>API keys:</strong> <a href="https://iapp.co.th/en/control/api-keys">your dashboard</a></li>
</ul>
<p>Questions, or want a volume rate for a production workload? <a href="https://iapp.co.th/en/contact-us">Talk to us</a>.</p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>Seedance</category>
            <category>Video Generation</category>
            <category>AI</category>
            <category>Announcement</category>
            <category>Thai AI</category>
        </item>
        <item>
            <title><![CDATA[Two-factor authentication is now available on every iApp account]]></title>
            <link>https://iapp.co.th/en/blog/two-factor-authentication-for-every-account</link>
            <guid>https://iapp.co.th/en/blog/two-factor-authentication-for-every-account</guid>
            <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Every iApp account can now turn on two-factor authentication with an authenticator app, plus single-use recovery codes, sign-in history, and sign-out-everywhere.]]></description>
            <content:encoded><![CDATA[<p>Your iApp account holds API keys and a credit balance. If someone gets your password, they get both. From today, every account can add a second lock: <strong>two-factor authentication (2FA)</strong> with any standard authenticator app.</p>
<p>It is <strong>opt-in</strong> — nothing changes until you turn it on — and it takes about a minute to set up.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="turning-it-on">Turning it on<a href="https://iapp.co.th/en/blog/two-factor-authentication-for-every-account#turning-it-on" class="hash-link" aria-label="Direct link to Turning it on" title="Direct link to Turning it on" translate="no">​</a></h2>
<p>Go to <strong><a href="https://iapp.co.th/en/control/security">Account Security</a></strong> (also in the account menu, top right) and choose <strong>Turn on two-factor authentication</strong>. Then:</p>
<ol>
<li><strong>Scan the QR code</strong> with an authenticator app — Google Authenticator, Microsoft Authenticator, Authy, 1Password, or any other TOTP app. Can't scan? Reveal the setup key and type it in.</li>
<li><strong>Enter the 6-digit code</strong> the app shows, to prove it is working.</li>
<li><strong>Save your recovery codes.</strong> You get ten. Each works once.</li>
</ol>
<p>From then on, signing in asks for your password and then a code from your phone. Someone who steals your password still cannot get into your account.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="recovery-codes-matter-more-than-you-think">Recovery codes matter more than you think<a href="https://iapp.co.th/en/blog/two-factor-authentication-for-every-account#recovery-codes-matter-more-than-you-think" class="hash-link" aria-label="Direct link to Recovery codes matter more than you think" title="Direct link to Recovery codes matter more than you think" translate="no">​</a></h2>
<p>The most common way people lock themselves out of a 2FA account is a lost, wiped, or replaced phone. The ten recovery codes we show you at the end of setup are the way back in — each one signs you in once, in place of the app.</p>
<p>They are shown <strong>exactly once</strong>. Download them, or put them in your password manager — anywhere that is not the phone running the authenticator app. If you run low, generate a fresh set from the same page; the old set stops working immediately.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="works-with-google-facebook-and-github-sign-in-too">Works with Google, Facebook and GitHub sign-in too<a href="https://iapp.co.th/en/blog/two-factor-authentication-for-every-account#works-with-google-facebook-and-github-sign-in-too" class="hash-link" aria-label="Direct link to Works with Google, Facebook and GitHub sign-in too" title="Direct link to Works with Google, Facebook and GitHub sign-in too" translate="no">​</a></h2>
<p>If you sign in with a social account rather than a password, 2FA still applies: after the provider hands you back, we ask for your authenticator code before issuing a session. Turning it off for those accounts needs just the code, since there is no password to confirm.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="see-who-has-been-signing-in">See who has been signing in<a href="https://iapp.co.th/en/blog/two-factor-authentication-for-every-account#see-who-has-been-signing-in" class="hash-link" aria-label="Direct link to See who has been signing in" title="Direct link to See who has been signing in" translate="no">​</a></h2>
<p>The security page now also shows <strong>recent sign-in activity</strong> — the last 20 attempts on your account, successful or not, each with the method used, the device, the IP address, and the time. Failed attempts are listed too, so a burst of wrong-password entries from an IP you don't recognise is visible rather than silent.</p>
<p>If something there looks wrong, there is a <strong>Sign out of all devices</strong> button on the same page. It immediately invalidates every session on every device — including the one you are using — so you sign in again afterwards. Combined with a password change, it is the fastest way to shut out someone who has your credentials.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="a-note-for-api-integrations">A note for API integrations<a href="https://iapp.co.th/en/blog/two-factor-authentication-for-every-account#a-note-for-api-integrations" class="hash-link" aria-label="Direct link to A note for API integrations" title="Direct link to A note for API integrations" translate="no">​</a></h2>
<p><strong>2FA protects the portal login, not your API calls.</strong> Your API keys keep working exactly as before — no code changes, no rotation, no second factor on API requests. Automated integrations are unaffected.</p>
<p>That is deliberate: the second factor guards the account where keys are <em>issued</em> and credits are <em>purchased</em>. If you want to reduce API-key risk as well, rotate keys periodically from the <a href="https://iapp.co.th/en/control/api-keys">API keys page</a> and keep separate keys per application, so one leak doesn't mean revoking everything.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="our-recommendation">Our recommendation<a href="https://iapp.co.th/en/blog/two-factor-authentication-for-every-account#our-recommendation" class="hash-link" aria-label="Direct link to Our recommendation" title="Direct link to Our recommendation" translate="no">​</a></h2>
<p>Turn it on — particularly if your account has a credit balance or production API keys. It costs a minute now and removes an entire class of account takeover.</p>
<ul>
<li><strong>Set it up:</strong> <a href="https://iapp.co.th/en/control/security">Account Security</a></li>
<li><strong>Questions:</strong> <a href="https://iapp.co.th/en/contact-us">contact us</a></li>
</ul>]]></content:encoded>
            <category>iApp Technology</category>
            <category>security</category>
            <category>Announcement</category>
            <category>Thai AI</category>
        </item>
        <item>
            <title><![CDATA[iApp Core API — your usage reports and credit balance as JSON, for your own dashboards]]></title>
            <link>https://iapp.co.th/en/blog/iapp-core-api</link>
            <guid>https://iapp.co.th/en/blog/iapp-core-api</guid>
            <pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[New read-only Core API: pull your iApp usage reports (filter, sort, paginate) and remaining credit balance straight into Grafana, Google Sheets, Slack bots or your own admin panel. Same API key, GET-only, no PII, free of charge. Live on api.iapp.co.th.]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="iApp Core API — your usage, your credits, your dashboard" src="https://iapp.co.th/en/assets/images/hero-c3909190c8cedfca36929ee7ebf9f597.webp" width="1200" height="630" class="img_ev3q"></p>
<p>You asked for it constantly: <em>"Can I get my usage data out of the dashboard and into my own systems?"</em> Now you can. The new <strong>Core API</strong> exposes your iApp usage reports and credit balance as clean, read-only JSON — so you can build exactly the dashboard, alert, or cost report your team needs, with the API key you already have.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-you-can-pull">What you can pull<a href="https://iapp.co.th/en/blog/iapp-core-api#what-you-can-pull" class="hash-link" aria-label="Direct link to What you can pull" title="Direct link to What you can pull" translate="no">​</a></h2>
<ul>
<li><strong><code>GET /credits</code></strong> — your remaining credit balance, real-time</li>
<li><strong><code>GET /usage/summary</code></strong> — total requests, credits spent, success rate, latency for any date range</li>
<li><strong><code>GET /usage/timeseries</code></strong> — chart-ready buckets by hour, day, week or month</li>
<li><strong><code>GET /usage/services</code></strong> — per-service breakdown: requests, credits, latency, error rate</li>
<li><strong><code>GET /usage/records</code></strong> — the raw call log with <strong>filters</strong> (date range, service, method, status, minimum cost), <strong>sorting</strong> (time, credits, latency, status) and <strong>pagination</strong> up to 1,000 rows per page</li>
</ul>
<p>One header, that's the whole integration:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl "https://iapp.co.th/api/core/v1/usage/summary?startDate=2026-08-01" \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -H "apikey: YOUR_API_KEY"</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-people-are-building-with-it">What people are building with it<a href="https://iapp.co.th/en/blog/iapp-core-api#what-people-are-building-with-it" class="hash-link" aria-label="Direct link to What people are building with it" title="Direct link to What people are building with it" translate="no">​</a></h2>
<p>** Low-balance alerts** — a five-line cron job that pings Slack before credits run out, instead of finding out from an HTTP 402.</p>
<p>** Team cost dashboards** — pull <code>/usage/timeseries</code> into Grafana or Google Sheets and see exactly which day that batch job doubled your OCR bill.</p>
<p>** Client billing** — agencies running iApp APIs for multiple projects use one key per project, then split costs with <code>/usage/records</code>' per-key prefixes.</p>
<p>** Error monitoring** — <code>/usage/records?statusClass=4xx&amp;sortBy=timestamp</code> is your API-level error log, ready for your observability stack.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="safe-by-design">Safe by design<a href="https://iapp.co.th/en/blog/iapp-core-api#safe-by-design" class="hash-link" aria-label="Direct link to Safe by design" title="Direct link to Safe by design" translate="no">​</a></h2>
<p>We built this for the paranoid (that's a compliment):</p>
<ul>
<li><strong>Read-only.</strong> Every endpoint is <code>GET</code>. A leaked key can never create keys, spend credits, or change your account through this API.</li>
<li><strong>No PII.</strong> Responses carry technical telemetry only — timestamps, endpoint paths, status codes, credits, latency. Never names, emails, user IDs, client IPs, or the contents of your requests. Query strings are stripped from paths and API keys appear only as 8-character prefixes, so even a leaked <em>report</em> leaks nothing sensitive.</li>
<li><strong>Your data only.</strong> There is no parameter that reaches another account.</li>
<li><strong>Rate-limited</strong> at 120 requests/minute per key — more than any sane dashboard needs.</li>
</ul>
<p>And it's <strong>free</strong>: Core API calls don't consume credits.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="postman-collection-included">Postman collection included<a href="https://iapp.co.th/en/blog/iapp-core-api#postman-collection-included" class="hash-link" aria-label="Direct link to Postman collection included" title="Direct link to Postman collection included" translate="no">​</a></h2>
<p>Don't want to hand-write requests? Import our ready-made <strong>Postman collection</strong> — all six endpoints, ready-to-toggle filter examples, and 51 built-in test assertions (including automated checks that no PII and no full API key ever appear in a response):</p>
<ul>
<li><a href="https://iapp.co.th/postman/iApp-Core-API.postman_collection.json" target="_blank" rel="noopener noreferrer">Collection</a> · <a href="https://iapp.co.th/postman/iApp-Core-API-Production.postman_environment.json" target="_blank" rel="noopener noreferrer">Production environment</a></li>
</ul>
<p>Import the collection plus an environment, paste your API key into the <code>apikey</code> variable, and run the whole suite with the Collection Runner.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="monitored-and-transparent-like-everything-else">Monitored and transparent, like everything else<a href="https://iapp.co.th/en/blog/iapp-core-api#monitored-and-transparent-like-everything-else" class="hash-link" aria-label="Direct link to Monitored and transparent, like everything else" title="Direct link to Monitored and transparent, like everything else" translate="no">​</a></h2>
<p>The Core API joins our public <a href="https://status.iapp.co.th/" target="_blank" rel="noopener noreferrer">status page</a> under <strong>Core Services</strong> — the same 5-minute health checks as our 60+ AI APIs — and is listed on the <a href="https://iapp.co.th/stats" target="_blank" rel="noopener noreferrer">live stats page</a> alongside the rest of the platform.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="get-started-in-60-seconds">Get started in 60 seconds<a href="https://iapp.co.th/en/blog/iapp-core-api#get-started-in-60-seconds" class="hash-link" aria-label="Direct link to Get started in 60 seconds" title="Direct link to Get started in 60 seconds" translate="no">​</a></h2>
<ol>
<li>Grab your API key from <a href="https://iapp.co.th/control/api-keys" target="_blank" rel="noopener noreferrer">API Key Management</a></li>
<li><code>curl https://iapp.co.th/api/core/v1/ping -H "apikey: YOUR_KEY"</code></li>
<li>Read the <a href="https://iapp.co.th/en/docs/core-api">full documentation</a> — parameters, examples in Python and Node.js, and a 20-line starter dashboard</li>
</ol>
<p><strong><a href="https://iapp.co.th/en/docs/core-api">Read the docs →</a></strong></p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>API</category>
            <category>Announcement</category>
            <category>AI Tools</category>
        </item>
        <item>
            <title><![CDATA[Thai Legal Data API/MCP — give Claude, ChatGPT, Grok & Gemini precise Thai law (4× more accurate citations)]]></title>
            <link>https://iapp.co.th/en/blog/thai-legal-data-api-mcp</link>
            <guid>https://iapp.co.th/en/blog/thai-legal-data-api-mcp</guid>
            <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Query 39 Thai laws (6,363 sections) and 70,634 Supreme Court rulings as structured data — every citation machine-verified. Works with Claude, ChatGPT, Grok, Gemini (Antigravity) and any MCP client. In our benchmark, Claude cites the correct Thai law section 4× more often with the iapp-mcp legal tools. Free during launch.]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="Thai Legal Data API/MCP" src="https://iapp.co.th/en/assets/images/hero-0ea8c293c8d0174f733a80fbb0ef9d33.webp" width="2752" height="1536" class="img_ev3q"></p>
<p>Thai law, as <strong>data</strong> — not prose. The new <strong>Thai Legal Data API/MCP</strong> lets you look up any มาตรา verbatim, search 39 Thai laws by meaning, find the Supreme Court decisions (ฎีกา) that interpret a specific section, and ask legal questions that are answered <strong>only</strong> from retrieved sources — with every citation machine-checked. The API never invents a case number — and it plugs straight into <strong>Claude, ChatGPT, Grok</strong>, or any assistant that speaks MCP.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="whats-inside">What's inside<a href="https://iapp.co.th/en/blog/thai-legal-data-api-mcp#whats-inside" class="hash-link" aria-label="Direct link to What's inside" title="Direct link to What's inside" translate="no">​</a></h2>
<ul>
<li><strong>39 laws · 6,363 sections</strong> — the consolidated statute corpus behind OpenThai 2.0 Legal (ป.พ.พ., ป.อ., ป.วิ.พ., ป.วิ.อ., ประมวลรัษฎากร and more)</li>
<li><strong>70,634 Supreme Court rulings</strong> with their หลักกฎหมาย (legal-principle) headnotes</li>
<li><strong>99.7% citation-linked</strong> — go from a section straight to the case law that interprets it</li>
<li>Every result links back to the official record at deka.supremecourt.or.th</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="we-measured-it-claude-gets-4-more-accurate">We measured it: Claude gets 4× more accurate<a href="https://iapp.co.th/en/blog/thai-legal-data-api-mcp#we-measured-it-claude-gets-4-more-accurate" class="hash-link" aria-label="Direct link to We measured it: Claude gets 4× more accurate" title="Direct link to We measured it: Claude gets 4× more accurate" translate="no">​</a></h2>
<p>Does giving an AI assistant real Thai legal data actually help? We benchmarked it: 25 questions from the nitibench-CCL legal QA dataset, answered by the same Claude model twice — once bare, once with the six iapp-mcp legal tools.</p>
<table><thead><tr><th></th><th>Bare Claude</th><th>Claude + iapp-mcp</th></tr></thead><tbody><tr><td>Cites the correct มาตรา</td><td>20%</td><td><strong>80%</strong></td></tr><tr><td>Citation F1</td><td>0.093</td><td><strong>0.380</strong></td></tr></tbody></table>
<p><strong>4× more correct citations</strong> (claude-sonnet-5, n=25, gold-citation hit rate). Without tools, the model cites plausible neighbors — มาตรา 298 or 300 when the right answer is 299. With tools, it retrieves the real section text and cites 299 exactly. Even our strongest test model improved by 1.5× — and with the tools, every model we tested converged at ~80% accuracy.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="real-world-use-cases">Real-world use cases<a href="https://iapp.co.th/en/blog/thai-legal-data-api-mcp#real-world-use-cases" class="hash-link" aria-label="Direct link to Real-world use cases" title="Direct link to Real-world use cases" translate="no">​</a></h2>
<p>** Lawyers — precedent research in minutes, not afternoons**</p>
<blockquote>
<p>"Find ฎีกา interpreting ป.อ. 335 (11) on employees taking employer property — and where the line between theft and embezzlement falls."</p>
</blockquote>
<p>Real rulings grouped by issue, each with its legal-principle headnote and a verification link.</p>
<p>** Law students — exam prep with exact statute text**</p>
<blockquote>
<p>"Give me ป.พ.พ. section 420 verbatim, the elements of tort liability, and the landmark ฎีกา worth memorizing."</p>
</blockquote>
<p>The text matches the code letter-for-letter — not an AI's misremembered version.</p>
<p>** In-house legal &amp; compliance — cited answers for internal memos**</p>
<blockquote>
<p>"We store customer ID-card copies without consent — which sections does that violate, and is there precedent?"</p>
</blockquote>
<p>** Developers — build legal apps without building the corpus**
Call the REST endpoints (<code>/section</code>, <code>/search</code>, <code>/deka/search</code>, <code>/ask</code>) or plug the MCP into your agent — 6,363 sections and 70,634 rulings become your app's foundation with zero scraping or data maintenance.</p>
<p>** Everyone else — everyday legal questions**</p>
<blockquote>
<p>"Someone defamed me on Facebook — which section applies and what's the limitation period?"</p>
</blockquote>
<p>Answers cite real sections and precedent — solid preparation before you talk to an actual lawyer.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="connect-it-in-one-url--no-api-key-to-paste">Connect it in one URL — no API key to paste<a href="https://iapp.co.th/en/blog/thai-legal-data-api-mcp#connect-it-in-one-url--no-api-key-to-paste" class="hash-link" aria-label="Direct link to Connect it in one URL — no API key to paste" title="Direct link to Connect it in one URL — no API key to paste" translate="no">​</a></h2>
<p>The new <strong>remote MCP server</strong> connects with your iApp account through OAuth — sign in once and your API key is linked automatically, never copied anywhere:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">https://mcp.iapp.co.th</span><br></span></code></pre></div></div>
<ul>
<li><strong>Claude</strong> (claude.ai / Desktop): Settings → Connectors → <strong>Add custom connector</strong> → paste the URL → <strong>Connect</strong></li>
<li><strong>Antigravity (Gemini)</strong>: Agent panel → MCP servers → add <code>{ "iapp-ai": { "serverUrl": "https://mcp.iapp.co.th" } }</code></li>
<li><strong>Claude Code</strong>: <code>claude mcp add --transport http iapp-ai https://mcp.iapp.co.th</code></li>
<li><strong>Cursor / Codex / Windsurf</strong> and any MCP client: same URL — see the <a href="https://iapp.co.th/en/docs/mcp-server">per-client setup guide</a></li>
</ul>
<p>Then just ask in Thai: <em>"หาฎีกาที่ตีความ ป.อ. มาตรา 335 หลังปี 2560"</em>.</p>
<p>Prefer the classic local install? <code>claude mcp add iapp-mcp -s user -e IAPP_API_KEY=YOUR_API_KEY -- uvx iapp-mcp</code> — all six legal tools ship in <a href="https://pypi.org/project/iapp-mcp/" target="_blank" rel="noopener noreferrer">iapp-mcp 2.1.0</a>.</p>
<p>Prefer REST? <code>GET /v3/store/data/thai-legal/section?law=ประมวลกฎหมายอาญา&amp;section=335&amp;with_deka=true</code> — see the <a href="https://iapp.co.th/en/docs/data/legal/thai-legal">full documentation</a> with live try-it demos.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="free-during-launch">Free during launch<a href="https://iapp.co.th/en/blog/thai-legal-data-api-mcp#free-during-launch" class="hash-link" aria-label="Direct link to Free during launch" title="Direct link to Free during launch" translate="no">​</a></h2>
<p>All endpoints are <strong>free during the launch promotion</strong> (then 0.1 IC/request; <code>/meta</code> and <code>/laws</code> stay free forever). New accounts get 50 IC free — no credit card required.</p>
<p><strong><a href="https://iapp.co.th/en/docs/data/legal/thai-legal">Try it now →</a></strong></p>
<hr>
<p><em>For research use — not legal advice. Every result carries a link to the official Supreme Court record; verify there before relying on a ruling in practice.</em></p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>MCP</category>
            <category>API</category>
            <category>legal</category>
            <category>thai-law</category>
            <category>Announcement</category>
            <category>AI Tools</category>
        </item>
        <item>
            <title><![CDATA[Six new Thai document types for iApp Any Documents OCR — bills, statements, credit reports, vehicle books and company certificates]]></title>
            <link>https://iapp.co.th/en/blog/any-documents-ocr-six-new-types</link>
            <guid>https://iapp.co.th/en/blog/any-documents-ocr-six-new-types</guid>
            <pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[iApp Any Documents OCR now reads six more Thai document types: electricity bills, water bills, bank statements, NCB credit reports, vehicle registration books and company registration certificates. Structured JSON with per-field confidence, 98.6% field-level accuracy, 1 IC per page, live today.]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="iApp Any Documents OCR — six new Thai document types" src="https://iapp.co.th/en/assets/images/thai-ocr-8b7b9947ba2eecb2ad49c8cfa2e0846c.png" width="276" height="277" class="img_ev3q"></p>
<p><strong>iApp Any Documents OCR</strong> can now read six more Thai document types, and they are live on production today. Every one returns structured JSON with a per-field confidence score, at <strong>1 IC per page</strong>.</p>
<p><strong>Docs: <a href="https://iapp.co.th/en/docs/category/-thai-document-optical-character-recognition-thai-document-ocr">Thai Document OCR</a></strong> · <strong>Pricing: <a href="https://iapp.co.th/en/pricing">iapp.co.th/pricing</a></strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="whats-new">What's new<a href="https://iapp.co.th/en/blog/any-documents-ocr-six-new-types#whats-new" class="hash-link" aria-label="Direct link to What's new" title="Direct link to What's new" translate="no">​</a></h2>
<table><thead><tr><th>Document</th><th>เอกสาร</th><th>Endpoint</th></tr></thead><tbody><tr><td><a href="https://iapp.co.th/en/docs/ocr/electricity-bill">Electricity Bill</a></td><td>ใบแจ้งค่าไฟฟ้า (กฟน./กฟภ.)</td><td><code>/ocr/v3/electricity-bill/file</code></td></tr><tr><td><a href="https://iapp.co.th/en/docs/ocr/water-bill">Water Bill</a></td><td>ใบแจ้งค่าน้ำประปา (กปน./กปภ.)</td><td><code>/ocr/v3/water-bill/file</code></td></tr><tr><td><a href="https://iapp.co.th/en/docs/ocr/bank-statement">Bank Statement</a></td><td>รายการเดินบัญชีธนาคาร</td><td><code>/ocr/v3/bank-statement/file</code></td></tr><tr><td><a href="https://iapp.co.th/en/docs/ocr/ncb-credit-report">NCB Credit Report</a></td><td>รายงานข้อมูลเครดิต (เครดิตบูโร)</td><td><code>/ocr/v3/ncb-credit-report/file</code></td></tr><tr><td><a href="https://iapp.co.th/en/docs/ocr/vehicle-registration">Vehicle Registration Book</a></td><td>เล่มทะเบียนรถ</td><td><code>/ocr/v3/vehicle-registration/file</code></td></tr><tr><td><a href="https://iapp.co.th/en/docs/ocr/company-certificate">Company Registration Certificate</a></td><td>หนังสือรับรองบริษัท</td><td><code>/ocr/v3/company-certificate/file</code></td></tr></tbody></table>
<p>These are the documents Thai businesses actually ask for. An electricity or water bill is the standard proof of address. A bank statement and an NCB credit report are the backbone of a loan application. A vehicle registration book underpins car financing and insurance. A company certificate is the first thing you check when onboarding a corporate customer.</p>
<p>Until now each of those meant a human reading a PDF and retyping numbers into a form.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-you-get-back">What you get back<a href="https://iapp.co.th/en/blog/any-documents-ocr-six-new-types#what-you-get-back" class="hash-link" aria-label="Direct link to What you get back" title="Direct link to What you get back" translate="no">​</a></h2>
<p>Every endpoint takes one <code>POST</code> with <code>multipart/form-data</code> and returns the same shape:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl -X POST "https://api.iapp.co.th/ocr/v3/electricity-bill/file" \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -H "apikey: YOUR_API_KEY" \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -F "file=@electricity_bill.jpg"</span><br></span></code></pre></div></div>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"docs"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"message"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"success"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"processed"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"provider"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"การไฟฟ้านครหลวง"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"account_number"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"012345678"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"units_consumed"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">162</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"subtotal_before_vat"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">551.32</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"vat_amount"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">38.59</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"total_current_bill"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">589.91</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"due_date"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"31/08/64"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"total_current_bill"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.98</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"due_date"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.95</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"process_ms"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">4120</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"docs_count"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"process_ms"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">4300</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p>Two things worth calling out.</p>
<p><strong>Every field carries its own confidence score.</strong> You do not have to trust the whole document or none of it. Route the fields below your threshold to a human and let the rest flow straight through — which is what makes real straight-through processing possible rather than just faster data entry.</p>
<p><strong>Tables come back as arrays, not as text.</strong> A bank statement returns <code>transactions</code> as structured rows — date, description, withdrawal, deposit, balance, channel — and an NCB report returns one entry per credit account. Multi-page PDF statements are combined into a single result.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="accuracy">Accuracy<a href="https://iapp.co.th/en/blog/any-documents-ocr-six-new-types#accuracy" class="hash-link" aria-label="Direct link to Accuracy" title="Direct link to Accuracy" translate="no">​</a></h2>
<p>Measured on the internal ChindaOCR-M3 golden evaluation set: real Thai documents, visually re-verified labels, including low-resolution photographs and bills partly obscured by handwriting.</p>
<table><thead><tr><th>Document Type</th><th>Docs</th><th>Fields</th><th>Accuracy</th></tr></thead><tbody><tr><td>Electricity Bill</td><td>5</td><td>45</td><td>97.8%</td></tr><tr><td>Water Bill</td><td>5</td><td>25</td><td>100%</td></tr><tr><td>Bank Statement</td><td>2</td><td>10</td><td>100%</td></tr><tr><td>NCB Credit Report</td><td>5</td><td>19</td><td>100%</td></tr><tr><td>Vehicle Registration</td><td>2</td><td>13</td><td>92.3%</td></tr><tr><td>Company Certificate</td><td>6</td><td>35</td><td>100%</td></tr><tr><td><strong>Overall</strong></td><td><strong>25</strong></td><td><strong>147</strong></td><td><strong>98.6%</strong></td></tr></tbody></table>
<p>We would rather publish the two misses than round them away. Both are physical-legibility limits, not model failures: one Thai letter pair on a degraded vehicle-book scan that conventional OCR also misreads, and one digit hidden under handwriting on a dot-matrix bill. A human squinting at the same pixels makes the same call.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="pricing">Pricing<a href="https://iapp.co.th/en/blog/any-documents-ocr-six-new-types#pricing" class="hash-link" aria-label="Direct link to Pricing" title="Direct link to Pricing" translate="no">​</a></h2>
<p><strong>1 IC per page.</strong> A multi-page PDF is billed per page processed, reported back to you in the <code>iapp-input-pages</code> response header, so the charge is always auditable against what you sent.</p>
<p>No new plan, no minimum commitment — the same credits you already use for the rest of the iApp API.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="getting-started">Getting started<a href="https://iapp.co.th/en/blog/any-documents-ocr-six-new-types#getting-started" class="hash-link" aria-label="Direct link to Getting started" title="Direct link to Getting started" translate="no">​</a></h2>
<ol>
<li>Grab your key from <a href="https://iapp.co.th/en/control/api-keys">API Key Management</a></li>
<li>Pick the endpoint you need from the table above</li>
<li><code>POST</code> the file</li>
</ol>
<p>Files up to 50 MB, in PDF, JPG, JPEG, PNG or WEBP. Set <code>target_lang=en</code> if you would rather have the extracted values in English than Thai.</p>
<p>Full request and response reference, field tables and code samples in eight languages are on each document's page, linked in the table above.</p>
<hr>
<p>Questions, or a Thai document type you need that we do not cover yet? We would like to hear it — <a href="mailto:sale@iapp.co.th" target="_blank" rel="noopener noreferrer">sale@iapp.co.th</a>, or come and say hello on <a href="https://discord.gg/kYcpmdEcS2" target="_blank" rel="noopener noreferrer">Discord</a>.</p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>OCR</category>
            <category>Thai OCR</category>
            <category>API</category>
            <category>KYC</category>
            <category>Automation</category>
            <category>Announcement</category>
            <category>Thai Language AI</category>
        </item>
        <item>
            <title><![CDATA[OpenThai 2.0 Legal — the Thai legal AI that knows the law by heart, and that you can run yourself]]></title>
            <link>https://iapp.co.th/en/blog/openthai2p0-legal-launch</link>
            <guid>https://iapp.co.th/en/blog/openthai2p0-legal-launch</guid>
            <pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[iApp Technology releases OpenThai 2.0 Legal, an open-weight Thai legal LLM built on NVIDIA Nemotron-3-Nano-30B-A3B. It recalls Thai statutes with no law in the prompt, cites the exact มาตรา as JSON, beats Qwen 35B on every legal-essay axis, and self-hosts on a single 24 GB GPU. Weights free on Hugging Face.]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="OpenThai 2.0 Legal — open-weight Thai legal LLM, released 24 July 2026" src="https://iapp.co.th/en/assets/images/launch-hero-en-8805a78303d70ac6a8eb087213ac303c.webp" width="1920" height="1080" class="img_ev3q"></p>
<p>Today we are releasing <strong>OpenThai 2.0 Legal</strong>, an open-weight large language model purpose-built for Thai law — and we are giving away the full weights on Hugging Face. It is built by Thais, for Thailand: for lawyers, in-house counsel, compliance teams, legal-tech builders and public agencies that need reliable, source-grounded answers on Thai statutes and case law.</p>
<p><strong>Model page: <a href="https://iapp.co.th/en/openmodels/openthai2p0-legal">iapp.co.th/openmodels/openthai2p0-legal</a></strong> · <strong>Weights: <a href="https://huggingface.co/iapp/openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b" target="_blank" rel="noopener noreferrer">huggingface.co/iapp/openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b</a></strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="it-knows-the-law-without-being-told-the-law">It knows the law without being told the law<a href="https://iapp.co.th/en/blog/openthai2p0-legal-launch#it-knows-the-law-without-being-told-the-law" class="hash-link" aria-label="Direct link to It knows the law without being told the law" title="Direct link to It knows the law without being told the law" translate="no">​</a></h2>
<p>Most legal chatbots are only as good as the documents you hand them. Take the documents away and they guess.</p>
<p>Ask OpenThai 2.0 Legal a question with <strong>no statute in the prompt at all</strong>, and it recalls and cites the correct law and section (<strong>มาตรา</strong>) from memory. On code-scored benchmarks it is the strongest closed-book Thai-law recaller among models you can run yourself — roughly <strong>four times</strong> the recall of the much larger Qwen3.6-35B on the Civil and Commercial Code — and it wins <strong>all four axes</strong> of the Thai bar-exam essay evaluation against the same competitor, from correct citations to legal reasoning.</p>
<p><img decoding="async" loading="lazy" alt="Benchmark scoreboard: closed-book, open-book (RAG) and legal-essay results versus Qwen3.6-35B and the Nemotron base" src="https://iapp.co.th/en/assets/images/benchmark-scoreboard-f448ab187b46e501522075ee8516daf0.webp" width="2052" height="742" class="img_ev3q"></p>
<table><thead><tr><th>Evaluation</th><th>OpenThai 2.0 Legal</th><th>Qwen3.6-35B</th><th>Nemotron-3-30B base</th></tr></thead><tbody><tr><td>Closed-book · Civil &amp; Commercial recall (n=3,729)</td><td><strong>0.07</strong></td><td>0.02</td><td>0.001</td></tr><tr><td>Closed-book · Revenue Code recall (n=50)</td><td><strong>0.40</strong></td><td>0.36</td><td>0.31</td></tr><tr><td>Open-book · cite from context (n=3,729)</td><td><strong>0.99</strong></td><td><strong>0.99</strong></td><td>0.98</td></tr><tr><td>Open-book · tax echo (n=50)</td><td><strong>0.84</strong></td><td><strong>0.84</strong></td><td>0.64</td></tr><tr><td>Open-book · tax selection among distractors (n=50)</td><td><strong>0.69</strong></td><td>0.64</td><td>0.45</td></tr><tr><td>Essay · correct citations (n=72)</td><td><strong>0.25</strong></td><td>0.09</td><td>0.02</td></tr><tr><td>Essay · reaches the right holding (n=72)</td><td><strong>0.57</strong></td><td>0.50</td><td>0.31</td></tr><tr><td>Essay · covers the key points (n=72)</td><td><strong>0.60</strong></td><td>0.55</td><td>0.27</td></tr><tr><td>Essay · writing quality (n=72)</td><td><strong>0.46</strong></td><td>0.43</td><td>0.13</td></tr></tbody></table>
<p>Scores run 0 to 1, higher is better. Citation rows use NitiBench's citation-F1 scorer; essay holding, coverage and fluency are judged by Gemini 3.1 Flash Lite. Every model was re-run end to end under one identical protocol — single pass, thinking off, citations checked by code rather than by an AI judge.</p>
<p>One honest caveat, stated up front: a closed cloud API still recalls more Thai law than we do. Our claim is scoped to models <strong>you can run on your own hardware</strong> — and there, this is the best we have measured.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="every-answer-names-its-source">Every answer names its source<a href="https://iapp.co.th/en/blog/openthai2p0-legal-launch#every-answer-names-its-source" class="hash-link" aria-label="Direct link to Every answer names its source" title="Direct link to Every answer names its source" translate="no">​</a></h2>
<p>Knowing the law is only half of it. Legal work needs answers you can check.</p>
<p>OpenThai 2.0 Legal returns the exact law name and section in a fixed JSON contract:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">"answer"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"นาย ก. ต้องรับผิดตามประมวลกฎหมายแพ่งและพาณิชย์ มาตรา 420"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"citations"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">"law"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ประมวลกฎหมายแพ่งและพาณิชย์"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"section"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"420"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p>That is not a formatting nicety — it is what makes the model usable in software. Citations parse straight into RAG pipelines, drafting tools and review workflows, and a reviewer can verify each one against the statute instead of taking it on trust.</p>
<p>In the RAG setting the model is handed candidate sections and cites only the ones that actually apply. It works with whatever retriever you already run — no particular embedding or rerank model required. And because closed-book recall is strong, plenty of questions need no retrieval at all.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="it-runs-on-your-own-hardware">It runs on your own hardware<a href="https://iapp.co.th/en/blog/openthai2p0-legal-launch#it-runs-on-your-own-hardware" class="hash-link" aria-label="Direct link to It runs on your own hardware" title="Direct link to It runs on your own hardware" translate="no">​</a></h2>
<p>This matters more than any single benchmark. Case files, client matters and internal investigations are exactly the data organizations cannot send to someone else's cloud.</p>
<p>OpenThai 2.0 Legal is a 30-billion-parameter Mixture-of-Experts model that activates only <strong>~3B parameters per token</strong>, so it runs on a <strong>single GPU from 24 GB of VRAM</strong> in NVFP4 (4-bit) — and on 2× H100 in bfloat16 for full-precision serving. Law firms, banks and government agencies can keep sensitive matters entirely inside their own perimeter, under their own governance.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-it-was-built">How it was built<a href="https://iapp.co.th/en/blog/openthai2p0-legal-launch#how-it-was-built" class="hash-link" aria-label="Direct link to How it was built" title="Direct link to How it was built" translate="no">​</a></h2>
<p><img decoding="async" loading="lazy" alt="Training pipeline: Base 30B → CPT → SFT → GRPO → Released" src="https://iapp.co.th/en/assets/images/training-pipeline-8668d70d6f5dd5b20253551c29c21e31.webp" width="1546" height="352" class="img_ev3q"></p>
<p>Three stages on the NVIDIA NeMo stack, each solving one problem:</p>
<ol>
<li><strong>CPT — inject the law.</strong> The model drills the full text of every section in both directions (recite the section from its number; name the section from its meaning), so the knowledge lives in the weights. 360,985 drills, ~800M Thai-law tokens.</li>
<li><strong>SFT — teach the exam.</strong> Every answer follows a fixed JSON contract citing only the sections it was given. 16,436 exam answers and เนติบัณฑิต essays.</li>
<li><strong>GRPO — sharpen citations.</strong> Reinforcement learning where the reward is the benchmark's own citation F1: cite exactly what applies and the draft is reinforced; add a wrong section and it is suppressed. 8,568 graded questions, ~68,500 drafts.</li>
</ol>
<p>The base is NVIDIA's Nemotron-3-Nano-30B-A3B, a hybrid Mamba-Transformer MoE; training used Megatron-Bridge for CPT/SFT and NeMo-RL for GRPO.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="try-it-right-now--live-free-no-gpu">Try it right now — live, free, no GPU<a href="https://iapp.co.th/en/blog/openthai2p0-legal-launch#try-it-right-now--live-free-no-gpu" class="hash-link" aria-label="Direct link to Try it right now — live, free, no GPU" title="Direct link to Try it right now — live, free, no GPU" translate="no">​</a></h2>
<p>Ask the real model a Thai legal question, straight from this page:</p>
<div class="demo_nLmZ" role="group" aria-label="Try OpenThai 2.0 Legal"><div class="header_TQe5"><p class="headerSub_RvUb">Ask in Thai. Answers draw on 39 Thai laws, about 6,300 sections, and list the sections they used.</p></div><div class="body_z92t"><div class="tabs_t6at"><button type="button" class="tabActive_Ku3U">Legal essay + RAG</button><button type="button" class="tab_oe73">Citation + RAG</button><button type="button" class="tab_oe73">Closed-book (no RAG)</button></div><p class="modeHint_XhcQ">Full legal analysis in prose, citing มาตรา — grounded in auto-retrieved current statute text.</p><label class="label_JP4W">Question (Thai)</label><textarea class="textarea_GPM4" rows="3">จำเลยขีดฆ่าและฉีกเอกสารหลักฐานแห่งหนี้ แม้ยังอ่านได้ ถือเป็นความผิดสำเร็จหรือเพียงพยายามกระทำผิด</textarea><div class="presets_FFDC"><span class="tryOne_CMwh">Try an example:</span><button type="button" class="preset_jD8h">จำเลยขีดฆ่าและฉีกเอกสารหลักฐานแห่งหนี้ แม้ยังอ่านได้ ถือเป…</button><button type="button" class="preset_jD8h">จำเลยได้รับมอบหมายให้เก็บรักษาทรัพย์สินของผู้เสียหายไว้ ต่…</button></div><div class="keySelector_ubAJ"><div class="container_YZJz"><label class="label_hy2K" for=":R1kqqllq9:">API key</label><input id=":R1kqqllq9:" type="text" placeholder="Enter your API key" class="input_GqCS" value=""><p class="hint_xP6G"><a href="https://iapp.co.th/en/login" class="link_Sydx">Log in to use your API keys</a> or <a href="https://iapp.co.th/en/register" class="link_Sydx">Create an account</a></p></div></div><div class="controls_gxJl"><button type="button" class="runBtn_K7wQ">Ask the model</button><label class="thinkToggle_mLf1"><input type="checkbox" checked="">Show reasoning (slower)</label><label class="thinkToggle_mLf1"><input type="checkbox" checked="">Stream the answer (SSE)</label></div><details class="devPanel_H2y4"><summary class="devSummary_e8yX">Developer view — the API call behind this demo</summary><p class="devHint_bgC_">This curl command updates live as you change the question, mode and toggles above. Run it in your terminal with your own API key — it is exactly what this page sends.</p><div class="devBlockHead_n20D"><span>Request (curl)</span><button type="button" class="devCopy_WpvD">Copy with my key</button></div><pre class="devCode_T9ux">curl -s https://api.iapp.co.th/v3/llm/openthai2p0-legal/chat/completions \
  -H "Content-Type: application/json" \
  -H "apikey: YOUR_IAPP_API_KEY" \
  -d '{
  "model": "openthai2.0-legal",
  "rag": true,
  "rag_inject": "system",
  "messages": [
    {
      "role": "system",
      "content": "You are a Thai legal expert. Answer with legal analysis and cite the relevant มาตรา."
    },
    {
      "role": "user",
      "content": "จำเลยขีดฆ่าและฉีกเอกสารหลักฐานแห่งหนี้ แม้ยังอ่านได้ ถือเป็นความผิดสำเร็จหรือเพียงพยายามกระทำผิด"
    }
  ],
  "temperature": 0,
  "top_p": 1,
  "max_tokens": 4096,
  "chat_template_kwargs": {
    "enable_thinking": true
  },
  "stream": true,
  "stream_options": {
    "include_usage": true
  }
}'</pre></details><p class="disclaimer_iU3Z">Decision support, not legal advice. Verify every citation against the current law.</p></div></div>
<p>And this is the full production setup, not a stripped-down toy: <strong>the API has RAG built in</strong> — it hybrid-searches a 39-law, 6,300-section Thai statute corpus (BM25 + embeddings + reranker) and grounds each answer in the current law text, showing you the exact sections it selected under every answer. Curious how the bare model does on its own? The Closed-book tab (<code>"rag": false</code> in the API) is the side-by-side comparison. To build the same retrieval stack on your own infrastructure, our <a href="https://iapp.co.th/en/openmodels/openthai2p0-legal-rag-tutorial">Open WebUI &amp; OpenThaiRAG tutorial</a> gets you there in under an hour.</p>
<p>And the same endpoint is yours to build on: a <strong>free hosted API</strong> — OpenAI-compatible, free until 30 September 2026 (<a href="https://iapp.co.th/en/blog/openthai2p0-legal-free-extended">extended</a> from the original 24 August) with a free iApp API key (<a href="https://iapp.co.th/register" target="_blank" rel="noopener noreferrer">register</a> → <strong>API Keys</strong>; 30 requests/minute). After the promo it continues at standard Thanoy-rate pricing, 0.01/0.02 IC per 1K input/output tokens.</p>
<p><em>Update, 3 October 2026: the free period has ended; the hosted API now costs 0.01 IC per 1,000 input tokens and 0.02 IC per 1,000 output tokens.</em></p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> openai </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> OpenAI</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">client </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> OpenAI</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">base_url</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"https://api.iapp.co.th/v3/llm/openthai2p0-legal"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> api_key</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"YOUR_IAPP_API_KEY"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">r </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">chat</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">completions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"openthai2.0-legal"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    messages</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ลักทรัพย์ในเวลากลางคืน ผิดมาตราใด"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    max_tokens</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">1024</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">r</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">choices</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">message</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">content</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="or-run-it-yourself-in-five-minutes">Or run it yourself in five minutes<a href="https://iapp.co.th/en/blog/openthai2p0-legal-launch#or-run-it-yourself-in-five-minutes" class="hash-link" aria-label="Direct link to Or run it yourself in five minutes" title="Direct link to Or run it yourself in five minutes" translate="no">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">vllm serve iapp/openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --tensor-parallel-size 2 --trust-remote-code \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --max-model-len 32768 --enforce-eager</span><br></span></code></pre></div></div>
<p>Then talk to it through any OpenAI-compatible client — NVIDIA NIM exposes the same endpoint if you prefer that path. Full prompts, recommended generation settings and worked examples for all three modes (RAG, closed-book and essay) are on the <a href="https://iapp.co.th/en/openmodels/openthai2p0-legal">model page</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-it-is-not">What it is not<a href="https://iapp.co.th/en/blog/openthai2p0-legal-launch#what-it-is-not" class="hash-link" aria-label="Direct link to What it is not" title="Direct link to What it is not" translate="no">​</a></h2>
<p>We would rather say this ourselves than have you find out later:</p>
<ul>
<li><strong>Retrieval quality drives results.</strong> Hand it the right sections and citations are near-perfect. Hand it the wrong ones and the answer follows them.</li>
<li><strong>Near-miss rejection is the hard part.</strong> Telling a governing section from a closely related one is the lowest-scoring axis for every model tested, ours included.</li>
<li><strong>Coverage has edges.</strong> Training focused on Thai statutory law and Revenue Department rulings; niche areas and very recent amendments may be thinner, and statutes change.</li>
<li><strong>It is decision support, not legal advice.</strong> A qualified professional should verify every citation against the current law before anyone relies on it.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-we-are-giving-it-away">Why we are giving it away<a href="https://iapp.co.th/en/blog/openthai2p0-legal-launch#why-we-are-giving-it-away" class="hash-link" aria-label="Direct link to Why we are giving it away" title="Direct link to Why we are giving it away" translate="no">​</a></h2>
<blockquote>
<p>"Thai law deserves an AI that actually knows Thai law — and that Thai organizations can own and run themselves. By releasing OpenThai 2.0 Legal as open weights, we're putting a genuinely capable, self-hostable legal model into the hands of every Thai lawyer, developer and institution. It was built by Thais, for Thailand."</p>
<p>— <strong>Dr. Kobkrit Viriyayudhakorn</strong>, Chief Executive Officer, iApp Technology</p>
</blockquote>
<p>Sovereign AI is not only about who owns the compute. It is about who can build, inspect and improve the models. Every university lab, startup and agency that fine-tunes, evaluates or deploys this model makes Thailand's collective AI capability stronger — and the same recipe applies to any language and legal system that has been waiting for one.</p>
<p>OpenThai 2.0 Legal was built by the OpenThai team (<strong>AIEAT</strong> / <strong>iApp Technology</strong>) on the <strong>NVIDIA Nemotron</strong> and <strong>NeMo</strong> stack, together with the <strong>Big Data Institute (BDI)</strong>, the <strong>ThaiLLM</strong> initiative and <strong>NVIDIA</strong>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="get-started">Get started<a href="https://iapp.co.th/en/blog/openthai2p0-legal-launch#get-started" class="hash-link" aria-label="Direct link to Get started" title="Direct link to Get started" translate="no">​</a></h2>
<ul>
<li><strong>Model page:</strong> <a href="https://iapp.co.th/en/openmodels/openthai2p0-legal">iapp.co.th/openmodels/openthai2p0-legal</a></li>
<li><strong>Weights:</strong> <a href="https://huggingface.co/iapp/openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b" target="_blank" rel="noopener noreferrer">huggingface.co/iapp/openthai2.0-legal-thaillm-nemotron-3-nano-30b-a3b</a></li>
<li><strong>Deployment help or a model tuned to your own corpus:</strong> <a href="mailto:sale@iapp.co.th" target="_blank" rel="noopener noreferrer">sale@iapp.co.th</a> · 02-124-4041</li>
<li><strong>Community:</strong> <a href="https://discord.gg/kYcpmdEcS2" target="_blank" rel="noopener noreferrer">Discord</a></li>
</ul>]]></content:encoded>
            <category>iApp Technology</category>
            <category>OpenThai</category>
            <category>LLM</category>
            <category>Legal AI</category>
            <category>Open Source</category>
            <category>RAG</category>
            <category>Announcement</category>
            <category>Thai Language AI</category>
        </item>
        <item>
            <title><![CDATA[iApp AI 2.0 — new Python packages and an MCP server that plugs 30+ Thai AI APIs into Claude Code]]></title>
            <link>https://iapp.co.th/en/blog/iapp-ai-mcp-server-launch</link>
            <guid>https://iapp.co.th/en/blog/iapp-ai-mcp-server-launch</guid>
            <pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[iApp AI 2.0 splits into three packages — the iapp-ai Python SDK, the new iapp-mcp MCP server with 37 tools, and a shared iapp-core. Add Thai OCR, eKYC, LLM, speech and video generation to Claude Code with one command. Existing SDK code keeps working unchanged.]]></description>
            <content:encoded><![CDATA[<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Update — August 2026</div><div class="admonitionContent_BuS1"><p><strong>iapp-mcp 2.1.0</strong> adds six <strong>Thai Legal Data</strong> tools — statute lookup/search, ฎีกา precedent search, and grounded legal Q&amp;A — bringing the server to <strong>44 tools</strong>. See <a href="https://iapp.co.th/en/docs/data/legal/thai-legal">Thai Legal Data API/MCP</a>.</p></div></div>
<p><img decoding="async" loading="lazy" alt="iApp AI 2.0 — Python SDK, MCP Server and shared core" src="https://iapp.co.th/en/assets/images/hero-2a95ab481f845f7c99a304990fbe32de.webp" width="1920" height="1080" class="img_ev3q"></p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>Install in Claude Code — one command</div><div class="admonitionContent_BuS1"><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">claude mcp add iapp-mcp -s user -e IAPP_API_KEY=YOUR_API_KEY -- uvx iapp-mcp</span><br></span></code></pre></div></div><p>Needs <a href="https://docs.astral.sh/uv/" target="_blank" rel="noopener noreferrer">uv</a> (<code>brew install uv</code>) and an API key from <a href="https://iapp.co.th/" target="_blank" rel="noopener noreferrer">iapp.co.th</a> → <strong>API Keys</strong> → <strong>Create New API Key</strong>. Then just ask in plain language — no special syntax. → <strong><a href="https://iapp.co.th/en/docs/mcp-server">Full MCP Server guide</a></strong> (all 37 tools, other clients, troubleshooting)</p></div></div>
<p>Our Python SDK just grew up. <strong>iApp AI 2.0</strong> reorganizes <a href="https://github.com/iapp-technology/iapp_ai" target="_blank" rel="noopener noreferrer">github.com/iapp-technology/iapp_ai</a> into a monorepo of three packages — and the headline addition is an <strong>MCP server</strong> that hands your AI assistant 37 tools covering the whole iApp AI Marketplace.</p>
<p>The short version: with one command, Claude Code can read a Thai ID card, transcribe a meeting, translate to Japanese, generate a video, or optimize a delivery route — because it now speaks directly to our APIs.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="three-packages-one-core">Three packages, one core<a href="https://iapp.co.th/en/blog/iapp-ai-mcp-server-launch#three-packages-one-core" class="hash-link" aria-label="Direct link to Three packages, one core" title="Direct link to Three packages, one core" translate="no">​</a></h2>
<table><thead><tr><th>Package</th><th>Install</th><th>What it is</th></tr></thead><tbody><tr><td><a href="https://pypi.org/project/iapp-ai/" target="_blank" rel="noopener noreferrer"><code>iapp-ai</code></a></td><td><code>pip install iapp-ai</code></td><td>The synchronous Python <strong>SDK</strong> — <code>from iapp_ai import api</code>. Thin wrappers returning raw <code>requests.Response</code>.</td></tr><tr><td><a href="https://pypi.org/project/iapp-mcp/" target="_blank" rel="noopener noreferrer"><code>iapp-mcp</code></a></td><td><code>uvx iapp-mcp</code></td><td><strong>NEW</strong> — the <strong>MCP server</strong> exposing the marketplace as tools for Claude and any other MCP client. Also on <a href="https://www.npmjs.com/package/iapp-mcp" target="_blank" rel="noopener noreferrer">npm</a>.</td></tr><tr><td><a href="https://pypi.org/project/iapp-core/" target="_blank" rel="noopener noreferrer"><code>iapp-core</code></a></td><td><em>(dependency)</em></td><td>Shared <strong>core</strong>: base URL, API-key auth, error handling, response formatting, and the sync + async HTTP transport.</td></tr></tbody></table>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>Nothing breaks</div><div class="admonitionContent_BuS1"><p>Existing SDK users are unaffected. <code>pip install iapp_ai</code> and <code>from iapp_ai import api</code> keep working exactly as before — the MCP server ships as a separate package.</p></div></div>
<p>If you are calling our APIs from your own Python code, you still want the SDK:</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> iapp_ai </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> api</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">client </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> api</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"YOUR_API_KEY"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">resp </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">idcard_front</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"id.jpg"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain">   </span><span class="token comment" style="color:#999988;font-style:italic"># returns requests.Response</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">resp</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<p>If you want an <strong>AI assistant</strong> to call them for you, read on.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-mcp-briefly">What is MCP, briefly<a href="https://iapp.co.th/en/blog/iapp-ai-mcp-server-launch#what-is-mcp-briefly" class="hash-link" aria-label="Direct link to What is MCP, briefly" title="Direct link to What is MCP, briefly" translate="no">​</a></h2>
<p><a href="https://modelcontextprotocol.io/" target="_blank" rel="noopener noreferrer">Model Context Protocol</a> is an open standard for connecting AI assistants to external tools. You run a small server; the assistant discovers its tools and calls them when a task needs them. <code>iapp-mcp</code> is that server for the iApp AI Marketplace — it runs locally over stdio, so your API key never leaves your machine and files are read straight off your disk.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="37-tools-out-of-the-box">37 tools, out of the box<a href="https://iapp.co.th/en/blog/iapp-ai-mcp-server-launch#37-tools-out-of-the-box" class="hash-link" aria-label="Direct link to 37 tools, out of the box" title="Direct link to 37 tools, out of the box" translate="no">​</a></h2>
<table><thead><tr><th>Category</th><th>What your assistant can do</th></tr></thead><tbody><tr><td><strong>eKYC</strong></td><td>Thai ID card OCR (front/back/photocopy), passport, driver license, bank book, face verification, face detection, liveness, face+ID KYC, face recognition (1<!-- -->:N<!-- -->)</td></tr><tr><td><strong>Document OCR</strong></td><td>Thai document OCR (text / layout / DOCX), receipts, credit card statements, 50 ทวิ tax certificates, civil registration, resume/CV + AI evaluation, job descriptions</td></tr><tr><td><strong>LLM</strong></td><td>Chinda Thai LLM 4B (free), DeepSeek-V3.2, DeepSeek V4 Flash/Pro, Thanoy Thai Legal AI</td></tr><tr><td><strong>Thai NLP</strong></td><td>Translation (28 languages), summarization, sentiment, toxicity, Thai QA, question generation</td></tr><tr><td><strong>Speech</strong></td><td>Speech-to-text with diarization (th/en/zh), Thai TTS (4 voices), voice cloning, AI-audio detection</td></tr><tr><td><strong>Image &amp; Video</strong></td><td>Image generation (Nano Banana / Pro), background removal, Seedance 2.0 video (async submit + status)</td></tr><tr><td><strong>Smart City &amp; Data</strong></td><td>Thai license plate OCR, power/water meter OCR, route optimization, Thai holidays</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="add-it-to-claude-code">Add it to Claude Code<a href="https://iapp.co.th/en/blog/iapp-ai-mcp-server-launch#add-it-to-claude-code" class="hash-link" aria-label="Direct link to Add it to Claude Code" title="Direct link to Add it to Claude Code" translate="no">​</a></h2>
<p><strong>1. Get an API key.</strong> Log in at <a href="https://iapp.co.th/" target="_blank" rel="noopener noreferrer">iapp.co.th</a> → <strong>API Keys</strong> → <strong>Create New API Key</strong>. Copy it — it is only shown once.</p>
<p><strong>2. Install <a href="https://docs.astral.sh/uv/" target="_blank" rel="noopener noreferrer">uv</a></strong> (one time), which runs the server without a permanent install:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl -LsSf https://astral.sh/uv/install.sh | sh    # or: brew install uv</span><br></span></code></pre></div></div>
<p><strong>3. Add the server.</strong> Pick the line matching how you installed it — pass the API key with <code>-e</code>, and put <code>--</code> before the launch command:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># uv / uvx (recommended, nothing to install)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">claude mcp add iapp-mcp -s user -e IAPP_API_KEY=YOUR_API_KEY -- uvx iapp-mcp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># npm / npx</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">claude mcp add iapp-mcp -s user -e IAPP_API_KEY=YOUR_API_KEY -- npx -y iapp-mcp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># already installed permanently (pip / uv tool / npm / yarn / pnpm)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">claude mcp add iapp-mcp -s user -e IAPP_API_KEY=YOUR_API_KEY -- iapp-mcp</span><br></span></code></pre></div></div>
<p><code>-s user</code> registers it for <strong>every</strong> project. Use <code>-s project</code> to check it into this repo's <code>.mcp.json</code> and share it with teammates, or <code>-s local</code> for just the current project on this machine.</p>
<p><strong>4. Verify.</strong> Run <code>claude mcp list</code>, or <code>/mcp</code> inside a Claude Code session — <code>iapp-mcp</code> should show as connected, with its tools listed. Remove it later with <code>claude mcp remove iapp-mcp</code>.</p>
<p>That is the entire setup. There is <strong>no special syntax to learn</strong>: describe what you want in chat and Claude Code calls the right <code>iapp-mcp</code> tool for you.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="other-mcp-clients-claude-desktop-cursor-">Other MCP clients (Claude Desktop, Cursor, …)<a href="https://iapp.co.th/en/blog/iapp-ai-mcp-server-launch#other-mcp-clients-claude-desktop-cursor-" class="hash-link" aria-label="Direct link to Other MCP clients (Claude Desktop, Cursor, …)" title="Direct link to Other MCP clients (Claude Desktop, Cursor, …)" translate="no">​</a></h3>
<p>Any MCP client works — the server speaks stdio. Drop this into your client's config:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"mcpServers"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"iapp-mcp"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"command"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"uvx"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"args"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"iapp-mcp"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"env"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"IAPP_API_KEY"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"YOUR_API_KEY"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="example-usage">Example usage<a href="https://iapp.co.th/en/blog/iapp-ai-mcp-server-launch#example-usage" class="hash-link" aria-label="Direct link to Example usage" title="Direct link to Example usage" translate="no">​</a></h2>
<p>Once connected — in Claude Code, Claude Desktop, or any other MCP client — just ask in plain Thai or English. No command syntax; the assistant picks the tool.</p>
<p><strong>eKYC and documents</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">อ่านข้อมูลจากบัตรประชาชนในไฟล์ idcard.jpg</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">เช็คว่ารูป selfie.jpg กับ idcard.jpg เป็นคนเดียวกันไหม</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Extract the MRZ data from passport.jpg</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">OCR ใบเสร็จ receipt.jpg แล้วรวมยอดให้หน่อย</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">แปลงเอกสารสแกนนี้เป็นไฟล์ Word</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">สกัดข้อมูลจาก resume.pdf แล้วประเมินความเหมาะสมกับตำแหน่ง</span><br></span></code></pre></div></div>
<p><strong>Speech and language</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">ถอดเสียงไฟล์ประชุม meeting.wav พร้อมระบุว่าใครพูด</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">อ่านข้อความนี้เป็นเสียงพูดด้วยเสียงไข่ต้ม เซฟเป็น speech.wav</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">แปลข้อความนี้เป็นภาษาญี่ปุ่น</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">วิเคราะห์ว่ารีวิวลูกค้าพวกนี้เป็นบวกหรือลบ</span><br></span></code></pre></div></div>
<p><strong>LLM and legal</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">ถาม Chinda Thai LLM ว่า ส้มตำมีกี่แคลอรี่</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ใช้ DeepSeek V4 Flash ช่วยจัดหมวดหมู่ข้อความลูกค้าพวกนี้</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ถามทนอย: สัญญาเช่าบ้านไม่มีลายเซ็นพยานมีผลไหม</span><br></span></code></pre></div></div>
<p><strong>Creative and smart city</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">สร้างรูปแมวใส่ชุดไทยนั่งริมเจ้าพระยา เซฟเป็น cat.png</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Generate a 5-second video of a cat surfing at sunset</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">จัดเส้นทางส่งของ 20 จุดนี้ให้คนขับ 3 คน เริ่มจากคลังสินค้า</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">อ่านป้ายทะเบียนรถจากภาพกล้องวงจรปิด cctv.jpg</span><br></span></code></pre></div></div>
<p>The real win is composition. Ask for <em>"read every receipt in ./expenses, total them by category, and write a summary in Thai"</em> and the assistant chains OCR across the folder, does the arithmetic, and drafts the summary — no glue code from you.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="good-to-know">Good to know<a href="https://iapp.co.th/en/blog/iapp-ai-mcp-server-launch#good-to-know" class="hash-link" aria-label="Direct link to Good to know" title="Direct link to Good to know" translate="no">​</a></h2>
<ul>
<li><strong>Local file paths.</strong> File-based tools take paths on your machine; generated audio, images and video are written to the <code>output_path</code> you name.</li>
<li><strong>Credits.</strong> Most tools consume iApp credits (IC) per call. Each tool's description documents its cost, and Chinda Thai LLM 4B is free.</li>
<li><strong>Seedance video</strong> needs a paid account — any IC package purchase unlocks it.</li>
<li><strong>Context stays small.</strong> Large base64 blobs in API responses (cropped faces, for example) are truncated in tool output.</li>
<li><strong>Python 3.10+</strong> or <strong>Node 18+</strong>.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="links">Links<a href="https://iapp.co.th/en/blog/iapp-ai-mcp-server-launch#links" class="hash-link" aria-label="Direct link to Links" title="Direct link to Links" translate="no">​</a></h2>
<ul>
<li><strong>GitHub:</strong> <a href="https://github.com/iapp-technology/iapp_ai" target="_blank" rel="noopener noreferrer">github.com/iapp-technology/iapp_ai</a></li>
<li><strong>PyPI:</strong> <a href="https://pypi.org/project/iapp-ai/" target="_blank" rel="noopener noreferrer">iapp-ai</a> · <a href="https://pypi.org/project/iapp-mcp/" target="_blank" rel="noopener noreferrer">iapp-mcp</a> · <a href="https://pypi.org/project/iapp-core/" target="_blank" rel="noopener noreferrer">iapp-core</a></li>
<li><strong>npm:</strong> <a href="https://www.npmjs.com/package/iapp-mcp" target="_blank" rel="noopener noreferrer">iapp-mcp</a></li>
<li><strong>API docs:</strong> <a href="https://iapp.co.th/en/docs/intro">iapp.co.th/docs/intro</a></li>
<li><strong>Support:</strong> <a href="mailto:support@iapp.co.th" target="_blank" rel="noopener noreferrer">support@iapp.co.th</a> · <a href="https://discord.gg/kYcpmdEcS2" target="_blank" rel="noopener noreferrer">Discord</a></li>
</ul>]]></content:encoded>
            <category>iApp Technology</category>
            <category>MCP</category>
            <category>API</category>
            <category>Python</category>
            <category>Integration</category>
            <category>Dev Blog</category>
            <category>AI Tools</category>
            <category>Announcement</category>
        </item>
        <item>
            <title><![CDATA[Introducing Chinda 3 — Your Knowledge. Your Servers. Your AI.]]></title>
            <link>https://iapp.co.th/en/blog/chinda3-launch</link>
            <guid>https://iapp.co.th/en/blog/chinda3-launch</guid>
            <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Chinda 3 is iApp's third-generation enterprise AI knowledge platform. PageIndex retrieval reads documents like a human expert, answers in Thai or English with page-level citations, reads CAD files, drafts BOQs from design drawings — in our cloud, on-premise, or fully air-gapped. From from ฿0 (free) / ฿299 per user/month.]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="Chinda 3 — grounded answers with page-level citations" src="https://iapp.co.th/en/assets/images/07-chat-grounded-answer-af147bd682a38fb3fb71c7c757d14325.webp" width="1024" height="768" class="img_ev3q"></p>
<p>Today we are launching <strong>Chinda 3</strong>, the third generation of our enterprise AI knowledge platform — built for organizations whose documents are too sensitive to send away and too complex for keyword search. Chinda 3 reads your company documents the way a human expert does, answers in Thai or English with <strong>page-level citations</strong>, and runs wherever your data is allowed to live: our cloud, your servers, or a fully air-gapped room.</p>
<p><strong>See it in action and explore plans at <a href="https://iapp.co.th/products/chinda3" target="_blank" rel="noopener noreferrer">iapp.co.th/products/chinda3</a></strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="retrieval-that-reads-like-an-expert-not-a-search-box">Retrieval that reads like an expert, not a search box<a href="https://iapp.co.th/en/blog/chinda3-launch#retrieval-that-reads-like-an-expert-not-a-search-box" class="hash-link" aria-label="Direct link to Retrieval that reads like an expert, not a search box" title="Direct link to Retrieval that reads like an expert, not a search box" translate="no">​</a></h2>
<p>Most "chat with your documents" products are built on vector RAG: they shred documents into chunks, embed them, and hope similarity search finds the right fragment. That approach breaks tables, splits legal clauses from their conditions, and regularly confuses look-alike Thai passages.</p>
<p>Chinda 3 is built on <strong>PageIndex</strong> instead. It constructs a tree of every document's real structure — parts, sections, tables, appendices — and then lets the LLM <em>reason</em> its way to the right section, exactly the way your best analyst flips to the right page. Documents stay whole. Answers cite the file and the page. And there is no vector database to deploy, tune, or babysit.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-chinda-3-can-do">What Chinda 3 can do<a href="https://iapp.co.th/en/blog/chinda3-launch#what-chinda-3-can-do" class="hash-link" aria-label="Direct link to What Chinda 3 can do" title="Direct link to What Chinda 3 can do" translate="no">​</a></h2>
<ul>
<li><strong>Answers with citations</strong> — every answer links to the source file and page, in Thai or English, so reviewers can verify instead of trust.</li>
<li><strong>Hierarchical knowledge bases</strong> — organize documents by company, department, and team, with team-based access control, confidentiality tagging, and a full audit trail.</li>
<li><strong>Office editing in the browser</strong> — view and edit Word, Excel, and PowerPoint right inside the platform.</li>
<li><strong>Reads engineering files</strong> — view CAD drawings (DWG/DXF with layers) alongside your documents.</li>
<li><strong>BOQ from design drawings</strong> — vision LLMs read floor plans, blueprints, and design-file images, then draft a Bill of Quantities — materials, quantities, and cost lines ready for estimators to review and export.</li>
<li><strong>Audio &amp; video transcription</strong> — meetings and site recordings become searchable knowledge.</li>
<li><strong>Multi-LLM, your choice</strong> — run Thai-optimized open models on your hardware or connect commercial models; no AI lock-in.</li>
<li><strong>Voice, web search &amp; deep research</strong> — plus an API and webhooks for your own workflows.</li>
</ul>
<p><img decoding="async" loading="lazy" alt="Chinda 3 home — one workspace for your organization&amp;#39;s knowledge" src="https://iapp.co.th/en/assets/images/02-home-page-60d233c26c5d50be1ccd13cd5ae075cd.webp" width="1024" height="768" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="built-for-enterprises-that-cant-send-data-away">Built for enterprises that can't send data away<a href="https://iapp.co.th/en/blog/chinda3-launch#built-for-enterprises-that-cant-send-data-away" class="hash-link" aria-label="Direct link to Built for enterprises that can't send data away" title="Direct link to Built for enterprises that can't send data away" translate="no">​</a></h2>
<p>Banks and insurers keep customer files inside the perimeter. Government agencies and state enterprises meet data-residency rules. Industrial estates and construction firms get contract Q&amp;A with drawings attached — and AI-drafted BOQs that keep quantity surveyors ahead of tender deadlines. Law firms search precedent without exposing client files. In every case, the deployment fits the data: <strong>iApp Cloud, on-premise, or fully air-gapped</strong> — same product, same features.</p>
<p><img decoding="async" loading="lazy" alt="Chinda 3 admin — usage, teams, and model settings under your control" src="https://iapp.co.th/en/assets/images/09-admin-dashboard-ea0dd8b2317c3d90ca812abf66b2396a.webp" width="1024" height="768" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="plans-that-scale-from-one-team-to-the-whole-enterprise">Plans that scale from one team to the whole enterprise<a href="https://iapp.co.th/en/blog/chinda3-launch#plans-that-scale-from-one-team-to-the-whole-enterprise" class="hash-link" aria-label="Direct link to Plans that scale from one team to the whole enterprise" title="Direct link to Plans that scale from one team to the whole enterprise" translate="no">​</a></h2>
<blockquote>
<p><strong>Pricing updated August 2026.</strong> The table below is the lineup as announced in July 2026 and is kept as a record. Current pricing starts at ฿0 for the free tier and ฿299 per user / month — see <a href="https://iapp.co.th/en/products/chinda3">the Chinda 3 page</a>.</p>
</blockquote>
<table><thead><tr><th>Plan</th><th>Price (per user / month)</th><th>Highlights</th></tr></thead><tbody><tr><td><strong>Starter</strong></td><td>฿1,500</td><td>PDF/Word/Excel ingestion, Thai/English Q&amp;A with citations, team knowledge bases, 50K AI tokens</td></tr><tr><td><strong>Professional</strong></td><td>฿2,900</td><td>+ OCR &amp; image understanding, CAD viewing (DXF), 200K AI tokens</td></tr><tr><td><strong>Business</strong></td><td>฿5,900</td><td>+ Full CAD (DWG + layers), audio/video transcription, confidentiality tagging &amp; audit trail, SSO &amp; API, 500K AI tokens</td></tr><tr><td><strong>Enterprise</strong></td><td>฿14,900+</td><td>+ On-premise / air-gapped deployment, SharePoint / Google Drive / ERP connectors, AD/IAM integration</td></tr></tbody></table>
<p>Prefer to own it outright? <strong>Perpetual on-premise licenses start at ฿7.5M.</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="get-started">Get started<a href="https://iapp.co.th/en/blog/chinda3-launch#get-started" class="hash-link" aria-label="Direct link to Get started" title="Direct link to Get started" translate="no">​</a></h2>
<ul>
<li><strong>Product page &amp; demo:</strong> <a href="https://iapp.co.th/products/chinda3" target="_blank" rel="noopener noreferrer">iapp.co.th/products/chinda3</a></li>
<li><strong>Talk to us:</strong> <a href="mailto:sale@iapp.co.th" target="_blank" rel="noopener noreferrer">sale@iapp.co.th</a> · 02-124-4041</li>
</ul>
<p>Chinda 3 is how we believe enterprise AI should work in Thailand: your knowledge, your servers, your AI.</p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>Chinda</category>
            <category>LLM</category>
            <category>RAG</category>
            <category>Enterprise AI</category>
            <category>Announcement</category>
            <category>Thai AI</category>
        </item>
        <item>
            <title><![CDATA[Introducing the iApp eKYC SDK — Free, Open-Source Identity Verification for Flutter & Web]]></title>
            <link>https://iapp.co.th/en/blog/iapp-ekyc-sdk-launch</link>
            <guid>https://iapp.co.th/en/blog/iapp-ekyc-sdk-launch</guid>
            <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The iApp eKYC SDK is free and open source: automatic Thai ID, passport, and driver-license capture, plus the new Face Active Liveness Detection API with cryptographically signed verdicts. A complete identity verification costs about ฿3.2 — integrate it in an afternoon.]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="iApp eKYC — automatic document capture and face liveness" src="https://iapp.co.th/en/assets/images/hero-b8a7f151db776ef71c60409bbc3e30ef.webp" width="821" height="762" class="img_ev3q"></p>
<p>Today we are releasing the <strong>iApp eKYC SDK</strong> — a free, Apache-2.0 open-source SDK for <strong>Flutter and Web</strong> that turns our battle-tested eKYC APIs into a complete, drop-in identity-verification experience. Alongside it, we are launching a brand-new API product: <strong>Face Active Liveness Detection</strong>, which returns a cryptographically signed verdict your backend can verify independently.</p>
<p><strong>Try it right now in your browser at <a href="https://iapp.co.th/ekyc-demo" target="_blank" rel="noopener noreferrer">iapp.co.th/ekyc-demo</a></strong> — no installation, no signup needed to watch it work.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-an-sdk">Why an SDK?<a href="https://iapp.co.th/en/blog/iapp-ekyc-sdk-launch#why-an-sdk" class="hash-link" aria-label="Direct link to Why an SDK?" title="Direct link to Why an SDK?" translate="no">​</a></h2>
<p>Our eKYC APIs have served banks, insurers, and fintechs for years — but every customer had to rebuild the same hard client-side pieces: camera handling, document framing, blur rejection, liveness challenge UX. That is months of work before the first API call ever fires.</p>
<p>The iApp eKYC SDK ships all of it, tuned on real Thai documents, for free. You bring an API key; the SDK does the rest. You pay only for the API calls it makes.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="automatic-document-capture-that-just-works">Automatic document capture that just works<a href="https://iapp.co.th/en/blog/iapp-ekyc-sdk-launch#automatic-document-capture-that-just-works" class="hash-link" aria-label="Direct link to Automatic document capture that just works" title="Direct link to Automatic document capture that just works" translate="no">​</a></h2>
<p>Point the camera at a document and the SDK does the thinking:</p>
<ul>
<li><strong>Six document types</strong> — Thai National ID (front and back), Thai driver license, passport, bank passbook, and photographed ID with signature.</li>
<li><strong>Hold still, snap</strong> — the SDK detects the card in the guide frame, waits for a brief hold-still, and captures automatically. No shutter button, no fumbling.</li>
<li><strong>Per-document HUD overlays</strong> — an on-screen schematic of each card type (photo position, chip, flag, MRZ) so users align the document correctly on the first try.</li>
<li><strong>Shutter effect and freeze-frame</strong> — users see exactly the image being submitted while it uploads.</li>
<li><strong>Empty-frame safe</strong> — the capture pipeline arms only when a document actually enters the frame, so a face, a desk, or a blank wall never triggers a false submission.</li>
</ul>
<p>Behind the scenes is an OpenCV pipeline that survives real-world conditions: glare, faded laser-print on ID card backs, and documents held by hand at the frame edge.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="new-product-face-active-liveness-detection">New product: Face Active Liveness Detection<a href="https://iapp.co.th/en/blog/iapp-ekyc-sdk-launch#new-product-face-active-liveness-detection" class="hash-link" aria-label="Direct link to New product: Face Active Liveness Detection" title="Direct link to New product: Face Active Liveness Detection" translate="no">​</a></h2>
<p>Passive liveness inspects a single selfie. <strong>Active liveness proves a live, cooperative person is present</strong>: the SDK issues randomized on-device challenges — blink, turn left, turn right, smile — tracks them with on-device face landmarks (glasses-friendly adaptive blink detection included), selects the sharpest frontal frame, and submits it with the full challenge log.</p>
<p>The server re-verifies the selfie with our iBeta PAD Level 1 certified anti-spoofing engine and returns a <strong>signed verdict</strong>:</p>
<ul>
<li>HMAC-SHA256 signature over the whole verdict — a modified client cannot forge a "passed" result</li>
<li>The selfie's SHA-256 inside the signed payload binds the image to the verdict</li>
<li>Challenge-log validation catches replayed or fabricated sessions</li>
<li><strong>1 IC per request</strong>, billed on completed checks whether the verdict is pass or fail</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="face-verification-and-passive-liveness-made-easy">Face verification and passive liveness, made easy<a href="https://iapp.co.th/en/blog/iapp-ekyc-sdk-launch#face-verification-and-passive-liveness-made-easy" class="hash-link" aria-label="Direct link to Face verification and passive liveness, made easy" title="Direct link to Face verification and passive liveness, made easy" translate="no">​</a></h2>
<p>The SDK also wraps our existing face APIs with one-call helpers: <code>captureFace()</code> auto-snaps a frontal selfie from the camera, and <code>verifyFaces()</code> / <code>checkPassiveLiveness()</code> submit it — perfect for a compare-two-faces or single-shot anti-spoofing flow.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="integrate-in-about-ten-lines">Integrate in about ten lines<a href="https://iapp.co.th/en/blog/iapp-ekyc-sdk-launch#integrate-in-about-ten-lines" class="hash-link" aria-label="Direct link to Integrate in about ten lines" title="Direct link to Integrate in about ten lines" translate="no">​</a></h2>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">script</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">src</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">https://iapp.co.th/sdk/ekyc-sdk.umd.js</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token script"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token script language-javascript keyword" style="color:#00009f">const</span><span class="token script language-javascript"> ekyc </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript keyword" style="color:#00009f">new</span><span class="token script language-javascript"> </span><span class="token script language-javascript class-name">IappEkyc</span><span class="token script language-javascript class-name punctuation" style="color:#393A34">.</span><span class="token script language-javascript class-name">IappEkyc</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"> </span><span class="token script language-javascript literal-property property" style="color:#36acaa">apiKey</span><span class="token script language-javascript operator" style="color:#393A34">:</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">'YOUR_API_KEY'</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token script language-javascript keyword" style="color:#00009f">const</span><span class="token script language-javascript"> result </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript keyword control-flow" style="color:#00009f">await</span><span class="token script language-javascript"> ekyc</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">captureDocument</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">    </span><span class="token script language-javascript literal-property property" style="color:#36acaa">mount</span><span class="token script language-javascript operator" style="color:#393A34">:</span><span class="token script language-javascript"> </span><span class="token script language-javascript dom variable" style="color:#36acaa">document</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">getElementById</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript string" style="color:#e3116c">'camera'</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">    </span><span class="token script language-javascript literal-property property" style="color:#36acaa">documentType</span><span class="token script language-javascript operator" style="color:#393A34">:</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">'thaiIdFront'</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">    </span><span class="token script language-javascript literal-property property" style="color:#36acaa">locale</span><span class="token script language-javascript operator" style="color:#393A34">:</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">'th'</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token script language-javascript console class-name">console</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">log</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript">result</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript property-access">raw</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"> </span><span class="token script language-javascript comment" style="color:#999988;font-style:italic">// structured ID card fields</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<p>Prefer npm? <code>npm install @iapp-technology/ekyc-sdk</code>. On mobile, the Flutter package exposes the same API surface. The UI speaks <strong>Thai, English, and Chinese</strong> out of the box, with a customizable light-blue theme.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-it-costs">What it costs<a href="https://iapp.co.th/en/blog/iapp-ekyc-sdk-launch#what-it-costs" class="hash-link" aria-label="Direct link to What it costs" title="Direct link to What it costs" translate="no">​</a></h2>
<p>Nothing for the SDK — and the APIs are pay-as-you-go with no minimums:</p>
<table><thead><tr><th>API</th><th>Price</th></tr></thead><tbody><tr><td>Thai National ID OCR (front / back)</td><td>1.25 / 0.75 IC per page</td></tr><tr><td>Passport OCR</td><td>0.75 IC per page</td></tr><tr><td>Face Verification</td><td>0.3 IC per request</td></tr><tr><td>Face Passive Liveness</td><td>0.3 IC per request</td></tr><tr><td><strong>Face Active Liveness (signed verdict)</strong></td><td><strong>1 IC per request</strong></td></tr></tbody></table>
<p>A complete onboarding — ID OCR + active liveness + face verification — is <strong>2.55 IC, about ฿3.2</strong>. New accounts get <strong>50 IC free</strong>, enough for roughly 19 full verifications, no credit card required.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="get-started">Get started<a href="https://iapp.co.th/en/blog/iapp-ekyc-sdk-launch#get-started" class="hash-link" aria-label="Direct link to Get started" title="Direct link to Get started" translate="no">​</a></h2>
<ol>
<li><strong>Watch it work:</strong> <a href="https://iapp.co.th/ekyc-demo" target="_blank" rel="noopener noreferrer">live demo</a></li>
<li><strong>Read the docs:</strong> <a href="https://iapp.co.th/docs/ekyc/sdk/getting-started" target="_blank" rel="noopener noreferrer">SDK getting started</a></li>
<li><strong>Get the code:</strong> <a href="https://github.com/iapp-technology/iapp-ekyc-sdk" target="_blank" rel="noopener noreferrer">github.com/iapp-technology/iapp-ekyc-sdk</a></li>
<li><strong>Create your free API key:</strong> <a href="https://iapp.co.th/register" target="_blank" rel="noopener noreferrer">iapp.co.th/register</a></li>
</ol>
<p>We built this SDK so that adding bank-grade identity verification to a Thai app takes an afternoon, not a quarter. Stars, issues, and pull requests are very welcome.</p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>eKYC</category>
            <category>SDK</category>
            <category>Open Source</category>
            <category>Announcement</category>
            <category>Thai AI</category>
            <category>Face Recognition</category>
            <category>OCR</category>
        </item>
        <item>
            <title><![CDATA[Introducing ChindaTTS — Production Thai-English Text-to-Speech, Now Live]]></title>
            <link>https://iapp.co.th/en/blog/chindatts-launch</link>
            <guid>https://iapp.co.th/en/blog/chindatts-launch</guid>
            <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[ChindaTTS is our production neural Thai + English text-to-speech: 2 natural voices, 8 speaking styles, voice cloning, correct numbers and code-switching, and streaming under one second. Hear it on the ChindaTTS page.]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="ChindaTTS — Natural Thai speech: tone, numbers, code-switching" src="https://iapp.co.th/en/assets/images/hero-7b36258a9379e57597653fc9d7c0fad4.png" width="1600" height="900" class="img_ev3q"></p>
<p>Today we are launching <strong>ChindaTTS</strong>, our production neural <strong>Thai + English text-to-speech</strong> engine. It speaks natural Thai with correct prosody, reads numbers, dates, money and code-switched text the way a person would, handles long-form narration cleanly, and can clone a voice from a short consented sample — all behind an API that is drop-in compatible with iApp TTS v3.</p>
<p><strong>Hear both voices on the <a href="https://iapp.co.th/en/products/chindaTTS#hear-it">ChindaTTS page</a></strong>, and try every style in the <a href="https://iapp.co.th/en/docs/speech/text-to-speech/text-to-speech-v3">API demo</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-chindatts">Why ChindaTTS<a href="https://iapp.co.th/en/blog/chindatts-launch#why-chindatts" class="hash-link" aria-label="Direct link to Why ChindaTTS" title="Direct link to Why ChindaTTS" translate="no">​</a></h2>
<p>General-purpose TTS has always treated Thai as an afterthought — wrong tones, mangled final consonants, robotic delivery, and a complete inability to mix Thai with English. ChindaTTS was built for Thai from the ground up. The result is speech that sounds like a real Thai speaker, even when the sentence is full of numbers, English loanwords, and brand names.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-it-does">What it does<a href="https://iapp.co.th/en/blog/chindatts-launch#what-it-does" class="hash-link" aria-label="Direct link to What it does" title="Direct link to What it does" translate="no">​</a></h2>
<ul>
<li><strong>Thai + English + code-switch in one request.</strong> The text frontend reads numbers, dates, currency, percentages, phone/ID runs, abbreviations, emails, URLs, ALL-CAPS emphasis, and English tech loanwords naturally.</li>
<li><strong>Correct central-Thai accent.</strong> Pure-English passages automatically switch to a native-English mode, per sentence.</li>
<li><strong>Long-form, spoken in full</strong> — no run-on, no cut-off — up to ~100 seconds per request.</li>
<li><strong>2 voices</strong> (Kaitom, Kaimook) × <strong>8 speaking styles</strong> (neutral, friendly, cheerful, calm, serious, sad, excited, empathetic).</li>
<li><strong>Voice cloning</strong> from ~10–20 seconds of consented audio; stateless — used once, never stored.</li>
<li><strong>Streaming</strong> — first audio in under ~1 second; drop-in iApp v3 endpoint.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="hear-it-for-yourself">Hear it for yourself<a href="https://iapp.co.th/en/blog/chindatts-launch#hear-it-for-yourself" class="hash-link" aria-label="Direct link to Hear it for yourself" title="Direct link to Hear it for yourself" translate="no">​</a></h2>
<p>These are real, unedited ChindaTTS samples. Every style and live voice cloning can be tried in the <strong><a href="https://iapp.co.th/en/docs/speech/text-to-speech/text-to-speech-v3">API demo</a></strong>.</p>
<p><strong>The main voices</strong></p>
<p><em>Kaitom (flagship):</em></p>
<audio controls="" preload="none" src="/audio/chindatts/01-kaitom.mp3">Your browser does not support the audio element.</audio>
<p><em>Kaimook (female):</em></p>
<audio controls="" preload="none" src="/audio/chindatts/03-kaimook.mp3">Your browser does not support the audio element.</audio>
<p><strong>Numbers, dates and money — read correctly</strong></p>
<audio controls="" preload="none" src="/audio/chindatts/04-numbers.mp3">Your browser does not support the audio element.</audio>
<p><strong>Thai + English code-switching</strong></p>
<audio controls="" preload="none" src="/audio/chindatts/15-mixed.mp3">Your browser does not support the audio element.</audio>
<p><strong>Speaking styles</strong> (same engine, different delivery)</p>
<p><em>Cheerful:</em></p>
<audio controls="" preload="none" src="/audio/chindatts/07-cheerful.mp3">Your browser does not support the audio element.</audio>
<p><em>Calm:</em></p>
<audio controls="" preload="none" src="/audio/chindatts/08-calm.mp3">Your browser does not support the audio element.</audio>
<p><em>Empathetic:</em></p>
<audio controls="" preload="none" src="/audio/chindatts/12-empathetic.mp3">Your browser does not support the audio element.</audio>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="chindatts-prime-optional">ChindaTTS Prime (optional)<a href="https://iapp.co.th/en/blog/chindatts-launch#chindatts-prime-optional" class="hash-link" aria-label="Direct link to ChindaTTS Prime (optional)" title="Direct link to ChindaTTS Prime (optional)" translate="no">​</a></h2>
<p>ChindaTTS Prime adds a speech-recognition gate that re-rolls a garbled or cut take — it <strong>selects</strong> a better take, it does not alter the audio. Same sound; the gain is <strong>stability on hard inputs</strong>, especially expressive styles.</p>
<table><thead><tr><th>Metric — CER (lower is better)</th><th>ChindaTTS</th><th>ChindaTTS Prime</th></tr></thead><tbody><tr><td>Everyday text</td><td>3.2%</td><td>3.2%</td></tr><tr><td>Numbers / dates / currency</td><td>1.8%</td><td><strong>1.4%</strong></td></tr><tr><td>Code-switch</td><td>7.9%</td><td><strong>7.6%</strong></td></tr><tr><td>Expressive styles</td><td>8.3%</td><td><strong>3.9%</strong></td></tr><tr><td>Bad-take rate (styles)</td><td>15.0%</td><td><strong>6.7%</strong></td></tr><tr><td>Worst-case p90 (styles)</td><td>31.8%</td><td><strong>11.4%</strong></td></tr></tbody></table>
<p>Everyday text already sits at the recognizer noise floor; Prime's value shows up on expressive styles, cutting the bad-take rate by more than half.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="speed-per-gpu-67-real-time">Speed (per GPU, ~6–7× real-time)<a href="https://iapp.co.th/en/blog/chindatts-launch#speed-per-gpu-67-real-time" class="hash-link" aria-label="Direct link to Speed (per GPU, ~6–7× real-time)" title="Direct link to Speed (per GPU, ~6–7× real-time)" translate="no">​</a></h2>
<table><thead><tr><th>Request</th><th>Audio</th><th>Processing</th></tr></thead><tbody><tr><td>~100 chars</td><td>~9 s</td><td>~1.5 s</td></tr><tr><td>~300 chars</td><td>~25 s</td><td>~4 s</td></tr><tr><td>~1000 chars</td><td>~90 s</td><td>~14 s</td></tr></tbody></table>
<p>Streaming delivers first audio in under ~1 second, and throughput scales by adding GPUs.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="where-it-fits">Where it fits<a href="https://iapp.co.th/en/blog/chindatts-launch#where-it-fits" class="hash-link" aria-label="Direct link to Where it fits" title="Direct link to Where it fits" translate="no">​</a></h2>
<p>Voice assistants and IVR, in-app and announcement narration, accessibility, e-learning, notifications, and any product that needs a natural Thai voice that also handles English without breaking stride.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="spread-the-word">Spread the word<a href="https://iapp.co.th/en/blog/chindatts-launch#spread-the-word" class="hash-link" aria-label="Direct link to Spread the word" title="Direct link to Spread the word" translate="no">​</a></h2>
<div style="text-align:center"><img src="https://iapp.co.th/img/chindatts/chindatts-facebook.png" alt="ChindaTTS is now live — by iApp Technology" style="width:100%;max-width:540px;border-radius:16px"></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="try-chindatts">Try ChindaTTS<a href="https://iapp.co.th/en/blog/chindatts-launch#try-chindatts" class="hash-link" aria-label="Direct link to Try ChindaTTS" title="Direct link to Try ChindaTTS" translate="no">​</a></h2>
<ul>
<li><strong>Listen to the samples:</strong> <a href="https://iapp.co.th/en/products/chindaTTS#hear-it">ChindaTTS</a></li>
<li><strong>Product page &amp; specs:</strong> <a href="https://iapp.co.th/en/products/chindaTTS">iapp.co.th/products/chindaTTS</a></li>
<li><strong>Talk to us about a pilot:</strong> <a href="mailto:sale@iapp.co.th" target="_blank" rel="noopener noreferrer">sale@iapp.co.th</a></li>
</ul>
<p>ChindaTTS is production-ready for pilots today — voices, cloning, streaming, the iApp v3 API, and Prime are all live and tested. We can't wait to hear what you build with it.</p>]]></content:encoded>
            <category>iApp Technology</category>
            <category>Text to Speech</category>
            <category>Voice</category>
            <category>AI</category>
            <category>Announcement</category>
            <category>Thai AI</category>
        </item>
    </channel>
</rss>