{"info":{"_postman_id":"638494df-edea-478f-8c6a-a481fb0ad6ec","name":"It's AI API","description":"<html><head></head><body><p>AI content detection, plagiarism and grammar checking API. One endpoint per scan type. Authenticate with <code>Authorization: APIKey &lt;your_key&gt;</code> header.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"33759613","collectionId":"638494df-edea-478f-8c6a-a481fb0ad6ec","publishedId":"2sBYArSrc8","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"6B84F0"},"publishDate":"2026-08-18T18:01:17.000Z"},"item":[{"name":"v2","item":[{"name":"Analyze text","id":"bba438bf-2338-4dec-ac05-c6029d35490e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/text","description":"<p>Submit a single text for AI detection analysis.</p>\n<p>Authenticate via <code>Authorization: APIKey &lt;your_key&gt;</code> header or <code>api_key</code> field in the request body.\nThe request is synchronous — it blocks until the analysis completes (up to 5 minutes).</p>\n<hr />\n<h2 id=\"request-fields\">Request fields</h2>\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>text</code></td>\n<td>string</td>\n<td><strong>yes</strong></td>\n<td>The text to analyze. Minimum 200 characters, maximum depends on your subscription plan.</td>\n</tr>\n<tr>\n<td><code>api_key</code></td>\n<td>string</td>\n<td>no</td>\n<td>API key — alternative to the <code>Authorization</code> header.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"successful-response-200\">Successful response (200)</h2>\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>score</code></td>\n<td>float</td>\n<td>Overall AI detection score from 0.0 (human) to 1.0 (AI).</td>\n</tr>\n<tr>\n<td><code>ai_percentage</code></td>\n<td>float</td>\n<td>Fraction of text detected as AI-generated (0.0–1.0). Equals <code>probabilities.ai + probabilities.ai_low</code>.</td>\n</tr>\n<tr>\n<td><code>probabilities</code></td>\n<td>object</td>\n<td>Fraction of AI-generated vs human-written sentences in the text.</td>\n</tr>\n<tr>\n<td><code>probabilities.ai</code></td>\n<td>float</td>\n<td>Fraction of sentences confidently classified as AI-generated (0.0–1.0).</td>\n</tr>\n<tr>\n<td><code>probabilities.human</code></td>\n<td>float</td>\n<td>Fraction of sentences confidently classified as human-written (0.0–1.0).</td>\n</tr>\n<tr>\n<td><code>probabilities.ai_low</code></td>\n<td>float</td>\n<td>Fraction of sentences with low-confidence AI classification (0.0–1.0).</td>\n</tr>\n<tr>\n<td><code>probabilities.human_low</code></td>\n<td>float</td>\n<td>Fraction of sentences with low-confidence human classification (0.0–1.0).</td>\n</tr>\n<tr>\n<td><code>segments</code></td>\n<td>float[]</td>\n<td>Per-sentence AI scores.</td>\n</tr>\n<tr>\n<td><code>report_id</code></td>\n<td>string (uuid)</td>\n<td>Report identifier. Download the PDF certificate at <code>GET /api/report/download/{report_id}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-response\">Error response</h2>\n<p>All errors follow the same format:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\"status\": \"error\", \"error\": {\"code\": \"&lt;type&gt;:&lt;code&gt;\", \"message\": \"...\"}}\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP status</th>\n<th>Code</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>403</td>\n<td><code>permission_denied:api_key_does_not_exist</code></td>\n<td>The API key is not recognised.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>not_authenticated:not_authenticated</code></td>\n<td>No API key was supplied.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>permission_denied:api_key_plan_incompatible</code></td>\n<td>Your plan does not include API access.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>rich_limit:words_limit_reached</code></td>\n<td>Word quota exhausted.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>rich_limit:text_exceeds_character_limit</code></td>\n<td>Text exceeds the maximum length for your plan.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:low_words</code></td>\n<td>Text is shorter than 200 characters.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:only_english</code></td>\n<td>Unsupported language detected.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:no_text_provided</code></td>\n<td><code>text</code> field is missing.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:rate_limit</code></td>\n<td>Requests-per-second limit for your plan exceeded.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>server:service_unavailable</code></td>\n<td>Internal processing error or timeout.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":true,"source":{"_postman_id":"638494df-edea-478f-8c6a-a481fb0ad6ec","id":"638494df-edea-478f-8c6a-a481fb0ad6ec","name":"It's AI API","type":"collection"}},"urlObject":{"path":["api","v2","text"],"host":["https://api.its-ai.org"],"query":[],"variable":[]}},"response":[{"id":"e858d888-c68a-4410-aa18-89616eeef4af","name":"200 OK","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/text"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"score\": 0.71,\n  \"ai_percentage\": 0.24,\n  \"probabilities\": {\n    \"ai\": 0.11,\n    \"ai_low\": 0.55,\n    \"human\": 0.83,\n    \"human_low\": 0.99\n  },\n  \"segments\": [\n    0.95,\n    0.35,\n    0.62,\n    0.48,\n    0.77,\n    0.21,\n    0.56,\n    0.68,\n    0.14,\n    0.83,\n    0.39,\n    0.72,\n    0.27,\n    0.91,\n    0.44,\n    0.66,\n    0.18,\n    0.52,\n    0.79,\n    0.31\n  ],\n  \"report_id\": \"00000000-0000-0000-0000-000000000000\"\n}"},{"id":"6a9bc147-d0dc-414b-8642-9684f40f8192","name":"400 Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/text"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"validation:low_words\",\n    \"message\": \"Try typing more text (>200 characters) so we can give you more accurate results\"\n  }\n}"},{"id":"5a08d9ec-71da-44bb-92c4-09162d389e49","name":"403 Forbidden — unknown API key","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/text"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"permission_denied:api_key_does_not_exist\",\n    \"message\": \"Invalid API key provided\"\n  }\n}"},{"id":"37b2dbe8-b637-4308-ab9a-f39c2d02f50f","name":"403 Forbidden","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/text"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"rich_limit:words_limit_reached\",\n    \"message\": \"Word limit reached\"\n  }\n}"},{"id":"818b3a66-3e4e-4054-9de6-a7dab2ffe7ee","name":"400 Bad Request — rate limit","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/text"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"validation:rate_limit\",\n    \"message\": \"Rate limit exceeded\"\n  }\n}"},{"id":"06428bbf-3207-4676-8e1c-de20209b7528","name":"500 Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/text"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"server:service_unavailable\",\n    \"message\": \"Service is temporarily unavailable. Please, try again later\"\n  }\n}"}],"_postman_id":"bba438bf-2338-4dec-ac05-c6029d35490e"},{"name":"Batch analyze texts","id":"56cd888d-c474-417b-adb0-96025d02fa3c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/batch","description":"<p>Submit multiple texts for AI detection analysis in a single request.</p>\n<p>Authenticate via <code>Authorization: APIKey &lt;your_key&gt;</code> header or <code>api_key</code> field in the request body.\nThe request is synchronous — it blocks until all analyses complete (up to 5 minutes).</p>\n<p>Invalid texts return per-item errors instead of failing the entire request.</p>\n<hr />\n<h2 id=\"request-fields\">Request fields</h2>\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>string[]</td>\n<td><strong>yes</strong></td>\n<td>List of texts to analyze. Each text must be at least 200 characters and not exceed the maximum length for your plan.</td>\n</tr>\n<tr>\n<td><code>api_key</code></td>\n<td>string</td>\n<td>no</td>\n<td>API key — alternative to the <code>Authorization</code> header.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Batch size limit:</strong> 250 texts per request. That is the Enterprise allowance, and API keys are an Enterprise feature — the smaller per-plan batch limits (Pay as you go 1, Free 3, Plus 10, Premium 25, Pro 50) apply inside the web app, and are only reachable through the API by a key whose plan was downgraded, which the plan gate rejects first.</p>\n<hr />\n<h2 id=\"successful-response-200\">Successful response (200)</h2>\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>results</code></td>\n<td>object[]</td>\n<td>Array of results, one per submitted text, in the same order.</td>\n</tr>\n<tr>\n<td><code>results[].score</code></td>\n<td>float|null</td>\n<td>AI detection score (0.0–1.0). <code>null</code> if this text failed validation.</td>\n</tr>\n<tr>\n<td><code>results[].ai_percentage</code></td>\n<td>float|null</td>\n<td>AI-generated fraction (0.0–1.0). <code>null</code> if error.</td>\n</tr>\n<tr>\n<td><code>results[].probabilities</code></td>\n<td>object|null</td>\n<td>Sentence classification breakdown. <code>null</code> if error.</td>\n</tr>\n<tr>\n<td><code>results[].probabilities.ai</code></td>\n<td>float</td>\n<td>Fraction of sentences confidently classified as AI-generated (0.0–1.0).</td>\n</tr>\n<tr>\n<td><code>results[].probabilities.human</code></td>\n<td>float</td>\n<td>Fraction of sentences confidently classified as human-written (0.0–1.0).</td>\n</tr>\n<tr>\n<td><code>results[].probabilities.ai_low</code></td>\n<td>float</td>\n<td>Fraction of sentences with low-confidence AI classification (0.0–1.0).</td>\n</tr>\n<tr>\n<td><code>results[].probabilities.human_low</code></td>\n<td>float</td>\n<td>Fraction of sentences with low-confidence human classification (0.0–1.0).</td>\n</tr>\n<tr>\n<td><code>results[].segments</code></td>\n<td>float[]</td>\n<td>Per-sentence AI scores.</td>\n</tr>\n<tr>\n<td><code>results[].report_id</code></td>\n<td>string (uuid)|null</td>\n<td>Report identifier, <code>null</code> if error. Download the PDF certificate at <code>GET /api/report/download/{report_id}</code>.</td>\n</tr>\n<tr>\n<td><code>results[].error</code></td>\n<td>object|null</td>\n<td><code>null</code> on success, or <code>{code, message}</code> for validation errors.</td>\n</tr>\n<tr>\n<td><code>results[].error.code</code></td>\n<td>string</td>\n<td>Error code, e.g. <code>validation:low_words</code>.</td>\n</tr>\n<tr>\n<td><code>results[].error.message</code></td>\n<td>string</td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-response\">Error response</h2>\n<p>All errors follow the same format:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\"status\": \"error\", \"error\": {\"code\": \"&lt;type&gt;:&lt;code&gt;\", \"message\": \"...\"}}\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP status</th>\n<th>Code</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>403</td>\n<td><code>permission_denied:api_key_does_not_exist</code></td>\n<td>The API key is not recognised.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>not_authenticated:not_authenticated</code></td>\n<td>No API key was supplied.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>permission_denied:api_key_plan_incompatible</code></td>\n<td>Your plan does not include API access.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>rich_limit:words_limit_reached</code></td>\n<td>Word quota exhausted.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:batch_limit</code></td>\n<td>Number of texts exceeds the batch size limit for your plan.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:no_text_provided</code></td>\n<td><code>texts</code> is missing, or is not a list of strings.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:rate_limit</code></td>\n<td>Requests-per-second limit for your plan exceeded.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>server:server</code></td>\n<td>Internal processing error.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>server:service_unavailable</code></td>\n<td>Timeout or service temporarily unavailable.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":true,"source":{"_postman_id":"638494df-edea-478f-8c6a-a481fb0ad6ec","id":"638494df-edea-478f-8c6a-a481fb0ad6ec","name":"It's AI API","type":"collection"}},"urlObject":{"path":["api","v2","batch"],"host":["https://api.its-ai.org"],"query":[],"variable":[]}},"response":[{"id":"54b7015b-0ce9-4cf6-baba-d9f09d37c654","name":"200 OK","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/batch"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"score\": 0.86,\n      \"ai_percentage\": 0.21,\n      \"probabilities\": {\n        \"ai\": 0.42,\n        \"ai_low\": 0.22,\n        \"human\": 0.27,\n        \"human_low\": 0.45\n      },\n      \"segments\": [\n        0.12,\n        0.58,\n        0.33,\n        0.74,\n        0.91,\n        0.26,\n        0.49,\n        0.65,\n        0.18,\n        0.82,\n        0.37,\n        0.69,\n        0.24,\n        0.88,\n        0.41,\n        0.57,\n        0.13,\n        0.52,\n        0.79,\n        0.31\n      ],\n      \"report_id\": \"00000000-0000-0000-0000-000000000000\",\n      \"error\": null\n    },\n    {\n      \"score\": null,\n      \"ai_percentage\": null,\n      \"probabilities\": null,\n      \"segments\": [],\n      \"report_id\": null,\n      \"error\": {\n        \"code\": \"validation:low_words\",\n        \"message\": \"Try typing more text (>200 characters) so we can give you more accurate results\"\n      }\n    }\n  ]\n}"},{"id":"9699cca6-2926-4ab1-b689-add64e409b42","name":"400 Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/batch"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"validation:low_words\",\n    \"message\": \"Try typing more text (>200 characters) so we can give you more accurate results\"\n  }\n}"},{"id":"7122e185-502a-4e69-969c-2993e283017e","name":"403 Forbidden — unknown API key","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/batch"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"permission_denied:api_key_does_not_exist\",\n    \"message\": \"Invalid API key provided\"\n  }\n}"},{"id":"f158c153-ae0c-4038-a239-3284d8b0676d","name":"403 Forbidden","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/batch"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"rich_limit:words_limit_reached\",\n    \"message\": \"Word limit reached\"\n  }\n}"},{"id":"fc6f3c46-8e3f-4c8e-9232-385edf984863","name":"400 Bad Request — rate limit","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/batch"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"validation:rate_limit\",\n    \"message\": \"Rate limit exceeded\"\n  }\n}"},{"id":"4807e2b9-1607-4a42-b914-1e3a4e65de30","name":"500 Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/batch"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"server:service_unavailable\",\n    \"message\": \"Service is temporarily unavailable. Please, try again later\"\n  }\n}"}],"_postman_id":"56cd888d-c474-417b-adb0-96025d02fa3c"},{"name":"Check text for plagiarism","id":"e2fc0a95-d0ac-44e3-80d2-65078420fdcc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/plagiarism/text","description":"<p>Submit a single text for a plagiarism check.</p>\n<p>Authenticate via <code>Authorization: APIKey &lt;your_key&gt;</code> header or <code>api_key</code> field in the request body.\nThe request is synchronous — it blocks until the check completes (up to ~5 minutes). A plagiarism check costs <strong>twice</strong> the words of an AI scan of the same text.</p>\n<hr />\n<h2 id=\"request-fields\">Request fields</h2>\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>text</code></td>\n<td>string</td>\n<td><strong>yes</strong></td>\n<td>The text to check. Minimum 200 characters, maximum depends on your subscription plan.</td>\n</tr>\n<tr>\n<td><code>api_key</code></td>\n<td>string</td>\n<td>no</td>\n<td>API key — alternative to the <code>Authorization</code> header.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"successful-response-200\">Successful response (200)</h2>\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>score</code></td>\n<td>float</td>\n<td>Share of the text found in other sources, from 0.0 (original) to 1.0 (fully copied). Same direction as the AI score: higher means worse.</td>\n</tr>\n<tr>\n<td><code>results</code></td>\n<td>object[]</td>\n<td>One entry per matched source.</td>\n</tr>\n<tr>\n<td><code>results[].title</code></td>\n<td>string</td>\n<td>Title of the matched source.</td>\n</tr>\n<tr>\n<td><code>results[].link</code></td>\n<td>string</td>\n<td>Domain / URL of the matched source.</td>\n</tr>\n<tr>\n<td><code>results[].id</code></td>\n<td>integer</td>\n<td>Zero-based index of this source within <code>results</code>.</td>\n</tr>\n<tr>\n<td><code>results[].score</code></td>\n<td>float</td>\n<td>Share of the text matched by this particular source (0.0–1.0).</td>\n</tr>\n<tr>\n<td><code>results[].matches</code></td>\n<td>object[]</td>\n<td>Matched fragments for this source.</td>\n</tr>\n<tr>\n<td><code>results[].matches[].text_sentence</code></td>\n<td>string</td>\n<td>Fragment of the submitted text that matched.</td>\n</tr>\n<tr>\n<td><code>results[].matches[].match_text</code></td>\n<td>string</td>\n<td>The matching fragment in the source.</td>\n</tr>\n<tr>\n<td><code>results[].matches[].match_score</code></td>\n<td>float</td>\n<td>Similarity between the two fragments (0.0–1.0).</td>\n</tr>\n<tr>\n<td><code>results[].matches[].link</code></td>\n<td>string</td>\n<td>Exact URL of the matched page.</td>\n</tr>\n<tr>\n<td><code>report_id</code></td>\n<td>string (uuid)</td>\n<td>Report identifier. Download the PDF certificate at <code>GET /api/report/download/{report_id}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-response\">Error response</h2>\n<p>All errors follow the same format:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\"status\": \"error\", \"error\": {\"code\": \"&lt;type&gt;:&lt;code&gt;\", \"message\": \"...\"}}\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP status</th>\n<th>Code</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>403</td>\n<td><code>permission_denied:api_key_does_not_exist</code></td>\n<td>The API key is not recognised.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>not_authenticated:not_authenticated</code></td>\n<td>No API key was supplied.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>permission_denied:api_key_plan_incompatible</code></td>\n<td>Your plan does not include API access.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>rich_limit:words_limit_reached</code></td>\n<td>Word quota exhausted.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>rich_limit:plagiarism_attempts</code></td>\n<td>Free plagiarism-check limit reached.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>rich_limit:text_exceeds_character_limit</code></td>\n<td>Text exceeds the maximum length for your plan.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:low_words</code></td>\n<td>Text is shorter than 200 characters.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:only_english</code></td>\n<td>Unsupported language detected.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:no_text_provided</code></td>\n<td><code>text</code> field is missing.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:rate_limit</code></td>\n<td>Requests-per-second limit for your plan exceeded.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>server:service_unavailable</code></td>\n<td>The check did not finish within the timeout.</td>\n</tr>\n<tr>\n<td>503</td>\n<td><code>server:&lt;code&gt;</code></td>\n<td>The plagiarism checker reported a failure.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":true,"source":{"_postman_id":"638494df-edea-478f-8c6a-a481fb0ad6ec","id":"638494df-edea-478f-8c6a-a481fb0ad6ec","name":"It's AI API","type":"collection"}},"urlObject":{"path":["api","v2","plagiarism","text"],"host":["https://api.its-ai.org"],"query":[],"variable":[]}},"response":[{"id":"7f1268dc-ff09-4d68-be29-8aa9fc419416","name":"200 OK","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/plagiarism/text"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"score\": 0.124,\n  \"results\": [\n    {\n      \"title\": \"The history of the printing press\",\n      \"link\": \"example.com\",\n      \"id\": 0,\n      \"matches\": [\n        {\n          \"text_sentence\": \"The printing press was invented in the fifteenth century.\",\n          \"match_text\": \"The printing press was invented in the 15th century.\",\n          \"match_score\": 0.93,\n          \"link\": \"https://example.com/articles/printing-press\"\n        }\n      ],\n      \"score\": 0.124\n    }\n  ],\n  \"report_id\": \"00000000-0000-0000-0000-000000000000\"\n}"},{"id":"428a6bcf-38dd-4e5f-955d-7ca8d506dfae","name":"400 Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/plagiarism/text"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"validation:low_words\",\n    \"message\": \"Try typing more text (>200 characters) so we can give you more accurate results\"\n  }\n}"},{"id":"fca86707-4e7b-4a84-b281-ca0d2878f79f","name":"403 Forbidden — unknown API key","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/plagiarism/text"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"permission_denied:api_key_does_not_exist\",\n    \"message\": \"Invalid API key provided\"\n  }\n}"},{"id":"957d57db-fa60-4433-947a-41ae13d46ec3","name":"403 Forbidden","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/plagiarism/text"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"rich_limit:plagiarism_attempts\",\n    \"message\": \"You have reached your free plagiarism attempts limit\"\n  }\n}"},{"id":"5c2d841f-09cf-49c4-9940-5a8302aacc67","name":"400 Bad Request — rate limit","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/plagiarism/text"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"validation:rate_limit\",\n    \"message\": \"Rate limit exceeded\"\n  }\n}"},{"id":"6cf54620-725d-4aac-9d50-e56d2f975ce9","name":"500 Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/plagiarism/text"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"server:service_unavailable\",\n    \"message\": \"Service is temporarily unavailable. Please, try again later\"\n  }\n}"},{"id":"eefc8e62-71f3-428f-9df2-e82c243c8648","name":"503 Service Unavailable","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/plagiarism/text"},"status":"Service Unavailable","code":503,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"server:service_unavailable\",\n    \"message\": \"Service is temporarily unavailable. Please, try again later\"\n  }\n}"}],"_postman_id":"e2fc0a95-d0ac-44e3-80d2-65078420fdcc"},{"name":"Check text grammar","id":"c8d56bef-717d-4bc6-bca8-fd642f0b009c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/grammar/text","description":"<p>Submit a single text for a grammar and style check.</p>\n<p>Authenticate via <code>Authorization: APIKey &lt;your_key&gt;</code> header or <code>api_key</code> field in the request body.\nThe request is synchronous — it blocks until the check completes. A grammar check costs the same number of words as an AI scan of the same text (a plagiarism check costs twice as much).</p>\n<p>Unlike AI detection, this endpoint is <strong>multilingual</strong> and accepts short texts (from 20 characters).</p>\n<hr />\n<h2 id=\"request-fields\">Request fields</h2>\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>text</code></td>\n<td>string</td>\n<td><strong>yes</strong></td>\n<td>The text to check. Minimum 20 characters, maximum depends on your subscription plan.</td>\n</tr>\n<tr>\n<td><code>api_key</code></td>\n<td>string</td>\n<td>no</td>\n<td>API key — alternative to the <code>Authorization</code> header.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"successful-response-200\">Successful response (200)</h2>\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>matches</code></td>\n<td>object[]</td>\n<td>One entry per detected issue.</td>\n</tr>\n<tr>\n<td><code>matches[].id</code></td>\n<td>string</td>\n<td>Identifier of the issue within this response.</td>\n</tr>\n<tr>\n<td><code>matches[].offset</code></td>\n<td>integer</td>\n<td>Zero-based character offset of the issue in the text.</td>\n</tr>\n<tr>\n<td><code>matches[].length</code></td>\n<td>integer</td>\n<td>Length of the issue in characters.</td>\n</tr>\n<tr>\n<td><code>matches[].context</code></td>\n<td>string</td>\n<td>Surrounding text of the issue.</td>\n</tr>\n<tr>\n<td><code>matches[].message</code></td>\n<td>string</td>\n<td>Full description of the issue.</td>\n</tr>\n<tr>\n<td><code>matches[].short_message</code></td>\n<td>string</td>\n<td>Short description, may be empty.</td>\n</tr>\n<tr>\n<td><code>matches[].replacements</code></td>\n<td>string[]</td>\n<td>Suggested corrections, best first.</td>\n</tr>\n<tr>\n<td><code>matches[].severity</code></td>\n<td>string</td>\n<td><code>error</code>, <code>warning</code> or <code>style</code>.</td>\n</tr>\n<tr>\n<td><code>matches[].issue_type</code></td>\n<td>string</td>\n<td>LanguageTool issue type.</td>\n</tr>\n<tr>\n<td><code>matches[].category</code> / <code>category_id</code></td>\n<td>string</td>\n<td>Issue category.</td>\n</tr>\n<tr>\n<td><code>matches[].rule_id</code></td>\n<td>string</td>\n<td>LanguageTool rule that fired.</td>\n</tr>\n<tr>\n<td><code>matches[].url</code></td>\n<td>string|null</td>\n<td>Documentation link for the rule, when available.</td>\n</tr>\n<tr>\n<td><code>language</code></td>\n<td>string</td>\n<td>Detected language code, e.g. <code>en-US</code>.</td>\n</tr>\n<tr>\n<td><code>stats</code></td>\n<td>object</td>\n<td>Issue counts by severity: <code>errors</code>, <code>warnings</code>, <code>style</code>, <code>total</code>.</td>\n</tr>\n<tr>\n<td><code>report_id</code></td>\n<td>string (uuid)</td>\n<td>Report identifier. <strong>Note:</strong> the PDF certificate at <code>GET /api/report/download/{report_id}</code> covers AI and plagiarism results only, so it returns <code>404</code> for a grammar-only scan.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-response\">Error response</h2>\n<p>All errors follow the same format:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\"status\": \"error\", \"error\": {\"code\": \"&lt;type&gt;:&lt;code&gt;\", \"message\": \"...\"}}\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP status</th>\n<th>Code</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>403</td>\n<td><code>permission_denied:api_key_does_not_exist</code></td>\n<td>The API key is not recognised.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>not_authenticated:not_authenticated</code></td>\n<td>No API key was supplied.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>permission_denied:api_key_plan_incompatible</code></td>\n<td>Your plan does not include API access.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>rich_limit:words_limit_reached</code></td>\n<td>Word quota exhausted.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>rich_limit:grammar_attempts</code></td>\n<td>Free grammar-check limit reached.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>rich_limit:text_exceeds_character_limit</code></td>\n<td>Text exceeds the maximum length for your plan.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:low_words</code></td>\n<td>Text is too short.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:no_text_provided</code></td>\n<td><code>text</code> field is missing.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:rate_limit</code></td>\n<td>Requests-per-second limit for your plan exceeded.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>server:service_unavailable</code></td>\n<td>The check did not finish within the timeout.</td>\n</tr>\n<tr>\n<td>503</td>\n<td><code>server:&lt;code&gt;</code></td>\n<td>The check failed, or grammar checking is disabled.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":true,"source":{"_postman_id":"638494df-edea-478f-8c6a-a481fb0ad6ec","id":"638494df-edea-478f-8c6a-a481fb0ad6ec","name":"It's AI API","type":"collection"}},"urlObject":{"path":["api","v2","grammar","text"],"host":["https://api.its-ai.org"],"query":[],"variable":[]}},"response":[{"id":"a977fd8f-7b2c-484f-a271-90ca04921585","name":"200 OK","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/grammar/text"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"matches\": [\n    {\n      \"id\": \"0\",\n      \"offset\": 4,\n      \"length\": 2,\n      \"context\": \"She go to school every single day, and she is ...\",\n      \"rule_id\": \"HE_VERB_AGR\",\n      \"category_id\": \"GRAMMAR\",\n      \"category\": \"Grammar\",\n      \"issue_type\": \"grammar\",\n      \"severity\": \"error\",\n      \"short_message\": \"Agreement error\",\n      \"message\": \"The pronoun ‘She’ is usually used with a third-person or a past tense verb.\",\n      \"replacements\": [\n        \"goes\",\n        \"went\"\n      ],\n      \"url\": \"https://languagetool.org/insights/post/grammar-subject-verb-agreement/\"\n    },\n    {\n      \"id\": \"1\",\n      \"offset\": 46,\n      \"length\": 9,\n      \"context\": \"... to school every single day, and she is very very happy about  it.\",\n      \"rule_id\": \"RB_RB_COMMA\",\n      \"category_id\": \"PUNCTUATION\",\n      \"category\": \"Punctuation\",\n      \"issue_type\": \"uncategorized\",\n      \"severity\": \"style\",\n      \"short_message\": \"\",\n      \"message\": \"Consider adding a comma between these intensifiers.\",\n      \"replacements\": [\n        \"very, very\",\n        \"very\"\n      ],\n      \"url\": null\n    },\n    {\n      \"id\": \"2\",\n      \"offset\": 67,\n      \"length\": 2,\n      \"context\": \"...le day, and she is very very happy about  it.\",\n      \"rule_id\": \"CONSECUTIVE_SPACES\",\n      \"category_id\": \"TYPOGRAPHY\",\n      \"category\": \"Typography\",\n      \"issue_type\": \"typographical\",\n      \"severity\": \"error\",\n      \"short_message\": \"\",\n      \"message\": \"It seems like there are too many consecutive spaces here.\",\n      \"replacements\": [\n        \" \"\n      ],\n      \"url\": null\n    }\n  ],\n  \"language\": \"en-US\",\n  \"stats\": {\n    \"errors\": 2,\n    \"warnings\": 0,\n    \"style\": 1,\n    \"total\": 3\n  },\n  \"report_id\": \"00000000-0000-0000-0000-000000000000\"\n}"},{"id":"d34e286c-0a03-4711-b79c-87a8ee75b453","name":"400 Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/grammar/text"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"validation:low_words\",\n    \"message\": \"Try typing more text (>20 characters) so we can give you more accurate results\"\n  }\n}"},{"id":"1ad408b0-3e14-448d-94bd-46d4e5cd356a","name":"403 Forbidden — unknown API key","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/grammar/text"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"permission_denied:api_key_does_not_exist\",\n    \"message\": \"Invalid API key provided\"\n  }\n}"},{"id":"3ef4dc40-fbe4-4f5d-976a-e82431fe1698","name":"403 Forbidden","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/grammar/text"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"rich_limit:grammar_attempts\",\n    \"message\": \"You have reached your free grammar checks limit\"\n  }\n}"},{"id":"1712b682-a0b4-4152-9540-9036b5963df6","name":"400 Bad Request — rate limit","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/grammar/text"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"validation:rate_limit\",\n    \"message\": \"Rate limit exceeded\"\n  }\n}"},{"id":"5927af2e-8b04-4a25-a7f4-ce2d574b8ef7","name":"500 Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/grammar/text"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"server:service_unavailable\",\n    \"message\": \"Service is temporarily unavailable. Please, try again later\"\n  }\n}"},{"id":"071fc852-f484-4141-b5d5-07872b38d9af","name":"503 Service Unavailable","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/grammar/text"},"status":"Service Unavailable","code":503,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"server:service_unavailable\",\n    \"message\": \"Service is temporarily unavailable. Please, try again later\"\n  }\n}"}],"_postman_id":"c8d56bef-717d-4bc6-bca8-fd642f0b009c"},{"name":"Batch check text grammar","id":"607bf4a3-5f9f-4ee7-90d6-2a2b4963fbdb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/grammar/batch","description":"<p>Submit multiple texts for a grammar and style check in a single request.</p>\n<p>Authenticate via <code>Authorization: APIKey &lt;your_key&gt;</code> header or <code>api_key</code> field in the request body.\nThe request is synchronous. Invalid texts return per-item errors instead of failing the entire request. Each text costs the same number of words as an AI scan of it; the whole batch is reserved up front, so an unaffordable batch is rejected before any text is checked.</p>\n<hr />\n<h2 id=\"request-fields\">Request fields</h2>\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>string[]</td>\n<td><strong>yes</strong></td>\n<td>Texts to check. Each must be at least 20 characters and not exceed the maximum length for your plan.</td>\n</tr>\n<tr>\n<td><code>api_key</code></td>\n<td>string</td>\n<td>no</td>\n<td>API key — alternative to the <code>Authorization</code> header.</td>\n</tr>\n</tbody>\n</table>\n</div><p>The batch size limit per plan is the same as for AI batch analysis.</p>\n<hr />\n<h2 id=\"successful-response-200\">Successful response (200)</h2>\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>results</code></td>\n<td>object[]</td>\n<td>One result per submitted text, in the same order.</td>\n</tr>\n<tr>\n<td><code>results[].error</code></td>\n<td>object|null</td>\n<td><code>null</code> on success, or <code>{code, message}</code> when this text failed. On failure the other fields are empty.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Each successful item carries the same fields as the single-text endpoint:</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>matches</code></td>\n<td>object[]</td>\n<td>One entry per detected issue.</td>\n</tr>\n<tr>\n<td><code>matches[].id</code></td>\n<td>string</td>\n<td>Identifier of the issue within this response.</td>\n</tr>\n<tr>\n<td><code>matches[].offset</code></td>\n<td>integer</td>\n<td>Zero-based character offset of the issue in the text.</td>\n</tr>\n<tr>\n<td><code>matches[].length</code></td>\n<td>integer</td>\n<td>Length of the issue in characters.</td>\n</tr>\n<tr>\n<td><code>matches[].context</code></td>\n<td>string</td>\n<td>Surrounding text of the issue.</td>\n</tr>\n<tr>\n<td><code>matches[].message</code></td>\n<td>string</td>\n<td>Full description of the issue.</td>\n</tr>\n<tr>\n<td><code>matches[].short_message</code></td>\n<td>string</td>\n<td>Short description, may be empty.</td>\n</tr>\n<tr>\n<td><code>matches[].replacements</code></td>\n<td>string[]</td>\n<td>Suggested corrections, best first.</td>\n</tr>\n<tr>\n<td><code>matches[].severity</code></td>\n<td>string</td>\n<td><code>error</code>, <code>warning</code> or <code>style</code>.</td>\n</tr>\n<tr>\n<td><code>matches[].issue_type</code></td>\n<td>string</td>\n<td>LanguageTool issue type.</td>\n</tr>\n<tr>\n<td><code>matches[].category</code> / <code>category_id</code></td>\n<td>string</td>\n<td>Issue category.</td>\n</tr>\n<tr>\n<td><code>matches[].rule_id</code></td>\n<td>string</td>\n<td>LanguageTool rule that fired.</td>\n</tr>\n<tr>\n<td><code>matches[].url</code></td>\n<td>string|null</td>\n<td>Documentation link for the rule, when available.</td>\n</tr>\n<tr>\n<td><code>language</code></td>\n<td>string</td>\n<td>Detected language code, e.g. <code>en-US</code>.</td>\n</tr>\n<tr>\n<td><code>stats</code></td>\n<td>object</td>\n<td>Issue counts by severity: <code>errors</code>, <code>warnings</code>, <code>style</code>, <code>total</code>.</td>\n</tr>\n<tr>\n<td><code>report_id</code></td>\n<td>string (uuid)|null</td>\n<td>Report identifier for this text.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-response\">Error response</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP status</th>\n<th>Code</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>403</td>\n<td><code>permission_denied:api_key_does_not_exist</code></td>\n<td>The API key is not recognised.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>not_authenticated:not_authenticated</code></td>\n<td>No API key was supplied.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>permission_denied:api_key_plan_incompatible</code></td>\n<td>Your plan does not include API access.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>rich_limit:words_limit_reached</code></td>\n<td>Word quota exhausted by the batch as a whole.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:batch_limit</code></td>\n<td>Number of texts exceeds the batch size limit for your plan.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:no_text_provided</code></td>\n<td><code>texts</code> is missing, or is not a list of strings.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:rate_limit</code></td>\n<td>Requests-per-second limit for your plan exceeded.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>server:service_unavailable</code></td>\n<td>Unexpected server error. A text that fails or times out on its own comes back in <code>results[].error</code> instead.</td>\n</tr>\n<tr>\n<td>503</td>\n<td><code>server:service_unavailable</code></td>\n<td>Grammar checking is disabled.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Per-item codes, returned inside <code>results[].error</code> rather than as an HTTP error:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Code</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>validation:low_words</code></td>\n<td>This text is shorter than 20 characters.</td>\n</tr>\n<tr>\n<td><code>rich_limit:text_exceeds_max_length</code></td>\n<td>This text exceeds the maximum length for your plan. Carries <code>text_index</code> (1-based), <code>text_length</code> and <code>max_length</code>.</td>\n</tr>\n<tr>\n<td><code>server:&lt;code&gt;</code></td>\n<td>The check failed for this text.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":true,"source":{"_postman_id":"638494df-edea-478f-8c6a-a481fb0ad6ec","id":"638494df-edea-478f-8c6a-a481fb0ad6ec","name":"It's AI API","type":"collection"}},"urlObject":{"path":["api","v2","grammar","batch"],"host":["https://api.its-ai.org"],"query":[],"variable":[]}},"response":[{"id":"cb83d8a9-d14f-49d1-a0b8-c49e3fcf3ac5","name":"200 OK","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/grammar/batch"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"matches\": [\n        {\n          \"id\": \"0\",\n          \"offset\": 4,\n          \"length\": 2,\n          \"context\": \"She go to school every single day, and she is ...\",\n          \"rule_id\": \"HE_VERB_AGR\",\n          \"category_id\": \"GRAMMAR\",\n          \"category\": \"Grammar\",\n          \"issue_type\": \"grammar\",\n          \"severity\": \"error\",\n          \"short_message\": \"Agreement error\",\n          \"message\": \"The pronoun ‘She’ is usually used with a third-person or a past tense verb.\",\n          \"replacements\": [\n            \"goes\",\n            \"went\"\n          ],\n          \"url\": \"https://languagetool.org/insights/post/grammar-subject-verb-agreement/\"\n        },\n        {\n          \"id\": \"1\",\n          \"offset\": 46,\n          \"length\": 9,\n          \"context\": \"... to school every single day, and she is very very happy about  it.\",\n          \"rule_id\": \"RB_RB_COMMA\",\n          \"category_id\": \"PUNCTUATION\",\n          \"category\": \"Punctuation\",\n          \"issue_type\": \"uncategorized\",\n          \"severity\": \"style\",\n          \"short_message\": \"\",\n          \"message\": \"Consider adding a comma between these intensifiers.\",\n          \"replacements\": [\n            \"very, very\",\n            \"very\"\n          ],\n          \"url\": null\n        },\n        {\n          \"id\": \"2\",\n          \"offset\": 67,\n          \"length\": 2,\n          \"context\": \"...le day, and she is very very happy about  it.\",\n          \"rule_id\": \"CONSECUTIVE_SPACES\",\n          \"category_id\": \"TYPOGRAPHY\",\n          \"category\": \"Typography\",\n          \"issue_type\": \"typographical\",\n          \"severity\": \"error\",\n          \"short_message\": \"\",\n          \"message\": \"It seems like there are too many consecutive spaces here.\",\n          \"replacements\": [\n            \" \"\n          ],\n          \"url\": null\n        }\n      ],\n      \"language\": \"en-US\",\n      \"stats\": {\n        \"errors\": 2,\n        \"warnings\": 0,\n        \"style\": 1,\n        \"total\": 3\n      },\n      \"report_id\": \"00000000-0000-0000-0000-000000000000\",\n      \"error\": null\n    },\n    {\n      \"matches\": [],\n      \"language\": \"\",\n      \"stats\": {\n        \"errors\": 0,\n        \"warnings\": 0,\n        \"style\": 0,\n        \"total\": 0\n      },\n      \"report_id\": null,\n      \"error\": {\n        \"code\": \"validation:low_words\",\n        \"message\": \"Try typing more text (>20 characters) so we can give you more accurate results\"\n      }\n    }\n  ]\n}"},{"id":"58e1a27c-29ca-4f39-9cb5-fa20b2bac170","name":"400 Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/grammar/batch"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"validation:batch_limit\",\n    \"message\": \"Maximum batch size exceeded\"\n  }\n}"},{"id":"373cf44d-5fe2-488a-aeb9-3d7db902f5dc","name":"403 Forbidden — unknown API key","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/grammar/batch"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"permission_denied:api_key_does_not_exist\",\n    \"message\": \"Invalid API key provided\"\n  }\n}"},{"id":"2a661388-0e36-4c50-a196-99b290bc1900","name":"403 Forbidden","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/grammar/batch"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"rich_limit:words_limit_reached\",\n    \"message\": \"Word limit reached\"\n  }\n}"},{"id":"cdd38141-d7f5-425f-bb44-1e987c07fba0","name":"400 Bad Request — rate limit","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/grammar/batch"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"validation:rate_limit\",\n    \"message\": \"Rate limit exceeded\"\n  }\n}"},{"id":"fc88591d-b391-4e54-a2ce-f90390dda686","name":"500 Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/grammar/batch"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"server:service_unavailable\",\n    \"message\": \"Service is temporarily unavailable. Please, try again later\"\n  }\n}"},{"id":"94c7ee0e-8301-4aba-a33e-57ad0c583ceb","name":"503 Service Unavailable","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/v2/grammar/batch"},"status":"Service Unavailable","code":503,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"server:service_unavailable\",\n    \"message\": \"Service is temporarily unavailable. Please, try again later\"\n  }\n}"}],"_postman_id":"607bf4a3-5f9f-4ee7-90d6-2a2b4963fbdb"},{"name":"Download scan certificate (PDF)","id":"462f97de-a3e3-4252-a964-9020c630da3b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/pdf"}],"url":"https://api.its-ai.org/api/report/download/00000000-0000-0000-0000-000000000000","description":"<p>Download the certificate for a scan as a PDF attachment (binary body, <code>Content-Type: application/pdf</code>).</p>\n<p>Use the <code>report_id</code> returned by the analysis endpoints (<code>/api/text</code>, <code>/api/v2/text</code>, <code>/api/batch</code>, <code>/api/v2/batch</code>, <code>/api/v2/plagiarism/text</code>) as the path parameter.</p>\n<p>The scan must have at least one completed AI or plagiarism result, otherwise <code>404</code> is returned. The certificate renders AI detection and plagiarism only, so the <code>report_id</code> of a grammar check always answers <code>404 not_found:analysis_not_completed</code> — grammar results are returned in the response body instead.</p>\n<p><strong>Authenticate with the same API key that ran the scan.</strong> Through the API a certificate is served only to the account the scan belongs to — the <code>report_id</code> alone is not enough. Sharing one still works: the report page its QR code links to hands the same PDF to whoever opens it.</p>\n<hr />\n<h2 id=\"path--query-parameters\">Path &amp; query parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>In</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>report_id</code></td>\n<td>path</td>\n<td><strong>yes</strong></td>\n<td>The <code>report_id</code> (report UUID) from a scan response.</td>\n</tr>\n<tr>\n<td><code>tz</code></td>\n<td>query</td>\n<td>no</td>\n<td>IANA timezone for dates rendered in the PDF, e.g. <code>Europe/Moscow</code>. Defaults to UTC.</td>\n</tr>\n<tr>\n<td><code>lang</code></td>\n<td>query</td>\n<td>no</td>\n<td>Locale for the certificate copy, e.g. <code>fr</code>. Unknown values fall back to English.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response\">Response</h2>\n<ul>\n<li><code>200</code> — the PDF file as an attachment (<code>Content-Type: application/pdf</code>, <code>Content-Disposition: attachment; filename=...</code>).</li>\n<li><code>403</code> — <code>permission_denied:report_not_owned</code> (the scan belongs to another account, or no key was supplied).</li>\n<li><code>404</code> — <code>not_found:analysis_not_found</code> (unknown or malformed <code>report_id</code>) or <code>not_found:analysis_not_completed</code> (no finished AI or plagiarism result).</li>\n</ul>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":true,"source":{"_postman_id":"638494df-edea-478f-8c6a-a481fb0ad6ec","id":"638494df-edea-478f-8c6a-a481fb0ad6ec","name":"It's AI API","type":"collection"}},"urlObject":{"path":["api","report","download","00000000-0000-0000-0000-000000000000"],"host":["https://api.its-ai.org"],"query":[{"disabled":true,"description":{"content":"<p>Optional IANA timezone for dates in the PDF. Defaults to UTC.</p>\n","type":"text/plain"},"key":"tz","value":"Europe/Moscow"}],"variable":[]}},"response":[{"id":"9ea38340-4634-4e06-b8ba-2bb8d0032c69","name":"200 OK (PDF attachment)","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/pdf"}],"url":{"raw":"https://api.its-ai.org/api/report/download/00000000-0000-0000-0000-000000000000","host":["https://api.its-ai.org"],"path":["api","report","download","00000000-0000-0000-0000-000000000000"],"query":[{"key":"tz","value":"Europe/Moscow","description":"Optional IANA timezone for dates in the PDF. Defaults to UTC.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"application/pdf"},{"key":"Content-Disposition","value":"attachment; filename=\"scan-report Sample scan text.pdf\""}],"cookie":[],"responseTime":null,"body":""},{"id":"4e1cf9b7-c144-45a4-9efe-684c5bb734c2","name":"403 Forbidden — not your scan","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/pdf"}],"url":{"raw":"https://api.its-ai.org/api/report/download/00000000-0000-0000-0000-000000000000","host":["https://api.its-ai.org"],"path":["api","report","download","00000000-0000-0000-0000-000000000000"],"query":[{"key":"tz","value":"Europe/Moscow","description":"Optional IANA timezone for dates in the PDF. Defaults to UTC.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"permission_denied:report_not_owned\",\n    \"message\": \"This certificate belongs to the account that ran the scan\"\n  }\n}"},{"id":"e6551e73-d94e-4fd9-8e3b-c26522cf5726","name":"404 Not Found","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/pdf"}],"url":{"raw":"https://api.its-ai.org/api/report/download/00000000-0000-0000-0000-000000000000","host":["https://api.its-ai.org"],"path":["api","report","download","00000000-0000-0000-0000-000000000000"],"query":[{"key":"tz","value":"Europe/Moscow","description":"Optional IANA timezone for dates in the PDF. Defaults to UTC.","disabled":true}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"not_found:analysis_not_found\",\n    \"message\": \"Analysis not found\"\n  }\n}"}],"_postman_id":"462f97de-a3e3-4252-a964-9020c630da3b"}],"id":"061d0aff-f94a-4580-a126-e280e0322917","_postman_id":"061d0aff-f94a-4580-a126-e280e0322917","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":true,"source":{"_postman_id":"638494df-edea-478f-8c6a-a481fb0ad6ec","id":"638494df-edea-478f-8c6a-a481fb0ad6ec","name":"It's AI API","type":"collection"}}},{"name":"v1","item":[{"name":"Analyze text","id":"6c11ec3f-7938-4a40-b844-944811a713ef","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"deep_scan\": false,\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/text","description":"<p>Submit a single text for AI detection analysis.</p>\n<p>Authenticate via <code>Authorization: APIKey &lt;your_key&gt;</code> header or <code>api_key</code> field in the request body.\nThe request is synchronous — it blocks until the analysis completes (up to 5 minutes).</p>\n<hr />\n<h2 id=\"request-fields\">Request fields</h2>\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>text</code></td>\n<td>string</td>\n<td><strong>yes</strong></td>\n<td>The text to analyze. Minimum 200 characters, maximum depends on your subscription plan.</td>\n</tr>\n<tr>\n<td><code>deep_scan</code></td>\n<td>boolean</td>\n<td>no</td>\n<td>When <code>true</code>, the response includes per-sentence AI scores in <code>segmentation_tokens</code> (default: <code>false</code>). Deep scan uses more quota.</td>\n</tr>\n<tr>\n<td><code>api_key</code></td>\n<td>string</td>\n<td>no</td>\n<td>API key — alternative to the <code>Authorization</code> header.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"successful-response-200\">Successful response (200)</h2>\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>answer</code></td>\n<td>float</td>\n<td>Overall AI detection score from 0.0 (human) to 1.0 (AI).</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td><code>\"success\"</code> when the analysis completed normally.</td>\n</tr>\n<tr>\n<td><code>segmentation_tokens</code></td>\n<td>float[]</td>\n<td>Per-sentence AI scores. Populated only when <code>deep_scan=true</code>, otherwise empty array <code>[]</code>.</td>\n</tr>\n<tr>\n<td><code>report_id</code></td>\n<td>string (uuid)</td>\n<td>Report identifier. Download the PDF certificate at <code>GET /api/report/download/{report_id}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-response\">Error response</h2>\n<p>All errors follow the same format:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\"status\": \"error\", \"error\": {\"code\": \"&lt;type&gt;:&lt;code&gt;\", \"message\": \"...\"}}\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP status</th>\n<th>Code</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>403</td>\n<td><code>permission_denied:api_key_does_not_exist</code></td>\n<td>The API key is not recognised.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>not_authenticated:not_authenticated</code></td>\n<td>No API key was supplied.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>permission_denied:api_key_plan_incompatible</code></td>\n<td>Your plan does not include API access.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>rich_limit:words_limit_reached</code></td>\n<td>Word quota exhausted.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>rich_limit:text_exceeds_character_limit</code></td>\n<td>Text exceeds the maximum length for your plan.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:low_words</code></td>\n<td>Text is shorter than 200 characters.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:only_english</code></td>\n<td>Unsupported language detected.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:no_text_provided</code></td>\n<td><code>text</code> field is missing.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:rate_limit</code></td>\n<td>Requests-per-second limit for your plan exceeded.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>server:service_unavailable</code></td>\n<td>Internal processing error or timeout.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":true,"source":{"_postman_id":"638494df-edea-478f-8c6a-a481fb0ad6ec","id":"638494df-edea-478f-8c6a-a481fb0ad6ec","name":"It's AI API","type":"collection"}},"urlObject":{"path":["api","text"],"host":["https://api.its-ai.org"],"query":[],"variable":[]}},"response":[{"id":"9c99088a-09df-47cf-b8dc-7248ff05f4a1","name":"200 OK","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"deep_scan\": false,\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/text"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"answer\": 0.27,\n  \"status\": \"success\",\n  \"segmentation_tokens\": [\n    0.6,\n    0.4,\n    0.73,\n    0.28,\n    0.91,\n    0.35,\n    0.66,\n    0.18,\n    0.84,\n    0.49,\n    0.57,\n    0.22,\n    0.78,\n    0.31,\n    0.69,\n    0.14,\n    0.95,\n    0.43,\n    0.52,\n    0.87\n  ],\n  \"report_id\": \"00000000-0000-0000-0000-000000000000\"\n}"},{"id":"829dffb4-3f04-4126-8434-29787e5b9a72","name":"400 Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"deep_scan\": false,\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/text"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"validation:low_words\",\n    \"message\": \"Try typing more text (>200 characters) so we can give you more accurate results\"\n  }\n}"},{"id":"81d9a899-834b-4965-8929-ece23954fc87","name":"403 Forbidden — unknown API key","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"deep_scan\": false,\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/text"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"permission_denied:api_key_does_not_exist\",\n    \"message\": \"Invalid API key provided\"\n  }\n}"},{"id":"0b331655-2522-4812-87cb-f5868bf1c2f6","name":"403 Forbidden","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"deep_scan\": false,\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/text"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"rich_limit:words_limit_reached\",\n    \"message\": \"Word limit reached\"\n  }\n}"},{"id":"a85379ec-9937-4577-89de-d06537f251fa","name":"400 Bad Request — rate limit","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"deep_scan\": false,\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/text"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"validation:rate_limit\",\n    \"message\": \"Rate limit exceeded\"\n  }\n}"},{"id":"48c87bdb-bdd3-4619-bf81-2e75398e6c72","name":"500 Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"deep_scan\": false,\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/text"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"server:service_unavailable\",\n    \"message\": \"Service is temporarily unavailable. Please, try again later\"\n  }\n}"}],"_postman_id":"6c11ec3f-7938-4a40-b844-944811a713ef"},{"name":"Batch analyze texts","id":"e19844c1-7550-4869-9f27-78b946456648","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"deep_scan\": false,\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/batch","description":"<p>Submit multiple texts for AI detection analysis in a single request.</p>\n<p>Authenticate via <code>Authorization: APIKey &lt;your_key&gt;</code> header or <code>api_key</code> field in the request body.\nThe request is synchronous — it blocks until all analyses complete (up to 5 minutes).</p>\n<hr />\n<h2 id=\"request-fields\">Request fields</h2>\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>string[]</td>\n<td><strong>yes</strong></td>\n<td>List of texts to analyze. Each text must be at least 200 characters and not exceed the maximum length for your plan.</td>\n</tr>\n<tr>\n<td><code>deep_scan</code></td>\n<td>boolean</td>\n<td>no</td>\n<td>When <code>true</code>, each result includes per-sentence AI scores in <code>segmentation_tokens</code> (default: <code>false</code>). Deep scan uses more quota.</td>\n</tr>\n<tr>\n<td><code>api_key</code></td>\n<td>string</td>\n<td>no</td>\n<td>API key — alternative to the <code>Authorization</code> header.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Batch size limit:</strong> 250 texts per request. That is the Enterprise allowance, and API keys are an Enterprise feature — the smaller per-plan batch limits (Pay as you go 1, Free 3, Plus 10, Premium 25, Pro 50) apply inside the web app, and are only reachable through the API by a key whose plan was downgraded, which the plan gate rejects first.</p>\n<hr />\n<h2 id=\"successful-response-200\">Successful response (200)</h2>\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>answer</code></td>\n<td>object[]</td>\n<td>Array of results, one per submitted text, in the same order.</td>\n</tr>\n<tr>\n<td><code>answer[].text</code></td>\n<td>string</td>\n<td>The original submitted text.</td>\n</tr>\n<tr>\n<td><code>answer[].answer</code></td>\n<td>float</td>\n<td>Overall AI detection score from 0.0 (human) to 1.0 (AI).</td>\n</tr>\n<tr>\n<td><code>answer[].segmentation_tokens</code></td>\n<td>float[]</td>\n<td>Per-sentence AI scores. Populated only when <code>deep_scan=true</code>, otherwise empty array <code>[]</code>.</td>\n</tr>\n<tr>\n<td><code>answer[].report_id</code></td>\n<td>string (uuid)</td>\n<td>Report identifier. Download the PDF certificate at <code>GET /api/report/download/{report_id}</code>.</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>string|null</td>\n<td><code>null</code> on success.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-response\">Error response</h2>\n<p>All errors follow the same format:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\"status\": \"error\", \"error\": {\"code\": \"&lt;type&gt;:&lt;code&gt;\", \"message\": \"...\"}}\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP status</th>\n<th>Code</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>403</td>\n<td><code>permission_denied:api_key_does_not_exist</code></td>\n<td>The API key is not recognised.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>not_authenticated:not_authenticated</code></td>\n<td>No API key was supplied.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>permission_denied:api_key_plan_incompatible</code></td>\n<td>Your plan does not include API access.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>rich_limit:words_limit_reached</code></td>\n<td>Word quota exhausted.</td>\n</tr>\n<tr>\n<td>403</td>\n<td><code>rich_limit:text_exceeds_max_length</code></td>\n<td>A text exceeds the maximum length for your plan.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:low_words</code></td>\n<td>A text is shorter than 200 characters.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:batch_limit</code></td>\n<td>Number of texts exceeds the batch size limit for your plan.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:no_text_provided</code></td>\n<td><code>texts</code> is missing, or is not a list of strings.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>validation:rate_limit</code></td>\n<td>Requests-per-second limit for your plan exceeded.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>server:server</code></td>\n<td>Internal processing error.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>server:service_unavailable</code></td>\n<td>Timeout or service temporarily unavailable.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":true,"source":{"_postman_id":"638494df-edea-478f-8c6a-a481fb0ad6ec","id":"638494df-edea-478f-8c6a-a481fb0ad6ec","name":"It's AI API","type":"collection"}},"urlObject":{"path":["api","batch"],"host":["https://api.its-ai.org"],"query":[],"variable":[]}},"response":[{"id":"960f213a-c06c-4d75-b911-23408fe4737a","name":"200 OK","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"deep_scan\": false,\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/batch"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"answer\": [\n    {\n      \"text\": \"string\",\n      \"answer\": 0.27,\n      \"segmentation_tokens\": [\n        0.6,\n        0.4,\n        0.73,\n        0.28,\n        0.91,\n        0.35,\n        0.66,\n        0.18,\n        0.84,\n        0.49,\n        0.57,\n        0.22,\n        0.78,\n        0.31,\n        0.69,\n        0.14,\n        0.95,\n        0.43,\n        0.52,\n        0.87\n      ],\n      \"report_id\": \"00000000-0000-0000-0000-000000000000\"\n    },\n    {\n      \"text\": \"string\",\n      \"answer\": 0.64,\n      \"segmentation_tokens\": [\n        0.12,\n        0.58,\n        0.33,\n        0.74,\n        0.91,\n        0.26,\n        0.49,\n        0.65,\n        0.18,\n        0.82,\n        0.37,\n        0.69,\n        0.24,\n        0.88,\n        0.41,\n        0.57,\n        0.13,\n        0.52,\n        0.79,\n        0.31\n      ],\n      \"report_id\": \"00000000-0000-0000-0000-000000000001\"\n    }\n  ],\n  \"error\": null\n}"},{"id":"2cf0f592-fb01-4a7f-881f-5abf25121402","name":"400 Bad Request","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"deep_scan\": false,\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/batch"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"validation:low_words\",\n    \"message\": \"Try typing more text (>200 characters) so we can give you more accurate results\"\n  }\n}"},{"id":"5b3dcedb-738d-4cc0-8a96-cfb4a2759f27","name":"403 Forbidden — unknown API key","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"deep_scan\": false,\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/batch"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"permission_denied:api_key_does_not_exist\",\n    \"message\": \"Invalid API key provided\"\n  }\n}"},{"id":"a6264e1e-d2dc-4f50-9c7c-04c49a460c50","name":"403 Forbidden","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"deep_scan\": false,\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/batch"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"rich_limit:words_limit_reached\",\n    \"message\": \"Word limit reached\"\n  }\n}"},{"id":"40047107-1795-48e6-8c95-ce0f01c41179","name":"400 Bad Request — rate limit","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"deep_scan\": false,\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/batch"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"validation:rate_limit\",\n    \"message\": \"Rate limit exceeded\"\n  }\n}"},{"id":"8813517b-97f9-44ef-b172-2594523fdfb5","name":"500 Internal Server Error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"texts\": [\n    \"string\",\n    \"string\"\n  ],\n  \"deep_scan\": false,\n  \"api_key\": \"string\"\n}","options":{"raw":{"headerFamily":"json","language":"json"}}},"url":"https://api.its-ai.org/api/batch"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"error\",\n  \"error\": {\n    \"code\": \"server:service_unavailable\",\n    \"message\": \"Service is temporarily unavailable. Please, try again later\"\n  }\n}"}],"_postman_id":"e19844c1-7550-4869-9f27-78b946456648"}],"id":"4a9dc0f3-10fb-49cf-920f-428b89860c2b","_postman_id":"4a9dc0f3-10fb-49cf-920f-428b89860c2b","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":true,"source":{"_postman_id":"638494df-edea-478f-8c6a-a481fb0ad6ec","id":"638494df-edea-478f-8c6a-a481fb0ad6ec","name":"It's AI API","type":"collection"}}}],"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]}},"variable":[{"key":"baseUrl","value":"https://api.its-ai.org"},{"key":"apiKey","value":"<your_api_key>"}]}