API documentation
Check whether text was written by AI.
Get started
- Sign in with Google.
- Add API credits in your dashboard, starting at $1.
- Generate an API key and store it as
AI_DETECTOR_API_KEY.
# Save {"text": "your full text (50–5,000 words)"} in request.json
curl https://jev-ai-detector.com/api/v1/detect \
-H "Authorization: Bearer $AI_DETECTOR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: check-001" \
--data @request.jsonRequest
/api/v1/detect| Field | Type | Details |
|---|---|---|
text | string | 50–5,000 words; at most 50,000 characters. |
Send JSON and authenticate with Authorization: Bearer YOUR_API_KEY. Keep your key in server-side code.
Response
{
"label": "human",
"probabilities": {
"ai": 0.12,
"human": 0.88
},
"cost_usd": 0.005
}The higher probability wins. cost_usd is the charge for this check; the example is for 1,000 words.
Pricing
$0.0005 per started 100 words. Add as little as $1. The website checker is free.
100× cheaper than Pangram 4’s standard API. Pangram charges $0.05 per 100 words; ours costs $0.0005 for the same length.
| Text length | Per check | Checks for $1 |
|---|---|---|
| 100 words | $0.0005 | 2,000 |
| 1,000 words | $0.005 | 200 |
| 5,000 words | $0.025 | 40 |
No subscription, credit expiry, or daily API allowance. Each successful request is charged by text length, including cached results. Failed checks are not charged.
Retries
Send an Idempotency-Key to safely retry the same text without paying twice. Keep it unchanged for retries and use a new one for each new check. A reused key with different text returns 409. Retry records are retained for 30 days.
X-Idempotent-Replay: true means the response is a replay and no new charge occurred. The JSON retains the original check’s cost. X-Request-ID identifies the check.
If a request is still processing, wait before retrying it. For 429 responses, follow Retry-After.
Errors
| Status | Meaning |
|---|---|
| 400 | Invalid text, JSON, or idempotency key |
| 401 | Missing, invalid, expired, or revoked API key |
| 402 | Insufficient API balance; add credits in your dashboard |
| 409 | Request in progress, previous failure, or idempotency conflict |
| 413 | Request too large |
| 415 | Send Content-Type: application/json |
| 429 | Too many requests; follow Retry-After |
| 503 | Service temporarily unavailable |
{"error":{"code":"insufficient_credits","message":"Add API credits in your dashboard."}}