API reference
Three endpoints under https://api.mimir-mentor.com. All need the x-api-key header; requests and responses are JSON.
Detect AI in text
POST
/v1/ai-detectionChecks a text and returns the verdict, the AI share and the flagged sentences. The words of the text are billed, and only for a 200 response.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
text | string | yes | The text to check. At least 80 words, at most 100,000 characters. |
language | string | no | Language code of the text, for example en. Default: en. |
offset_unit | string | no | codepoint (default, fits Python) or utf16 (fits JavaScript and Java). |
all_sentences | boolean | no | true returns every sentence, including the unflagged ones (level not_flagged). Default: false. |
curl https://api.mimir-mentor.com/v1/ai-detection \
-H "x-api-key: $MIMIR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Your text with at least 80 words …", "language": "en"}'import os
import requests
response = requests.post(
"https://api.mimir-mentor.com/v1/ai-detection",
headers={"x-api-key": os.environ["MIMIR_API_KEY"]},
json={"text": text, "language": "en"},
timeout=120,
)
response.raise_for_status()
result = response.json()
print(result["verdict"], result["ai_share"])
for sentence in result["sentences"]:
print(sentence["band"], text[sentence["start"]:sentence["end"]])const response = await fetch("https://api.mimir-mentor.com/v1/ai-detection", {
method: "POST",
headers: { "x-api-key": process.env.MIMIR_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ text, language: "en", offset_unit: "utf16" }),
});
if (!response.ok) throw new Error(`${response.status} ${JSON.stringify(await response.json())}`);
const result = await response.json();
console.log(result.verdict, result.ai_share);
for (const s of result.sentences) console.log(s.band, text.slice(s.start, s.end));Response
| Field | Type | Description |
|---|---|---|
id | string | Request id. Quote it when you contact us. |
model | string | Model name. |
language | string | The language used. |
words | integer | Billed words of this request. |
verdict | string | none, some or mostly. |
ai_share | number | Share of the text in the levels very_likely_ai and likely_ai, from 0 to 1. |
possible_share | number | Share in the level possibly_ai, from 0 to 1. |
result_message | string | The verdict as a ready-made sentence in the language of the text. |
offset_unit | string | The unit of start and end. |
sentences | array | Every flagged passage with start, end and band. Unflagged sentences are left out unless you set all_sentences. |
usage | object | Your balance after this request: plan, words_used, words_included, period_end. |
200 OK
{
"id": "req_peDQZjknMKvf186g33YtMZsU",
"model": "r13",
"language": "en",
"words": 114,
"verdict": "mostly",
"ai_share": 0.8663,
"possible_share": 0.1275,
"result_message": "A large part is probably AI-generated.",
"offset_unit": "codepoint",
"sentences": [
{
"start": 0,
"end": 123,
"band": "possibly_ai"
},
{
"start": 124,
"end": 261,
"band": "very_likely_ai"
},
{
"start": 262,
"end": 423,
"band": "very_likely_ai"
}
],
"usage": {
"plan": "starter",
"words_used": 12114,
"words_included": 500000,
"period_end": 1796928768
}
}Get usage
GET
/v1/usageReturns your plan, used and included words and the end of the billing period (Unix time). Free of charge, and a good way to verify a key.
curl https://api.mimir-mentor.com/v1/usage -H "x-api-key: $MIMIR_API_KEY"200 OK
{
"plan": "starter",
"words_used": 12114,
"words_included": 500000,
"period_end": 1796928768
}List model and limits
GET
/v1/modelsReturns the current model and its date, the languages and the limits per request. Free of charge.
curl https://api.mimir-mentor.com/v1/models -H "x-api-key: $MIMIR_API_KEY"200 OK
{
"models": [
{
"id": "r13",
"updated": "2026-11-09",
"languages": [
"da",
"de",
"en",
"es",
"fi",
"fr",
"it",
"nl",
"pl",
"pt",
"sv",
"tr"
]
}
],
"limits": {
"max_characters": 100000,
"min_words": 80,
"requests_per_minute": 60,
"concurrent_requests": 2
}
}