API Docs
aichecker.tech exposes a small JSON API used internally by the web UI. The same endpoints are publicly callable, subject to the same rate limits and validation as the in-browser tool.
Base URL & Auth
Base URL: https://aichecker.tech
No authentication required. No API keys. Rate limits apply per IP (5 requests/minute, 50 requests/day, combined across endpoints) and are enforced via Cloudflare Workers KV. Rate-limited requests receive HTTP 429 with a Retry-After header.
POST /api/check
Analyze text for AI-generated content. Returns a probability score (0–100) plus a five-signal forensic breakdown.
Request body
| Field | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | 50–7,000 characters, max 1,000 words. Zero-width and control chars are stripped server-side. |
Example request
curl -X POST https://aichecker.tech/api/check \
-H "Content-Type: application/json" \
-d '{"text":"The impact of artificial intelligence on modern education cannot be overstated..."}'
Response (200)
{
"success": true,
"result": {
"ai_probability": 75,
"verdict": "ai",
"confidence": "high",
"model_likely": "ChatGPT (GPT-4o)",
"signals": {
"perplexity": "low",
"burstiness": "low",
"sentence_uniformity": "high",
"formal_transitions": "high",
"vocabulary_repetition": "medium"
},
"summary": "The text exhibits low perplexity and high structural uniformity typical of GPT-4 family output."
}
}
Error responses
| Status | Body | Cause |
|---|---|---|
| 400 | {"error":"…"} | Invalid JSON, missing text, text too short (< 50 chars), or over 1,000 words. |
| 405 | {"error":"Method not allowed"} | Non-POST method. |
| 413 | {"error":"Request too large."} | Payload exceeds 32 KB. |
| 429 | {"error":"Rate limit exceeded…"} | Per-minute or per-day cap hit. Retry-After header indicates seconds to wait. |
| 500 | {"error":"Analysis failed…"} | Upstream model failure or sanitization error. |
| 503 | {"error":"Detection service unavailable."} | OpenAI key not configured (operator issue). |
POST /api/plagiarism
Scan text against billions of indexed web pages and return source URLs with match percentages.
Request body
| Field | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | Same constraints as /api/check. Payload size cap is 256 KB. |
Response (200)
{
"success": true,
"result": {
"plagiarism_score": 0.18,
"verdict": "minor_similarity",
"summary": "Two short fragments match published sources.",
"sources": [
{
"url": "https://example.com/article",
"title": "Example Article Title",
"domain": "example.com",
"similarity_score": 0.18,
"matched_percentage": 0.18
}
],
"highlights": [
{"start": 142, "end": 218, "severity": "high"}
]
}
}
verdict is one of: original, minor_similarity, moderate_plagiarism, significant_plagiarism, severe_plagiarism.
GET /api/stats
Public aggregate metrics — total run counts, last-7-day averages, AI score histogram. No personal data, no individual records.
Response (200)
{
"success": true,
"stats": {
"total_runs": { "ai": 12345, "plagiarism": 6789 },
"last_7_days": {
"ai_runs": 423,
"ai_avg_score": 41.2,
"plagiarism_runs": 187,
"plagiarism_avg_score": 12.4
},
"last_30_days": { "total_runs": 2891 },
"ai_score_distribution": {
"0": 421, "10": 388, "20": 351, "30": 412,
"40": 287, "50": 198, "60": 142, "70": 156,
"80": 184, "90": 222
}
}
}
Security & privacy
- No raw text retention. Submitted text exists in process memory only for the duration of the request (typically 1–3 seconds) and is discarded immediately. We log only a non-reversible 64-bit hash prefix to power aggregate stats. See privacy policy section 1b.
- Response sanitization. Every field returned by the API is validated and bounded server-side. See methodology section 3.
- Prompt-injection guards. User input is wrapped in delimiters and the upstream system prompt explicitly tells the model to treat the content as data, not instructions.
- CORS.
Access-Control-Allow-Originis set tohttps://aichecker.techonly. Cross-origin clients should server-side proxy the calls.
Notes
- This API is provided as-is for compatibility with the web UI. It is not a commercial API and has no SLA. For higher volumes, LMS integrations, or commercial use, contact partnerships@aichecker.tech.
- The 5/min and 50/day caps are global per IP across both
/api/checkand/api/plagiarism. - All responses include security headers (HSTS, CSP, COOP, X-Content-Type-Options, etc.).