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-detection

Checks 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

FieldTypeRequiredDescription
textstringyesThe text to check. At least 80 words, at most 100,000 characters.
languagestringnoLanguage code of the text, for example en. Default: en.
offset_unitstringnocodepoint (default, fits Python) or utf16 (fits JavaScript and Java).
all_sentencesbooleannotrue 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

FieldTypeDescription
idstringRequest id. Quote it when you contact us.
modelstringModel name.
languagestringThe language used.
wordsintegerBilled words of this request.
verdictstringnone, some or mostly.
ai_sharenumberShare of the text in the levels very_likely_ai and likely_ai, from 0 to 1.
possible_sharenumberShare in the level possibly_ai, from 0 to 1.
result_messagestringThe verdict as a ready-made sentence in the language of the text.
offset_unitstringThe unit of start and end.
sentencesarrayEvery flagged passage with start, end and band. Unflagged sentences are left out unless you set all_sentences.
usageobjectYour 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/usage

Returns 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/models

Returns 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
  }
}