{"info":{"_postman_id":"630598da-34e4-498c-8518-31de9823a4e2","name":"Developer requests","description":"<html><head></head><body><p>A collection of API requests for interacting with Learngual's development tools to build robust language learning applications.</p>\n<p>Don't have an account? <a href=\"https://learngual.com/auth/sign-up\">Click to get Started</a></p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"30010546","collectionId":"630598da-34e4-498c-8518-31de9823a4e2","publishedId":"2s9YJW6mES","public":true,"customColor":{"top-bar":"FFF9E7","right-sidebar":"000","highlight":"099"},"publishDate":"2024-02-26T20:21:40.000Z"},"item":[{"name":"Learngual API integration","item":[{"name":"Speech analysis","item":[{"name":"Speech analysis","event":[{"listen":"test","script":{"id":"2038250b-6bf9-4a8f-a9f5-fc4c33c57d4a","exec":["json = pm.response.json()","","if (json?.task_id){","    pm.collectionVariables.set(\"task_id\",json.task_id)","}"],"type":"text/javascript","packages":{}}},{"listen":"prerequest","script":{"id":"f8ad67ef-a95c-4fc4-8010-0964daf651fb","exec":[""],"type":"text/javascript","packages":{}}}],"id":"d1a7e8d2-2127-48c8-92ab-1954d3c0e08a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"api-key","value":"{{api-key}}"}],"body":{"mode":"formdata","formdata":[{"key":"reference_text","value":"administration","description":"<p>only optional if unscripted is false</p>\n","type":"text"},{"key":"audio_data","type":"file","src":"postman-cloud:///1eed2266-4031-4d60-8db3-031c829325ed"},{"key":"language","value":"English","description":"<p>optional: fr, en</p>\n","type":"text"},{"key":"scripted","value":"true","description":"<p>optional: </p>\n","type":"text"},{"key":"prompt","value":"Tell me about your holiday.","description":"<p>optional: </p>\n","type":"text","disabled":true},{"key":"callback_url","value":"http://gabriel.net","type":"text","disabled":true},{"key":"correct_reference","value":"true","type":"text","uuid":"1fd33d4a-13fe-4678-a3a3-be6614f65ed6","disabled":true}]},"url":"{{url}}/speech-analysis/","description":"<h2 id=\"purpose\">Purpose</h2>\n<p>Submits an audio file to the speech service for transcription and analysis.</p>\n<p>This endpoint is called using <strong><code>multipart/form-data</code></strong>, meaning the audio is sent <strong>inside the HTTP request body</strong> as a <strong>file field</strong> named <code>audio_data</code>, along with additional form fields that control processing behavior.</p>\n<p>The <code>scripted</code> field determines the processing mode:</p>\n<ul>\n<li><p><strong>Scripted mode (<strong><strong><code>scripted=true</code></strong></strong>)</strong>: compares the spoken audio against a provided <code>reference_text</code>.</p>\n</li>\n<li><p><strong>Unscripted mode (<strong><strong><code>scripted=false</code></strong></strong>)</strong>: transcribes the audio freely (no reference text), optionally applying grammar/polish via <code>correct_reference</code>.</p>\n</li>\n</ul>\n<p>If <code>callback_url</code> is provided, results may be delivered asynchronously to that URL once processing completes.</p>\n<hr />\n<h2 id=\"request-format\">Request format</h2>\n<ul>\n<li><p><strong>Method:</strong> <code>POST</code></p>\n</li>\n<li><p><strong>Content-Type:</strong> <code>multipart/form-data</code></p>\n</li>\n<li><p><strong>Body:</strong> multipart form-data fields (file + text fields)</p>\n</li>\n</ul>\n<hr />\n<h2 id=\"request-body-fields\">Request body fields</h2>\n<h3 id=\"audio_data\"><code>audio_data</code></h3>\n<ul>\n<li><p><strong>Type:</strong> file</p>\n</li>\n<li><p><strong>Required:</strong> Yes</p>\n</li>\n<li><p><strong>Description:</strong> The audio file to be analyzed. Attach the file as a multipart file field named <code>audio_data</code>.</p>\n</li>\n<li><p><strong>Constraint:</strong> Maximum file size is <strong>20 MB</strong>.</p>\n</li>\n</ul>\n<h3 id=\"language\"><code>language</code></h3>\n<ul>\n<li><p><strong>Type:</strong> string</p>\n</li>\n<li><p><strong>Required:</strong> Yes</p>\n</li>\n<li><p><strong>Description:</strong> The spoken language in the audio.</p>\n</li>\n<li><p><strong>Allowed values (current):</strong> <code>\"English\"</code></p>\n</li>\n<li><p><strong>Coming soon:</strong> <code>\"French\"</code></p>\n</li>\n</ul>\n<h3 id=\"scripted\"><code>scripted</code></h3>\n<ul>\n<li><p><strong>Type:</strong> boolean</p>\n</li>\n<li><p><strong>Required:</strong> Yes</p>\n</li>\n<li><p><strong>Description:</strong> Selects how the audio is processed.</p>\n<ul>\n<li><p><code>true</code> — Scripted processing: compare audio against <code>reference_text</code>.</p>\n</li>\n<li><p><code>false</code> — Unscripted processing: transcribe audio without a reference.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"reference_text\"><code>reference_text</code></h3>\n<ul>\n<li><p><strong>Type:</strong> string</p>\n</li>\n<li><p><strong>Required:</strong> Conditional</p>\n</li>\n<li><p><strong>Description:</strong> The expected text used for scripted comparison (word, phrase, or passage the speaker is intended to read).</p>\n</li>\n<li><p><strong>Rules:</strong></p>\n<ul>\n<li><p><strong>Required when</strong> <code>scripted=true</code></p>\n</li>\n<li><p><strong>Must be omitted when</strong> <code>scripted=false</code></p>\n</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"correct_reference\"><code>correct_reference</code></h3>\n<ul>\n<li><p><strong>Type:</strong> boolean</p>\n</li>\n<li><p><strong>Required:</strong> No</p>\n</li>\n<li><p><strong>Description:</strong> Enables grammar/polish to improve readability of the <strong>unscripted</strong> transcription.</p>\n</li>\n<li><p><strong>Rules:</strong></p>\n<ul>\n<li><p><strong>Only valid when</strong> <code>scripted=false</code></p>\n</li>\n<li><p><strong>Not allowed when</strong> <code>scripted=true</code></p>\n</li>\n</ul>\n</li>\n<li><p><strong>Default:</strong> <code>true</code> (in unscripted mode)</p>\n</li>\n</ul>\n<h3 id=\"prompt\"><code>prompt</code></h3>\n<ul>\n<li><p><strong>Type:</strong> string</p>\n</li>\n<li><p><strong>Required:</strong> No</p>\n</li>\n<li><p><strong>Description:</strong> Optional instruction or context to guide transcription output (tone, formatting, or focus). Intended for unscripted processing.</p>\n</li>\n</ul>\n<h3 id=\"callback_url\"><code>callback_url</code></h3>\n<ul>\n<li><p><strong>Type:</strong> string (URL)</p>\n</li>\n<li><p><strong>Required:</strong> No</p>\n</li>\n<li><p><strong>Description:</strong> Optional webhook URL that receives results when processing completes. Use this when the client cannot (or should not) keep the connection open.</p>\n</li>\n</ul>\n<hr />\n<h2 id=\"processing-modes\">Processing modes</h2>\n<h3 id=\"scripted-mode-scriptedtrue\">Scripted mode (<code>scripted=true</code>)</h3>\n<p>Use this mode when you want to measure how closely the speaker’s audio matches a known expected text.</p>\n<p><strong>Requirements</strong></p>\n<ul>\n<li><p><code>reference_text</code> must be provided.</p>\n</li>\n<li><p><code>correct_reference</code> must not be included.</p>\n</li>\n</ul>\n<p><strong>Behavior</strong></p>\n<ul>\n<li>The service evaluates alignment between the audio and <code>reference_text</code> and produces transcription/analysis relative to that reference.</li>\n</ul>\n<hr />\n<h3 id=\"unscripted-mode-scriptedfalse\">Unscripted mode (<code>scripted=false</code>)</h3>\n<p>Use this mode when you want a free transcription without a provided script.</p>\n<p><strong>Requirements</strong></p>\n<ul>\n<li><p><code>reference_text</code> must not be included.</p>\n</li>\n<li><p><code>correct_reference</code> may be included (optional).</p>\n</li>\n</ul>\n<p><strong>Behavior</strong></p>\n<ul>\n<li><p>The service generates a transcription directly from the audio.</p>\n</li>\n<li><p>If <code>correct_reference=true</code>, grammar/polish may be applied to improve readability.</p>\n</li>\n</ul>\n<hr />\n<h2 id=\"validation-rules-and-constraints\">Validation rules and constraints</h2>\n<ul>\n<li><p><strong>Maximum upload size:</strong> 20 MB per request (<code>audio_data</code>).</p>\n</li>\n<li><p><strong>Mode constraints:</strong></p>\n<ul>\n<li><p><code>scripted=true</code> ⇒ <code>reference_text</code> required, <code>correct_reference</code> not allowed</p>\n</li>\n<li><p><code>scripted=false</code> ⇒ <code>reference_text</code> must be omitted, <code>correct_reference</code> allowed</p>\n</li>\n</ul>\n</li>\n<li><p><strong>Plan-based limits:</strong> maximum supported audio duration and usage limits depend on the subscription plan.</p>\n</li>\n<li><p><strong>Language support:</strong> only <code>\"English\"</code> is supported currently; more languages will be introduced over time.</p>\n</li>\n</ul>\n","urlObject":{"path":["speech-analysis",""],"host":["{{url}}"],"query":[{"disabled":true,"key":"api-key","value":"{{api-key}}"}],"variable":[]}},"response":[{"id":"17d387f5-8635-4d09-a6fa-0734d312ee1c","name":"Speech analysis","originalRequest":{"method":"POST","header":[{"key":"account","value":"{{account_id}}","description":"231e2ac390","disabled":true},{"key":"api-key","value":"","disabled":true},{"key":"api-key","value":"{{api-key}}"}],"body":{"mode":"formdata","formdata":[{"key":"reference_text","value":"administration","description":"only optional if unscripted is false","type":"text"},{"key":"audio_data","type":"file","src":"postman-cloud:///1eed2266-4031-4d60-8db3-031c829325ed"},{"key":"language","value":"English","description":"optional: fr, en","type":"text"},{"key":"scripted","value":"true","description":"optional: ","type":"text"},{"key":"prompt","value":"Tell me about your holiday.","description":"optional: ","type":"text","disabled":true},{"key":"callback_url","value":"http://billy.com","type":"text","disabled":true},{"key":"correct_reference","value":"true","type":"text","uuid":"1fd33d4a-13fe-4678-a3a3-be6614f65ed6","disabled":true}]},"url":{"raw":"{{url}}/speech-analysis/","host":["{{url}}"],"path":["speech-analysis",""],"query":[{"key":"api-key","value":"{{api-key}}","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.18.0 (Ubuntu)"},{"key":"Date","value":"Sun, 21 Dec 2025 19:19:37 GMT"},{"key":"Content-Type","value":"application/json","description":""},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Accept, Accept-Language, Cookie, origin"},{"key":"Allow","value":"POST, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Language","value":"en"},{"key":"Strict-Transport-Security","value":"max-age=60; includeSubDomains; preload"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"Reference\": \"administration\",\n    \"Hypothesis\": \"administration\",\n    \"General Score\": 92,\n    \"Speech Rate\": 78.94736842105263,\n    \"Audibility\": 86.36084909836867,\n    \"Word Phonetic Evaluation\": {\n        \"1\": {\n            \"Word\": \"ADMINISTRATION\",\n            \"Word Meaning\": [],\n            \"Synonyms\": [],\n            \"Antonyms\": [],\n            \"Syllables\": [\n                {\n                    \"Onset\": \"EMPTY\",\n                    \"Nucleus\": \"AE\",\n                    \"Coda\": \"D\",\n                    \"isShort\": true,\n                    \"isLight\": false,\n                    \"Stress\": \"No\",\n                    \"Syllabic Score\": 100\n                },\n                {\n                    \"Onset\": \"M\",\n                    \"Nucleus\": \"IH\",\n                    \"Coda\": \"EMPTY\",\n                    \"isShort\": true,\n                    \"isLight\": true,\n                    \"Stress\": \"Secondary\",\n                    \"Syllabic Score\": 100\n                },\n                {\n                    \"Onset\": \"N\",\n                    \"Nucleus\": \"IH\",\n                    \"Coda\": \"EMPTY\",\n                    \"isShort\": true,\n                    \"isLight\": true,\n                    \"Stress\": \"No\",\n                    \"Syllabic Score\": 100\n                },\n                {\n                    \"Onset\": \"STR\",\n                    \"Nucleus\": \"EY\",\n                    \"Coda\": \"EMPTY\",\n                    \"isShort\": false,\n                    \"isLight\": false,\n                    \"Stress\": \"Primary\",\n                    \"Syllabic Score\": 100\n                },\n                {\n                    \"Onset\": \"SH\",\n                    \"Nucleus\": \"AH\",\n                    \"Coda\": \"N\",\n                    \"isShort\": true,\n                    \"isLight\": false,\n                    \"Stress\": \"No\",\n                    \"Syllabic Score\": 99\n                }\n            ],\n            \"Word Score\": 100,\n            \"Number Of Syllables\": 5,\n            \"Phoneme Phonetic Evaluation\": {\n                \"1\": {\n                    \"Phoneme (Grapheme)\": \"AE\",\n                    \"Score\": 100,\n                    \"Duration\": \"0.05 secs\",\n                    \"Grade\": \"Excellent\",\n                    \"Phoneme Feedback Summary\": \"Perfect pronunciation!\",\n                    \"Phoneme Feedback\": \"The 'AE' sound was pronounced with perfect clarity and accuracy.\",\n                    \"Phoneme\": \"AE\",\n                    \"IPA\": \"æ\",\n                    \"Example\": \"at\",\n                    \"Translation\": \"AE T\",\n                    \"Class\": \"VOWEL\",\n                    \"Voice\": \"VOICED\",\n                    \"Articulator\": \"\",\n                    \"Airstream Mechanism\": \"\",\n                    \"Other Examples\": [\n                        \"videocassette\",\n                        \"blanken\",\n                        \"harring\",\n                        \"caltrain\",\n                        \"mollohan\",\n                        \"lana\",\n                        \"forecasted\",\n                        \"salmond\",\n                        \"slashes\",\n                        \"uliassi's\",\n                        \"magazine's\"\n                    ]\n                },\n                \"2\": {\n                    \"Phoneme (Grapheme)\": \"D\",\n                    \"Score\": 100,\n                    \"Duration\": \"0.07 secs\",\n                    \"Grade\": \"Excellent\",\n                    \"Phoneme Feedback Summary\": \"Perfect pronunciation!\",\n                    \"Phoneme Feedback\": \"The 'D' sound was pronounced with perfect clarity and accuracy.\",\n                    \"Phoneme\": \"D\",\n                    \"IPA\": \"d\",\n                    \"Example\": \"dee\",\n                    \"Translation\": \"D IY\",\n                    \"Class\": \"STOP (CONSONANT)\",\n                    \"Voice\": \"VOICED\",\n                    \"Articulator\": \"ALVEOLAR\",\n                    \"Airstream Mechanism\": \"PLOSIVE\",\n                    \"Other Examples\": [\n                        \"seinfeld\",\n                        \"allowed\",\n                        \"hinted\",\n                        \"forebode\",\n                        \"doctors\",\n                        \"yandle\",\n                        \"high-spiritedness\",\n                        \"dullest\",\n                        \"pandered\",\n                        \"diversionary\",\n                        \"cold-blooded\"\n                    ]\n                },\n                \"3\": {\n                    \"Phoneme (Grapheme)\": \"M\",\n                    \"Score\": 100,\n                    \"Duration\": \"0.07 secs\",\n                    \"Grade\": \"Excellent\",\n                    \"Phoneme Feedback Summary\": \"Perfect pronunciation!\",\n                    \"Phoneme Feedback\": \"The 'M' sound was pronounced with perfect clarity and accuracy.\",\n                    \"Phoneme\": \"M\",\n                    \"IPA\": \"m\",\n                    \"Example\": \"me\",\n                    \"Translation\": \"M IY\",\n                    \"Class\": \"NASAL (CONSONANT)\",\n                    \"Voice\": \"VOICED\",\n                    \"Articulator\": \"BILABIAL\",\n                    \"Airstream Mechanism\": \"NASAL\",\n                    \"Other Examples\": [\n                        \"yogiisms\",\n                        \"misprint\",\n                        \"immunities\",\n                        \"macrame\",\n                        \"elmootazbellah\",\n                        \"minstrels\",\n                        \"muehlbauer\",\n                        \"backgammon\",\n                        \"predominance\",\n                        \"broomstick\",\n                        \"melodramatic\"\n                    ]\n                },\n                \"4\": {\n                    \"Phoneme (Grapheme)\": \"IH\",\n                    \"Score\": 100,\n                    \"Duration\": \"0.06 secs\",\n                    \"Grade\": \"Excellent\",\n                    \"Phoneme Feedback Summary\": \"Perfect pronunciation!\",\n                    \"Phoneme Feedback\": \"The 'IH' sound was pronounced with perfect clarity and accuracy.\",\n                    \"Phoneme\": \"IH\",\n                    \"IPA\": \"i\",\n                    \"Example\": \"it\",\n                    \"Translation\": \"IH T\",\n                    \"Class\": \"VOWEL\",\n                    \"Voice\": \"VOICED\",\n                    \"Articulator\": \"\",\n                    \"Airstream Mechanism\": \"\",\n                    \"Other Examples\": [\n                        \"cowlicks\",\n                        \"finances\",\n                        \"assassinating\",\n                        \"polymerase\",\n                        \"averted\",\n                        \"distrustful\",\n                        \"illiquid\",\n                        \"leadership\",\n                        \"imbued\",\n                        \"witucki\",\n                        \"intellectual\"\n                    ]\n                },\n                \"5\": {\n                    \"Phoneme (Grapheme)\": \"N\",\n                    \"Score\": 100,\n                    \"Duration\": \"0.05 secs\",\n                    \"Grade\": \"Excellent\",\n                    \"Phoneme Feedback Summary\": \"Perfect pronunciation!\",\n                    \"Phoneme Feedback\": \"The 'N' sound was pronounced with perfect clarity and accuracy.\",\n                    \"Phoneme\": \"N\",\n                    \"IPA\": \"n\",\n                    \"Example\": \"knee\",\n                    \"Translation\": \"N IY\",\n                    \"Class\": \"NASAL (CONSONANT)\",\n                    \"Voice\": \"VOICED\",\n                    \"Articulator\": \"ALVEOLAR\",\n                    \"Airstream Mechanism\": \"NASAL\",\n                    \"Other Examples\": [\n                        \"pennebaker\",\n                        \"oriana\",\n                        \"saccomanno\",\n                        \"keleman\",\n                        \"canary\",\n                        \"hauenstein\",\n                        \"lemans\",\n                        \"prominence\",\n                        \"merline\",\n                        \"valentina\",\n                        \"finest\"\n                    ]\n                },\n                \"6\": {\n                    \"Phoneme (Grapheme)\": \"IH\",\n                    \"Score\": 100,\n                    \"Duration\": \"0.05 secs\",\n                    \"Grade\": \"Excellent\",\n                    \"Phoneme Feedback Summary\": \"Perfect pronunciation!\",\n                    \"Phoneme Feedback\": \"The 'IH' sound was pronounced with perfect clarity and accuracy.\",\n                    \"Phoneme\": \"IH\",\n                    \"IPA\": \"i\",\n                    \"Example\": \"it\",\n                    \"Translation\": \"IH T\",\n                    \"Class\": \"VOWEL\",\n                    \"Voice\": \"VOICED\",\n                    \"Articulator\": \"\",\n                    \"Airstream Mechanism\": \"\",\n                    \"Other Examples\": [\n                        \"grim\",\n                        \"lincare\",\n                        \"nichols\",\n                        \"nutting\",\n                        \"gobbling\",\n                        \"yanish\",\n                        \"conditional\",\n                        \"pictet\",\n                        \"indianapolis's\",\n                        \"presages\",\n                        \"abramovitz\"\n                    ]\n                },\n                \"7\": {\n                    \"Phoneme (Grapheme)\": \"S\",\n                    \"Score\": 100,\n                    \"Duration\": \"0.1 secs\",\n                    \"Grade\": \"Excellent\",\n                    \"Phoneme Feedback Summary\": \"Perfect pronunciation!\",\n                    \"Phoneme Feedback\": \"The 'S' sound was pronounced with perfect clarity and accuracy.\",\n                    \"Phoneme\": \"S\",\n                    \"IPA\": \"s\",\n                    \"Example\": \"sea\",\n                    \"Translation\": \"S IY\",\n                    \"Class\": \"FRICATIVE (CONSONANT)\",\n                    \"Voice\": \"VOICELESS\",\n                    \"Articulator\": \"ALVEOLAR\",\n                    \"Airstream Mechanism\": \"FRICATIVE\",\n                    \"Other Examples\": [\n                        \"scuttled\",\n                        \"businessland\",\n                        \"jelinski\",\n                        \"ancients\",\n                        \"sensitized\",\n                        \"smith's\",\n                        \"inaugurates\",\n                        \"phylis\",\n                        \"seratonin\",\n                        \"cousteau\",\n                        \"serviced\"\n                    ]\n                },\n                \"8\": {\n                    \"Phoneme (Grapheme)\": \"T\",\n                    \"Score\": 100,\n                    \"Duration\": \"0.05 secs\",\n                    \"Grade\": \"Excellent\",\n                    \"Phoneme Feedback Summary\": \"Perfect pronunciation!\",\n                    \"Phoneme Feedback\": \"The 'T' sound was pronounced with perfect clarity and accuracy.\",\n                    \"Phoneme\": \"T\",\n                    \"IPA\": \"t\",\n                    \"Example\": \"tea\",\n                    \"Translation\": \"T IY\",\n                    \"Class\": \"STOP (CONSONANT)\",\n                    \"Voice\": \"VOICELESS\",\n                    \"Articulator\": \"ALVEOLAR\",\n                    \"Airstream Mechanism\": \"PLOSIVE\",\n                    \"Other Examples\": [\n                        \"blancett\",\n                        \"thai's\",\n                        \"eisenhardt\",\n                        \"centralia\",\n                        \"angert\",\n                        \"passaretti\",\n                        \"lufttransport\",\n                        \"ratcliff\",\n                        \"obtained\",\n                        \"fingerpointing\",\n                        \"electricar\"\n                    ]\n                },\n                \"9\": {\n                    \"Phoneme (Grapheme)\": \"R\",\n                    \"Score\": 100,\n                    \"Duration\": \"0.05 secs\",\n                    \"Grade\": \"Excellent\",\n                    \"Phoneme Feedback Summary\": \"Perfect pronunciation!\",\n                    \"Phoneme Feedback\": \"The 'R' sound was pronounced with perfect clarity and accuracy.\",\n                    \"Phoneme\": \"R\",\n                    \"IPA\": \"ɹ\",\n                    \"Example\": \"read\",\n                    \"Translation\": \"R IY D\",\n                    \"Class\": \"LIQUID (CONSONANT)\",\n                    \"Voice\": \"VOICED\",\n                    \"Articulator\": \"ALVEOLAR\",\n                    \"Airstream Mechanism\": \"CENTRAL\",\n                    \"Other Examples\": [\n                        \"harbor\",\n                        \"unimproved\",\n                        \"roquemore\",\n                        \"bruce's\",\n                        \"breakneck\",\n                        \"retaliated\",\n                        \"koruna\",\n                        \"rawson\",\n                        \"hair\",\n                        \"disparage\",\n                        \"brennen\"\n                    ]\n                },\n                \"10\": {\n                    \"Phoneme (Grapheme)\": \"EY\",\n                    \"Score\": 99,\n                    \"Duration\": \"0.08 secs\",\n                    \"Grade\": \"Excellent\",\n                    \"Phoneme Feedback Summary\": \"Perfect pronunciation!\",\n                    \"Phoneme Feedback\": \"The 'EY' sound was pronounced with perfect clarity and accuracy.\",\n                    \"Phoneme\": \"EY\",\n                    \"IPA\": \"eɪ\",\n                    \"Example\": \"ate\",\n                    \"Translation\": \"EY T\",\n                    \"Class\": \"VOWEL\",\n                    \"Voice\": \"VOICED\",\n                    \"Articulator\": \"\",\n                    \"Airstream Mechanism\": \"\",\n                    \"Other Examples\": [\n                        \"rainy\",\n                        \"operations\",\n                        \"akin\",\n                        \"brattain\",\n                        \"aggravated\",\n                        \"cases\",\n                        \"naivete\",\n                        \"frustratingly\",\n                        \"educationally\",\n                        \"inflames\",\n                        \"bather\"\n                    ]\n                },\n                \"11\": {\n                    \"Phoneme (Grapheme)\": \"SH\",\n                    \"Score\": 100,\n                    \"Duration\": \"0.15 secs\",\n                    \"Grade\": \"Excellent\",\n                    \"Phoneme Feedback Summary\": \"Perfect pronunciation!\",\n                    \"Phoneme Feedback\": \"The 'SH' sound was pronounced with perfect clarity and accuracy.\",\n                    \"Phoneme\": \"SH\",\n                    \"IPA\": \"ʃ\",\n                    \"Example\": \"she\",\n                    \"Translation\": \"SH IY\",\n                    \"Class\": \"FRICATIVE (CONSONANT)\",\n                    \"Voice\": \"VOICELESS\",\n                    \"Articulator\": \"POSTALVEOLAR\",\n                    \"Airstream Mechanism\": \"FRICATIVE\",\n                    \"Other Examples\": [\n                        \"cliched\",\n                        \"mondschein\",\n                        \"crocheted\",\n                        \"shasteen\",\n                        \"washed\",\n                        \"shipe\",\n                        \"adoptions\",\n                        \"interpretations\",\n                        \"schippers\",\n                        \"bouchard\",\n                        \"sramek\"\n                    ]\n                },\n                \"12\": {\n                    \"Phoneme (Grapheme)\": \"AH\",\n                    \"Score\": 99,\n                    \"Duration\": \"0.13 secs\",\n                    \"Grade\": \"Excellent\",\n                    \"Phoneme Feedback Summary\": \"Perfect pronunciation!\",\n                    \"Phoneme Feedback\": \"The 'AH' sound was pronounced with perfect clarity and accuracy.\",\n                    \"Phoneme\": \"AH\",\n                    \"IPA\": \"ʌ\",\n                    \"Example\": \"hut\",\n                    \"Translation\": \"HH AH T\",\n                    \"Class\": \"VOWEL\",\n                    \"Voice\": \"VOICED\",\n                    \"Articulator\": \"\",\n                    \"Airstream Mechanism\": \"\",\n                    \"Other Examples\": [\n                        \"borja\",\n                        \"pyramid\",\n                        \"saracens\",\n                        \"jaekel\",\n                        \"attridge\",\n                        \"biotite\",\n                        \"socialist\",\n                        \"buxom\",\n                        \"touchton\",\n                        \"simulators\",\n                        \"undiplomatic\"\n                    ]\n                },\n                \"13\": {\n                    \"Phoneme (Grapheme)\": \"N\",\n                    \"Score\": 99,\n                    \"Duration\": \"0.15 secs\",\n                    \"Grade\": \"Excellent\",\n                    \"Phoneme Feedback Summary\": \"Perfect pronunciation!\",\n                    \"Phoneme Feedback\": \"The 'N' sound was pronounced with perfect clarity and accuracy.\",\n                    \"Phoneme\": \"N\",\n                    \"IPA\": \"n\",\n                    \"Example\": \"knee\",\n                    \"Translation\": \"N IY\",\n                    \"Class\": \"NASAL (CONSONANT)\",\n                    \"Voice\": \"VOICED\",\n                    \"Articulator\": \"ALVEOLAR\",\n                    \"Airstream Mechanism\": \"NASAL\",\n                    \"Other Examples\": [\n                        \"gettinger\",\n                        \"sprained\",\n                        \"koon\",\n                        \"vacillation\",\n                        \"newhouse\",\n                        \"mercantilist\",\n                        \"bonfiglio\",\n                        \"centeno\",\n                        \"gonna\",\n                        \"novo's\",\n                        \"laminating\"\n                    ]\n                }\n            }\n        }\n    },\n    \"CEFR Score\": \"C2\",\n    \"CEFR Feedback\": \"Excellent pronunciation skills demonstrated. Minor stress and phonetic refinements will perfect the speech delivery, showing remarkable progress.\",\n    \"Fluency\": 96,\n    \"Intonation\": 100,\n    \"Scripted\": true,\n    \"Prompt\": \"\",\n    \"Language\": \"en\",\n    \"TOEFL iBT Score\": 27,\n    \"TOEFL iBT Total Score\": 30,\n    \"IELTS Score\": 8,\n    \"IELTS Total Score\": 9,\n    \"PTE Score\": 81,\n    \"PTE Total Score\": 90,\n    \"TOEIC Score\": 181,\n    \"TOEIC Total Score\": 200,\n    \"TOEFL iBT Feedback\": \"Outstanding clarity and fluidity demonstrated. While not quite perfect, this shows excellent command of pronunciation and intonation. Minor refinements will achieve top-level performance. Outstanding work is evident. Speech shows excellent control of stress and intonation patterns. The art of using pitch and emphasis to enhance the message has been mastered - exactly what the TOEFL seeks. Wonderful performance. Speech flows perfectly with natural and appropriate pauses. Excellent control over speaking rhythm has been achieved.\",\n    \"IELTS Feedback\": \"Outstanding pronunciation work demonstrated. The speech is very easy to follow, with only minor areas needing improvement. Continue polishing these final details. Outstanding work is demonstrated. Speech shows perfect fluency with natural pauses that enhance the message beautifully.\",\n    \"PTE Feedback\": \"Impressive score achieved. Clarity and pronunciation are strong, though small details can still be perfected. Very close to complete mastery. Fantastic performance is achieved. Command of stress and intonation is exactly what the PTE rewards. Clear and effective communication is demonstrated, using natural rhythm and appropriate emphasis. This is a model example of what clear, engaging speech should sound like. Exceptional achievement is evident. Speaking rhythm shows perfect control and natural flow throughout.\",\n    \"TOEIC Feedback\": \"Nearly perfect performance achieved. Pronunciation and fluency are excellent. Additional practice on specific areas will complete mastery of workplace communication.\"\n}"}],"_postman_id":"d1a7e8d2-2127-48c8-92ab-1954d3c0e08a"}],"id":"065b7275-111f-42e4-82aa-fce686895cb8","_postman_id":"065b7275-111f-42e4-82aa-fce686895cb8","description":"","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"76df429f-1521-446e-9869-5169c05928cc","id":"76df429f-1521-446e-9869-5169c05928cc","name":"Learngual API integration","type":"folder"}}},{"name":"Language logic","item":[{"name":"Check language logic","id":"7073ec6f-3dc3-4450-8d12-4cf3cb8a4a9b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"api-key","value":"{{api-key}}"}],"body":{"mode":"raw","raw":"{\n    \"topic\": \"My First Day at Work\",\n    \"essay\": \"nothing hapened\",\n    \"criteria\": [\n        \"evidence\",\n        \"coherence\",\n        \"relevance\",\n        \"critical_thinking\"\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/essay_evaluation/","description":"<h1 id=\"essay-evaluation-api\">Essay Evaluation API</h1>\n<p><strong>Endpoint:</strong><br /><code>POST {{url}}/essay_evaluation/</code></p>\n<h2 id=\"purpose\">Purpose</h2>\n<p>This endpoint evaluates an essay against a given topic using multiple assessment criteria.<br />It provides <strong>general feedback</strong> and delivers <strong>criteria-specific insights</strong> with example improvements.<br />The API is useful for automated grading, skill improvement feedback, and structured essay reviews.</p>\n<hr />\n<h2 id=\"request-method\">Request Method</h2>\n<p><code>POST</code></p>\n<hr />\n<h2 id=\"request-body\">Request Body</h2>\n<p>Send the body as <strong>JSON</strong>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>topic</code></td>\n<td>string</td>\n<td><strong>Yes</strong></td>\n<td>The essay's target topic or subject.</td>\n</tr>\n<tr>\n<td><code>essay</code></td>\n<td>string</td>\n<td><strong>Yes</strong></td>\n<td>The essay text to be evaluated.</td>\n</tr>\n<tr>\n<td><code>criteria</code></td>\n<td>array of strings</td>\n<td>No</td>\n<td>Specific evaluation aspects to assess. Examples: <code>\"evidence\"</code>, <code>\"coherence\"</code>, <code>\"relevance\"</code>, <code>\"critical_thinking\"</code>. If omitted, the system uses default evaluation criteria.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"example-request\">Example Request</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"topic\": \"My First Day at Work\",\n    \"essay\": \"nothing hapened\",\n    \"criteria\": [\n        \"evidence\",\n        \"coherence\",\n        \"relevance\",\n        \"critical_thinking\"\n    ]\n}\n\n</code></pre>\n<hr />\n<h2 id=\"response\">Response</h2>\n<p>The API returns a <strong>compiled narrative</strong> covering all criteria feedback, along with a breakdown for each criterion.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>overall_feedback</code></td>\n<td>string</td>\n<td>A compiled narrative covering all criteria feedback in one detailed section.</td>\n</tr>\n<tr>\n<td><code>char_count</code></td>\n<td>number</td>\n<td>Total number of characters in the <code>topic</code> + <code>essay</code>.</td>\n</tr>\n<tr>\n<td><code>word_count</code></td>\n<td>number</td>\n<td>Total number of words in the <code>essay</code>.</td>\n</tr>\n<tr>\n<td><code>criteria</code></td>\n<td>object</td>\n<td>A breakdown of each criterion with its own feedback, improvement example, and optional rating.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"example-response\">Example Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"overall_feedback\": \"Evidence: The essay lacks any form of evidence or supporting details... \\n\\nCoherence: The essay lacks coherence... \\n\\nRelevance: The essay does not address the topic... \\n\\nCritical Thinking: The essay lacks any form of analysis...\",\n    \"char_count\": 15,\n    \"word_count\": 2,\n    \"criteria\": {\n        \"evidence\": {\n            \"feedback\": \"The essay lacks any form of evidence or supporting details...\",\n            \"example\": \"&lt;IMPROVEMENT&gt;\\nMy first day at work was a memorable experience... \\n&lt;/IMPROVEMENT&gt;\"\n        },\n        \"coherence\": {\n            \"feedback\": \"The essay lacks coherence as it does not provide any content...\",\n            \"example\": \"&lt;IMPROVEMENT&gt;\\nMy First Day at Work\\n\\nI still remember my first day...\\n&lt;/IMPROVEMENT&gt;\"\n        },\n        \"relevance\": {\n            \"feedback\": \"The essay does not address the topic at all...\",\n            \"example\": \"&lt;IMPROVEMENT&gt;My first day at work was a memorable experience...&lt;/IMPROVEMENT&gt;\",\n            \"rating\": \"Not Relevant\"\n        },\n        \"critical_thinking\": {\n            \"feedback\": \"The essay lacks any form of analysis or insight...\",\n            \"example\": \"&lt;IMPROVEMENT&gt;\\nMy first day at work was a whirlwind of emotions...\\n&lt;/IMPROVEMENT&gt;\"\n        }\n    }\n}\n\n</code></pre>\n<hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p><strong>Improvement examples</strong> are wrapped in tags for easy parsing.</p>\n</li>\n<li><p><strong>Criteria ratings</strong> (if provided) are qualitative labels such as <code>\"Excellent\"</code>, <code>\"Adequate\"</code>, <code>\"Not Relevant\"</code>, etc.</p>\n</li>\n<li><p><strong>Character count rule</strong>: <code>char_count</code> = characters in <code>topic</code> + <code>essay</code>.</p>\n</li>\n<li><p>Omitting <code>criteria</code> results in a default evaluation covering core aspects.</p>\n</li>\n</ul>\n","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"76df429f-1521-446e-9869-5169c05928cc","id":"76df429f-1521-446e-9869-5169c05928cc","name":"Learngual API integration","type":"folder"}},"urlObject":{"path":["essay_evaluation",""],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"10fd98c1-6ee4-47d4-af90-a8dc3e33d649","name":"Language logic evaluation","originalRequest":{"method":"POST","header":[{"key":"api-key","value":"{{api-key}}"}],"body":{"mode":"raw","raw":"{\n    \"topic\": \"My First Day at Work\",\n    \"essay\": \"nothing hapened\",\n    \"criteria\": [\n        \"evidence\",\n        \"coherence\",\n        \"relevance\",\n        \"critical_thinking\"\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/accounts/relevance/"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 25 Sep 2024 10:29:42 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"108"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept, Accept-Language, Cookie, origin"},{"key":"Allow","value":"POST, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Language","value":"en"},{"key":"Strict-Transport-Security","value":"max-age=15724800; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"}],"cookie":[],"responseTime":null,"body":"{\n    \"overall_score\": 63,\n    \"overall_feedback\": \"Evidence: The essay lacks any form of evidence or supporting details. There are no examples, data, or citations to substantiate any claims related to the topic 'My First Day at Work'. To improve, the essay should include specific instances or experiences from the first day at work to make the narrative more engaging and credible.\\n\\nCoherence: The essay lacks coherence as it does not provide any content related to 'My First Day at Work'. There are no paragraphs, transitions, or overall structure to evaluate. The essay is completely blank in terms of content and structure.\\n\\nRelevance: The essay does not address the topic 'My First Day at Work' at all, as it contains no relevant content or information.\\n\\nCritical Thinking: The essay lacks any form of analysis or insight into the topic 'My First Day at Work'. There is no exploration of experiences, emotions, or lessons learned, which are crucial for demonstrating critical thinking. To improve, the essay should delve into the personal and professional implications of the first day at work, analyzing what was expected versus what actually happened, and reflecting on any significant events or realizations.\",\n    \"char_count\": 15,\n    \"word_count\": 2,\n    \"criteria\": {\n        \"evidence\": {\n            \"feedback\": \"The essay lacks any form of evidence or supporting details. There are no examples, data, or citations to substantiate any claims related to the topic 'My First Day at Work'. To improve, the essay should include specific instances or experiences from the first day at work to make the narrative more engaging and credible.\",\n            \"example\": \"<IMPROVEMENT>\\nMy first day at work was a memorable experience. Upon arrival, I was greeted by my supervisor, who showed me to my workstation and introduced me to the team. The office environment was vibrant, with everyone engaged in their tasks. I was given a comprehensive orientation, which included a tour of the facilities and an overview of the company's policies. One specific example that stood out was when my colleagues welcomed me with a team lunch, making me feel immediately included. Throughout the day, I was provided with detailed instructions on my job responsibilities and was given the necessary tools to perform my duties effectively. The combination of a thorough onboarding process and a friendly team made my transition into the new role smooth and enjoyable.\\n</IMPROVEMENT>\"\n        },\n        \"coherence\": {\n            \"feedback\": \"The essay lacks coherence as it does not provide any content related to 'My First Day at Work'. There are no paragraphs, transitions, or overall structure to evaluate. The essay is completely blank in terms of content and structure.\",\n            \"example\": \"<IMPROVEMENT>\\nMy First Day at Work\\n\\nI still remember my first day at work vividly. As I walked into the office building, I felt a mix of excitement and nervousness. The receptionist greeted me warmly and directed me to the HR department.\\n\\nUpon arriving at the HR department, I was introduced to my team and supervisor. They showed me to my workstation and explained the company's policies and expectations. I was given a comprehensive orientation, which helped me understand my role and responsibilities.\\n\\nThroughout the day, I met various colleagues who were friendly and welcoming. They shared their experiences and offered valuable advice, making me feel more at ease. As the day progressed, I began to feel more confident and comfortable in my new environment.\\n\\nAs I reflected on my first day, I realized that it set a positive tone for my tenure at the company. The warm welcome and comprehensive onboarding process made a significant difference in my transition into the new role.\\n</IMPROVEMENT>\"\n        },\n        \"relevance\": {\n            \"feedback\": \"The essay does not address the topic 'My First Day at Work' at all, as it contains no relevant content or information.\",\n            \"example\": \"<IMPROVEMENT>My first day at work was a memorable experience. I arrived early at the office, feeling a mix of excitement and nervousness. As I walked in, I was greeted by my new colleagues, who showed me to my workstation. The day was filled with orientation sessions, meeting with my team, and getting familiar with the company culture. I was impressed by the modern facilities and the friendly atmosphere. By the end of the day, I felt more at ease and was looking forward to the challenges ahead.</IMPROVEMENT>\",\n            \"rating\": \"Not Relevant\"\n        },\n        \"critical_thinking\": {\n            \"feedback\": \"The essay lacks any form of analysis or insight into the topic 'My First Day at Work'. There is no exploration of experiences, emotions, or lessons learned, which are crucial for demonstrating critical thinking. To improve, the essay should delve into the personal and professional implications of the first day at work, analyzing what was expected versus what actually happened, and reflecting on any significant events or realizations.\",\n            \"example\": \"<IMPROVEMENT>\\nMy first day at work was a whirlwind of emotions and experiences that challenged my expectations and taught me valuable lessons. Initially, I felt a mix of excitement and nervousness as I navigated the unfamiliar office environment. As I settled into my new role, I began to realize the importance of adaptability and open communication. One of the most significant insights I gained was the value of teamwork and collaboration in achieving common goals. Reflecting on my first day, I understand that it laid the foundation for my professional growth, highlighting the need for resilience and a proactive approach in a dynamic work setting.\\n</IMPROVEMENT>\"\n        }\n    }\n}"}],"_postman_id":"7073ec6f-3dc3-4450-8d12-4cf3cb8a4a9b"}],"id":"c88326e8-6b82-4772-a4c8-99fd7062c9b9","_postman_id":"c88326e8-6b82-4772-a4c8-99fd7062c9b9","description":"","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"76df429f-1521-446e-9869-5169c05928cc","id":"76df429f-1521-446e-9869-5169c05928cc","name":"Learngual API integration","type":"folder"}}},{"name":"Translation","item":[{"name":"Translate","id":"6057e70b-1b7b-43a9-9147-e42c32125f40","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"api-key","value":"{{api-key}}"}],"body":{"mode":"raw","raw":"{\n    \"texts\": [\"hello\"],\n    \"target_language\": \"de\",\n    \"source_language\": \"en\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/batch-translate/","description":"<h2 id=\"batch-translate-api-post\">Batch Translate API (POST)</h2>\n<h3 id=\"overview\">Overview</h3>\n<p>This endpoint translates one or more texts from a source language into a target language, designed to support language learners. Use it to translate vocabulary items, short phrases, and example sentences that help learners practice, understand, or reinforce meaning in context.</p>\n<blockquote>\n<p><strong>Note:</strong> This endpoint is <strong>not</strong> intended for translating generic interface copy or purely technical text. Its primary purpose is to assist with language learning. </p>\n</blockquote>\n<hr />\n<p><strong>Full endpoint:</strong> <code>{{url}}/batch-translate/</code></p>\n<hr />\n<h3 id=\"authentication\">Authentication</h3>\n<p>This API uses an API key passed as a request header.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Header</th>\n<th>Value</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>api-key</code></td>\n<td><code>{{api-key}}</code></td>\n</tr>\n</tbody>\n</table>\n</div><blockquote>\n<p>Store your API key in the <code>api-key</code> environment variable. Never hardcode it in requests. </p>\n</blockquote>\n<hr />\n<h3 id=\"http-request\">HTTP Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>POST {{url}}/batch-translate/\n\n</code></pre><h4 id=\"required-headers\">Required Headers</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Header</th>\n<th>Value</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n</tr>\n<tr>\n<td><code>api-key</code></td>\n<td><code>{{api-key}}</code></td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"request-body\">Request Body</h3>\n<p>Send a JSON object with the following fields:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"texts\": [\"hello\", \"goodbye\"],\n  \"target_language\": \"de\",\n  \"source_language\": \"en\"\n}\n\n</code></pre>\n<h4 id=\"body-schema\">Body Schema</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>texts</code></td>\n<td><code>array of strings</code></td>\n<td>✅ Yes</td>\n<td>One or more texts to translate. Each item should be a vocabulary word, short phrase, or brief sentence.</td>\n</tr>\n<tr>\n<td><code>target_language</code></td>\n<td><code>string</code></td>\n<td>✅ Yes</td>\n<td>ISO 639-1 code of the language to translate <strong>into</strong>. See supported languages below.</td>\n</tr>\n<tr>\n<td><code>source_language</code></td>\n<td><code>string</code></td>\n<td>✅ Yes</td>\n<td>ISO 639-1 code of the language to translate <strong>from</strong>. Accepts any supported language code — see the supported languages table below.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"response\">Response</h3>\n<p>A successful request returns HTTP <code>200 OK</code> with a JSON object containing a <code>data</code> array. Each item in the array corresponds to a text from the input <code>texts</code> array, in the same order.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"data\": [\n    {\n      \"translation\": \"Hallo\",\n      \"source_language\": \"en\",\n      \"target_language\": \"de\",\n      \"formality\": \"neutral\"\n    }\n  ]\n}\n\n</code></pre>\n<h4 id=\"response-schema\">Response Schema</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data</code></td>\n<td><code>array</code></td>\n<td>List of translation result objects, one per input text.</td>\n</tr>\n<tr>\n<td><code>data[].translation</code></td>\n<td><code>string</code></td>\n<td>The translated text.</td>\n</tr>\n<tr>\n<td><code>data[].source_language</code></td>\n<td><code>string</code></td>\n<td>The source language code used.</td>\n</tr>\n<tr>\n<td><code>data[].target_language</code></td>\n<td><code>string</code></td>\n<td>The target language code used.</td>\n</tr>\n<tr>\n<td><code>data[].formality</code></td>\n<td><code>string</code></td>\n<td>Formality level of the translation (e.g. <code>\"neutral\"</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"example\">Example</h3>\n<h4 id=\"request\">Request</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-http\">POST {{url}}/batch-translate/\nContent-Type: application/json\napi-key: {{api-key}}\n{\n  \"texts\": [\"hello\"],\n  \"target_language\": \"de\",\n  \"source_language\": \"en\"\n}\n\n</code></pre>\n<h4 id=\"response-1\">Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"data\": [\n    {\n      \"translation\": \"Hallo\",\n      \"source_language\": \"en\",\n      \"target_language\": \"de\",\n      \"formality\": \"neutral\"\n    }\n  ]\n}\n\n</code></pre>\n<hr />\n<h3 id=\"supported-languages\">Supported Languages</h3>\n<p>Both <code>source_language</code> and <code>target_language</code> accept the same set of ISO 639-1 codes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Language</th>\n<th>Code</th>\n<th>Flag</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Arabic</td>\n<td><code>ar</code></td>\n<td>🇸🇦</td>\n</tr>\n<tr>\n<td>Azerbaijani</td>\n<td><code>az</code></td>\n<td>🇦🇿</td>\n</tr>\n<tr>\n<td>Bulgarian</td>\n<td><code>bg</code></td>\n<td>🇧🇬</td>\n</tr>\n<tr>\n<td>Catalan</td>\n<td><code>ca</code></td>\n<td>🏴</td>\n</tr>\n<tr>\n<td>Chinese (Simplified)</td>\n<td><code>zh</code></td>\n<td>🇨🇳</td>\n</tr>\n<tr>\n<td>Croatian</td>\n<td><code>hr</code></td>\n<td>🇭🇷</td>\n</tr>\n<tr>\n<td>Czech</td>\n<td><code>cs</code></td>\n<td>🇨🇿</td>\n</tr>\n<tr>\n<td>Danish</td>\n<td><code>da</code></td>\n<td>🇩🇰</td>\n</tr>\n<tr>\n<td>Dutch</td>\n<td><code>nl</code></td>\n<td>🇳🇱</td>\n</tr>\n<tr>\n<td>English</td>\n<td><code>en</code></td>\n<td>🇬🇧</td>\n</tr>\n<tr>\n<td>Finnish</td>\n<td><code>fi</code></td>\n<td>🇫🇮</td>\n</tr>\n<tr>\n<td>French</td>\n<td><code>fr</code></td>\n<td>🇫🇷</td>\n</tr>\n<tr>\n<td>German</td>\n<td><code>de</code></td>\n<td>🇩🇪</td>\n</tr>\n<tr>\n<td>Greek</td>\n<td><code>el</code></td>\n<td>🇬🇷</td>\n</tr>\n<tr>\n<td>Hebrew</td>\n<td><code>he</code></td>\n<td>🇮🇱</td>\n</tr>\n<tr>\n<td>Hindi</td>\n<td><code>hi</code></td>\n<td>🇮🇳</td>\n</tr>\n<tr>\n<td>Hungarian</td>\n<td><code>hu</code></td>\n<td>🇭🇺</td>\n</tr>\n<tr>\n<td>Icelandic</td>\n<td><code>is</code></td>\n<td>🇮🇸</td>\n</tr>\n<tr>\n<td>Indonesian</td>\n<td><code>id</code></td>\n<td>🇮🇩</td>\n</tr>\n<tr>\n<td>Irish</td>\n<td><code>ga</code></td>\n<td>🇮🇪</td>\n</tr>\n<tr>\n<td>Italian</td>\n<td><code>it</code></td>\n<td>🇮🇹</td>\n</tr>\n<tr>\n<td>Japanese</td>\n<td><code>ja</code></td>\n<td>🇯🇵</td>\n</tr>\n<tr>\n<td>Korean</td>\n<td><code>ko</code></td>\n<td>🇰🇷</td>\n</tr>\n<tr>\n<td>Malay</td>\n<td><code>ms</code></td>\n<td>🇲🇾</td>\n</tr>\n<tr>\n<td>Maltese</td>\n<td><code>mt</code></td>\n<td>🇲🇹</td>\n</tr>\n<tr>\n<td>Norwegian (Bokmål)</td>\n<td><code>nb</code></td>\n<td>🇳🇴</td>\n</tr>\n<tr>\n<td>Persian (Farsi)</td>\n<td><code>fa</code></td>\n<td>🇮🇷</td>\n</tr>\n<tr>\n<td>Filipino (Tagalog)</td>\n<td><code>tl</code></td>\n<td>🇵🇭</td>\n</tr>\n<tr>\n<td>Polish</td>\n<td><code>pl</code></td>\n<td>🇵🇱</td>\n</tr>\n<tr>\n<td>Portuguese</td>\n<td><code>pt</code></td>\n<td>🇵🇹</td>\n</tr>\n<tr>\n<td>Romanian</td>\n<td><code>ro</code></td>\n<td>🇷🇴</td>\n</tr>\n<tr>\n<td>Russian</td>\n<td><code>ru</code></td>\n<td>🇷🇺</td>\n</tr>\n<tr>\n<td>Serbian</td>\n<td><code>sr</code></td>\n<td>🇷🇸</td>\n</tr>\n<tr>\n<td>Slovak</td>\n<td><code>sk</code></td>\n<td>🇸🇰</td>\n</tr>\n<tr>\n<td>Slovenian</td>\n<td><code>sl</code></td>\n<td>🇸🇮</td>\n</tr>\n<tr>\n<td>Spanish</td>\n<td><code>es</code></td>\n<td>🇪🇸</td>\n</tr>\n<tr>\n<td>Swedish</td>\n<td><code>sv</code></td>\n<td>🇸🇪</td>\n</tr>\n<tr>\n<td>Thai</td>\n<td><code>th</code></td>\n<td>🇹🇭</td>\n</tr>\n<tr>\n<td>Turkish</td>\n<td><code>tr</code></td>\n<td>🇹🇷</td>\n</tr>\n<tr>\n<td>Ukrainian</td>\n<td><code>uk</code></td>\n<td>🇺🇦</td>\n</tr>\n<tr>\n<td>Vietnamese</td>\n<td><code>vi</code></td>\n<td>🇻🇳</td>\n</tr>\n<tr>\n<td>Welsh</td>\n<td><code>cy</code></td>\n<td>🏴󠁧󠁢󠁷󠁬󠁳󠁿</td>\n</tr>\n<tr>\n<td>Albanian</td>\n<td><code>sq</code></td>\n<td>🇦🇱</td>\n</tr>\n</tbody>\n</table>\n</div><blockquote>\n<p><strong>Recently added:</strong> Filipino (Tagalog) <code>tl</code>, Norwegian (Bokmål) <code>nb</code>, Maltese <code>mt</code>, Croatian <code>hr</code>, Vietnamese <code>vi</code>, Malay <code>ms</code>, Serbian <code>sr</code>, Bulgarian <code>bg</code>, Slovenian <code>sl</code>, Icelandic <code>is</code>, Welsh <code>cy</code>, Albanian <code>sq</code>, Thai <code>th</code> </p>\n</blockquote>\n<hr />\n<h3 id=\"error-handling\">Error Handling</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP Status</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>200 OK</code></td>\n<td>Request was successful.</td>\n</tr>\n<tr>\n<td><code>400 Bad Request</code></td>\n<td>Missing or invalid fields in the request body.</td>\n</tr>\n<tr>\n<td><code>401 Unauthorized</code></td>\n<td>Missing or invalid <code>api-key</code> header.</td>\n</tr>\n<tr>\n<td><code>422 Unprocessable Entity</code></td>\n<td>Unsupported language code or invalid input format.</td>\n</tr>\n<tr>\n<td><code>500 Internal Server Error</code></td>\n<td>Unexpected server error. Try again later.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"quick-integration-checklist\">Quick Integration Checklist</h3>\n<ul>\n<li><p>Set <code>{{url}}</code> in your Postman environment to your API base URL</p>\n</li>\n<li><p>Set <code>{{api-key}}</code> in your Postman environment to your API key</p>\n</li>\n<li><p>Set <code>Content-Type: application/json</code> header</p>\n</li>\n<li><p>Pass <code>texts</code> as an <strong>array</strong> (even for a single text)</p>\n</li>\n<li><p>Use a valid <code>source_language</code> code from the supported languages table above</p>\n</li>\n<li><p>Use a valid <code>target_language</code> code from the supported languages table above</p>\n</li>\n</ul>\n","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"76df429f-1521-446e-9869-5169c05928cc","id":"76df429f-1521-446e-9869-5169c05928cc","name":"Learngual API integration","type":"folder"}},"urlObject":{"path":["batch-translate",""],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"c1ca8c28-a45a-4c4b-9cc2-eb572e49e409","name":"Translate","originalRequest":{"method":"POST","header":[{"key":"api-key","value":"{{api-key}}"}],"body":{"mode":"raw","raw":"{\n    \"texts\": [\"hello\"],\n    \"target_language\": \"de\",\n    \"source_language\": \"en\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/batch-translate/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.18.0 (Ubuntu)"},{"key":"Date","value":"Fri, 27 Feb 2026 06:17:35 GMT"},{"key":"Content-Type","value":"application/json","description":""},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Accept, Accept-Language, Cookie, origin"},{"key":"Allow","value":"POST, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Language","value":"en"},{"key":"Strict-Transport-Security","value":"max-age=60; includeSubDomains; preload"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"translation\": \"Hallo\",\n            \"source_language\": \"en\",\n            \"target_language\": \"de\",\n            \"formality\": \"neutral\"\n        }\n    ]\n}"}],"_postman_id":"6057e70b-1b7b-43a9-9147-e42c32125f40"}],"id":"2b416457-84fc-43f1-8c31-a790007028d4","_postman_id":"2b416457-84fc-43f1-8c31-a790007028d4","description":"","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"76df429f-1521-446e-9869-5169c05928cc","id":"76df429f-1521-446e-9869-5169c05928cc","name":"Learngual API integration","type":"folder"}}},{"name":"Grammar analysis","item":[{"name":"Analyze grammar","id":"13ffb565-650b-40c7-9671-c87cfa07151d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"api-key","value":"{{api-key}}"}],"body":{"mode":"raw","raw":"{\n    \"content\": \"what is wrong with you\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/grammar/","description":"<h1 id=\"grammar-v2-api\">Grammar V2 API</h1>\n<p><strong>Endpoint</strong><br /><code>POST {{url}}/grammar_v2/</code></p>\n<h2 id=\"purpose\">Purpose</h2>\n<p>Analyzes input text for grammatical, punctuation, spelling, and structural issues. Returns a corrected version, enumerated issues with explanations and fix suggestions, an edit operations log, and processing metadata.</p>\n<hr />\n<h2 id=\"authentication\">Authentication</h2>\n<p><strong>Headers</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>api-key: YOUR_API_KEY_HERE\nContent-Type: application/json\n\n</code></pre><hr />\n<h2 id=\"request\">Request</h2>\n<p><strong>Method</strong>: <code>POST</code></p>\n<p><strong>Body (JSON)</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>content</code></td>\n<td>string</td>\n<td><strong>Yes</strong></td>\n<td>The raw text to analyze.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Example</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"content\": \"hello, how are you\"\n}\n\n</code></pre>\n<hr />\n<h2 id=\"response\">Response</h2>\n<p><strong>Status</strong>: <code>200 OK</code></p>\n<p><strong>Body (JSON)</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>originalText</code></td>\n<td>string</td>\n<td>The exact text received.</td>\n</tr>\n<tr>\n<td><code>correctedText</code></td>\n<td>string</td>\n<td>The corrected version of <code>originalText</code>.</td>\n</tr>\n<tr>\n<td><code>issues</code></td>\n<td>array</td>\n<td>List of detected issues with explanations and fix suggestions.</td>\n</tr>\n<tr>\n<td><code>metadata</code></td>\n<td>object</td>\n<td>Processing details (time taken, analyzers used, counts, score).</td>\n</tr>\n<tr>\n<td><code>operations</code></td>\n<td>array</td>\n<td>Diff-like steps to transform <code>originalText</code> → <code>correctedText</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"issues-object\"><code>issues[]</code> object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>type</code></td>\n<td>string</td>\n<td>One of: <code>Capitalization</code>, <code>Punctuation</code>, <code>Spelling</code>, <code>PartsOfSpeech</code>, <code>SentenceStructure</code>, <code>Tense</code>, <code>Voice</code>, <code>ModifierUsage</code>, <code>ArticleUsage</code>, <code>ConditionalSentence</code>, <code>ModalVerb</code>, <code>NegationAffirmation</code>, <code>SubjectVerbAgreement</code>, <code>DirectIndirectSpeech</code>, <code>RelativeClause</code>, <code>GerundInfinitive</code>, <code>PhrasalVerb</code>, <code>WordOrder</code>, <code>PrepositionUsage</code>, <code>DeterminerUsage</code>, <code>ComparisonUsage</code>, <code>AdvancedGrammar</code>.</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td>string</td>\n<td>Explanation of why it’s an issue.</td>\n</tr>\n<tr>\n<td><code>suggestion</code></td>\n<td>string</td>\n<td>Concrete fix proposal.</td>\n</tr>\n<tr>\n<td><code>severity</code></td>\n<td>string</td>\n<td><code>low</code></td>\n</tr>\n<tr>\n<td><code>targetWord</code></td>\n<td>string</td>\n<td>Token/segment associated with the issue.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"metadata-object\"><code>metadata</code> object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>processingTime</code></td>\n<td>integer</td>\n<td>Time in milliseconds.</td>\n</tr>\n<tr>\n<td><code>agentsUsed</code></td>\n<td>string[]</td>\n<td>Analyzers engaged.</td>\n</tr>\n<tr>\n<td><code>totalIssuesFound</code></td>\n<td>integer</td>\n<td>Count of issues reported.</td>\n</tr>\n<tr>\n<td><code>overallScore</code></td>\n<td>number</td>\n<td>Quality score (0–100).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"operations-object\"><code>operations[]</code> object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>type</code></td>\n<td>string</td>\n<td>One of: <code>insert</code>, <code>replace</code>, <code>delete</code>, <code>equal</code>.</td>\n</tr>\n<tr>\n<td><code>text</code></td>\n<td>string</td>\n<td>Text payload for the operation.</td>\n</tr>\n<tr>\n<td><code>originalStart</code></td>\n<td>integer</td>\n<td>Start index (inclusive) in <code>originalText</code>.</td>\n</tr>\n<tr>\n<td><code>originalEnd</code></td>\n<td>integer</td>\n<td>End index (exclusive) in <code>originalText</code>.</td>\n</tr>\n<tr>\n<td><code>correctedStart</code></td>\n<td>integer</td>\n<td>Start index (inclusive) in <code>correctedText</code>.</td>\n</tr>\n<tr>\n<td><code>correctedEnd</code></td>\n<td>integer</td>\n<td>End index (exclusive) in <code>correctedText</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"example-request-curl\">Example Request (cURL)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl -X POST \"{{url}}/grammar_v2/\" \\\n  -H \"api-key: YOUR_API_KEY_HERE\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"content\":\"hello, how are you\"}'\n\n</code></pre>\n<h2 id=\"example-response\">Example Response</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"originalText\": \"hello, how are you\",\n  \"correctedText\": \"Hello, how are you?\",\n  \"issues\": [\n    {\n      \"type\": \"Capitalization\",\n      \"message\": \"The first word of a sentence should begin with a capital letter to mark sentence start and improve readability.\",\n      \"suggestion\": \"Hello\",\n      \"severity\": \"high\",\n      \"targetWord\": \"hello\"\n    },\n    {\n      \"type\": \"Punctuation\",\n      \"message\": \"A question mark is needed at the end of the sentence to indicate it is a question.\",\n      \"suggestion\": \"Change 'you' to 'you?'\",\n      \"severity\": \"high\",\n      \"targetWord\": \"you\"\n    }\n  ],\n  \"metadata\": {\n    \"processingTime\": 3080,\n    \"agentsUsed\": [\n      \"BasicStructureAgent\",\n      \"PunctuationAgent\",\n      \"SentenceConstructionAgent\",\n      \"VerbSystemAgent\",\n      \"ModifierArticleAgent\",\n      \"ComplexStructuresAgent\",\n      \"LogicFlowAgent\",\n      \"AdvancedGrammarAgent\"\n    ],\n    \"totalIssuesFound\": 2,\n    \"overallScore\": 89\n  },\n  \"operations\": [\n    {\n      \"type\": \"replace\",\n      \"text\": \"Hello\",\n      \"originalStart\": 0,\n      \"originalEnd\": 5,\n      \"correctedStart\": 0,\n      \"correctedEnd\": 5\n    },\n    {\n      \"type\": \"equal\",\n      \"text\": \", how are you\",\n      \"originalStart\": 5,\n      \"originalEnd\": 18,\n      \"correctedStart\": 5,\n      \"correctedEnd\": 18\n    },\n    {\n      \"type\": \"insert\",\n      \"text\": \"?\",\n      \"originalStart\": 18,\n      \"originalEnd\": 18,\n      \"correctedStart\": 18,\n      \"correctedEnd\": 19\n    }\n  ]\n}\n\n</code></pre>\n<hr />\n","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"76df429f-1521-446e-9869-5169c05928cc","id":"76df429f-1521-446e-9869-5169c05928cc","name":"Learngual API integration","type":"folder"}},"urlObject":{"path":["grammar",""],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"53e648d5-9aa3-446b-bc54-b9a8ffdb4a52","name":"Analyze grammar","originalRequest":{"method":"POST","header":[{"key":"api-key","value":"{{api-key}}"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"content\": \"hello, how are you\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/accounts/grammar_v2/"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":""}],"cookie":[],"responseTime":null,"body":"{\n    \"originalText\": \"hello, how are you\",\n    \"correctedText\": \"Hello, how are you?\",\n    \"issues\": [\n        {\n            \"type\": \"Capitalization\",\n            \"message\": \"The first word of a sentence should begin with a capital letter to mark sentence start and improve readability.\",\n            \"suggestion\": \"Hello\",\n            \"severity\": \"high\",\n            \"targetWord\": \"hello\"\n        },\n        {\n            \"type\": \"Punctuation\",\n            \"message\": \"A question mark is needed at the end of the sentence to indicate it is a question.\",\n            \"suggestion\": \"Change 'you' to 'you?'\",\n            \"severity\": \"high\",\n            \"targetWord\": \"you\"\n        }\n    ],\n    \"metadata\": {\n        \"processingTime\": 3080,\n        \"agentsUsed\": [\n            \"BasicStructureAgent\",\n            \"PunctuationAgent\",\n            \"SentenceConstructionAgent\",\n            \"VerbSystemAgent\",\n            \"ModifierArticleAgent\",\n            \"ComplexStructuresAgent\",\n            \"LogicFlowAgent\",\n            \"AdvancedGrammarAgent\"\n        ],\n        \"totalIssuesFound\": 2,\n        \"overallScore\": 89\n    },\n    \"operations\": [\n        {\n            \"type\": \"replace\",\n            \"text\": \"Hello\",\n            \"originalStart\": 0,\n            \"originalEnd\": 5,\n            \"correctedStart\": 0,\n            \"correctedEnd\": 5\n        },\n        {\n            \"type\": \"equal\",\n            \"text\": \", how are you\",\n            \"originalStart\": 5,\n            \"originalEnd\": 18,\n            \"correctedStart\": 5,\n            \"correctedEnd\": 18\n        },\n        {\n            \"type\": \"insert\",\n            \"text\": \"?\",\n            \"originalStart\": 18,\n            \"originalEnd\": 18,\n            \"correctedStart\": 18,\n            \"correctedEnd\": 19\n        }\n    ]\n}"}],"_postman_id":"13ffb565-650b-40c7-9671-c87cfa07151d"}],"id":"6d21babf-fe0a-4c88-b663-c9eb50fe9449","_postman_id":"6d21babf-fe0a-4c88-b663-c9eb50fe9449","description":"","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"76df429f-1521-446e-9869-5169c05928cc","id":"76df429f-1521-446e-9869-5169c05928cc","name":"Learngual API integration","type":"folder"}}},{"name":"Comprehension","item":[{"name":"Evaluate answer","id":"066e9393-a223-415b-a293-a016a3bc9b16","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"api-key","value":"{{api-key}}"}],"body":{"mode":"raw","raw":"{\n    \"passage\": \"The Amazon rainforest is the world's largest tropical rainforest, covering over 5.5 million square kilometers. It is home to an incredible diversity of plant and animal species.\",\n    \"question\": \"What is the Amazon rainforest?\",\n    \"answer\": \"The Amazon rainforest is the world's largest tropical rainforest.\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/qa-quick-evaluate/","description":"<h2 id=\"qa-quick-evaluate\">QA Quick Evaluate</h2>\n<p>Evaluates a learner's answer to a comprehension question against a reference passage using AI. Returns a correctness verdict, a confidence score, and natural language feedback — making it ideal for automated reading comprehension assessments, adaptive learning flows, and intelligent tutoring systems.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>POST {{url}}/qa-quick-evaluate/\n\n</code></pre><hr />\n<h2 id=\"authentication\">Authentication</h2>\n<p>All requests must include a valid API key passed as a request header.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Header</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>api-key</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>Your Learngual API key. Obtain this from your developer dashboard.</td>\n</tr>\n</tbody>\n</table>\n</div><blockquote>\n<p>⚠️ <strong>Security note:</strong> Never expose your API key in client-side code. Always make requests from a secure server-side environment. </p>\n</blockquote>\n<hr />\n<h2 id=\"request\">Request</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Header</th>\n<th>Value</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n</tr>\n<tr>\n<td><code>api-key</code></td>\n<td><code>{{api-key}}</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request Body</h3>\n<p>Send a JSON object with the following fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>passage</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>The reference text the question and answer are based on. This is the source of truth used to evaluate correctness.</td>\n</tr>\n<tr>\n<td><code>question</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>The comprehension question being asked about the passage.</td>\n</tr>\n<tr>\n<td><code>answer</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>The learner's answer to be evaluated.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request-body\">Example Request Body</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"passage\": \"The Amazon rainforest is the world's largest tropical rainforest, covering over 5.5 million square kilometers. It is home to an incredible diversity of plant and animal species.\",\n  \"question\": \"What is the Amazon rainforest?\",\n  \"answer\": \"The Amazon rainforest is the world's largest tropical rainforest.\"\n}\n\n</code></pre>\n<hr />\n<h2 id=\"response\">Response</h2>\n<h3 id=\"success--201-created\">Success — <code>201 Created</code></h3>\n<p>Returned when the evaluation completes successfully.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>correct</code></td>\n<td>boolean</td>\n<td>Whether the learner's answer is considered correct based on the passage.</td>\n</tr>\n<tr>\n<td><code>confidence</code></td>\n<td>number</td>\n<td>A score between <code>0</code> and <code>1</code> indicating the model's confidence in its verdict. <code>1.0</code> = fully confident, <code>0.0</code> = uncertain.</td>\n</tr>\n<tr>\n<td><code>feedback</code></td>\n<td>string</td>\n<td>A natural language explanation of the evaluation result, suitable for displaying directly to the learner.</td>\n</tr>\n<tr>\n<td><code>usedLlm</code></td>\n<td>boolean</td>\n<td>Indicates whether a large language model was used to evaluate the answer (as opposed to a simpler heuristic).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"correct\": true,\n  \"confidence\": 1,\n  \"feedback\": \"You correctly identified the Amazon rainforest as the world's largest tropical rainforest, which matches the information provided in the passage.\",\n  \"usedLlm\": true\n}\n\n</code></pre>\n<hr />\n<h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Meaning</th>\n<th>Common Cause</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400 Bad Request</code></td>\n<td>Invalid or missing fields in the request body.</td>\n<td>Missing <code>passage</code>, <code>question</code>, or <code>answer</code>. Malformed JSON.</td>\n</tr>\n<tr>\n<td><code>401 Unauthorized</code></td>\n<td>Authentication failed.</td>\n<td>Missing or invalid <code>api-key</code> header.</td>\n</tr>\n<tr>\n<td><code>403 Forbidden</code></td>\n<td>Access denied.</td>\n<td>API key is valid but lacks permission, or usage cap has been reached.</td>\n</tr>\n<tr>\n<td><code>429 Too Many Requests</code></td>\n<td>Rate limit exceeded.</td>\n<td>Too many requests sent in a short period. Implement exponential backoff.</td>\n</tr>\n<tr>\n<td><code>500 Internal Server Error</code></td>\n<td>Server-side error.</td>\n<td>Unexpected failure during evaluation. Retry the request.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"usage-notes\">Usage Notes</h2>\n<ul>\n<li><p><strong>Answer quality:</strong> The evaluator assesses semantic correctness, not exact string matching. Paraphrased correct answers will generally be marked as correct.</p>\n</li>\n<li><p><strong><code>usedLlm</code></strong> <strong>flag:</strong> When <code>usedLlm</code> is <code>true</code>, the evaluation leverages our large language model for deeper semantic understanding. When <code>false</code>, a lighter heuristic was used — confidence scores may be lower in this case.</p>\n</li>\n<li><p><strong>Language:</strong> The passage, question, and answer should all be in the same language. Multi-language mixing may produce unreliable results.</p>\n</li>\n</ul>\n<hr />\n","urlObject":{"path":["qa-quick-evaluate",""],"host":["{{url}}"],"query":[{"disabled":true,"key":"api-key","value":"{{api-key}}"}],"variable":[]}},"response":[{"id":"95336b5b-b800-471b-a767-2c8729b8b832","name":"Evaluate answer","originalRequest":{"method":"POST","header":[{"key":"account","value":"{{account_id}}","description":"231e2ac390","disabled":true},{"key":"api-key","value":"","disabled":true},{"key":"api-key","value":"{{api-key}}"}],"body":{"mode":"raw","raw":"{\n    \"passage\": \"The Amazon rainforest is the world's largest tropical rainforest, covering over 5.5 million square kilometers. It is home to an incredible diversity of plant and animal species.\",\n    \"question\": \"What is the Amazon rainforest?\",\n    \"answer\": \"The Amazon rainforest is the world's largest tropical rainforest.\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/qa-quick-evaluate/","host":["{{url}}"],"path":["qa-quick-evaluate",""],"query":[{"key":"api-key","value":"{{api-key}}","disabled":true}]}},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":""}],"cookie":[],"responseTime":null,"body":"{\n    \"correct\": true,\n    \"confidence\": 1,\n    \"feedback\": \"you correctly identified the temperature as 0 degrees, which matches the answer from the passage in the context of the question.\",\n    \"usedLlm\": true\n}"}],"_postman_id":"066e9393-a223-415b-a293-a016a3bc9b16"}],"id":"07971602-4c16-4767-9ef8-763c7416642e","_postman_id":"07971602-4c16-4767-9ef8-763c7416642e","description":"","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"76df429f-1521-446e-9869-5169c05928cc","id":"76df429f-1521-446e-9869-5169c05928cc","name":"Learngual API integration","type":"folder"}}}],"id":"76df429f-1521-446e-9869-5169c05928cc","description":"<p><strong>Authentication</strong></p>\n<p>• <strong>API key</strong>: This API requires a key for authentication. Pass your key in the api-key header of your request.</p>\n<p><strong>Example header:</strong></p>\n<p><code>api-key: YOUR_API_KEY_HERE</code></p>\n<p><strong>Important notes</strong></p>\n<p>• <strong>Language specification</strong>: Always specify the correct language using the ISO 639-1 (2-letter) codes in your requests to ensure accurate analysis results and responses in your preferred language.</p>\n<p><strong>API key management:</strong> Users can effectively manage their API key usage through the following controls:</p>\n<ul>\n<li><p><strong>Usage caps:</strong> Set temporary or permanent limits on the number of API calls made with a specific key.</p>\n</li>\n<li><p><strong>Key pausing:</strong> Temporarily disable an API key without deleting it. This is helpful for planned maintenance or security concerns.</p>\n</li>\n<li><p><strong>Key deletion:</strong> Permanently remove API keys that are no longer required.</p>\n</li>\n</ul>\n<p>• <strong>Character limits</strong>: Character limits are associated with different developer plans. Ensure you review your plan’s specifications to understand any restrictions on the length of text that can be processed.</p>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"89f2306e-1d42-4b26-b986-0d43c669bfe2","type":"text/javascript","packages":{},"exec":[""]}},{"listen":"test","script":{"id":"9852261e-2f27-4abc-a492-bcd534eed9b7","type":"text/javascript","packages":{},"exec":[""]}}],"_postman_id":"76df429f-1521-446e-9869-5169c05928cc"}],"event":[{"listen":"prerequest","script":{"id":"637794dc-196c-4fa5-92e4-c53ac977dad9","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"cd935263-f6a7-46a1-b822-78c7623ec8a0","type":"text/javascript","exec":[""]}}],"variable":[{"id":"45a54dfa-8de1-45e3-aafc-70741682028d","key":"13bac84c-6812-4aee-b201-a9126f002308","value":"","disabled":true},{"id":"70ef5518-80ce-4690-9861-5db4329d5a9c","key":"url","value":"https://api.learngual.com/api","disabled":true},{"id":"68714359-2187-4912-a342-ebed7bdda800","key":"_lang","value":"{{language}}"},{"id":"b0e2ec00-cd22-425c-9b83-e7cf69211049","key":"api-key","value":"{{api_key}}","disabled":true},{"id":"4dc1d2a5-4fc7-4c44-8761-72c9f47e94a6","key":"task_id","value":"{{task_id}}","disabled":true}]}