API available

Create your server key and purchase prepaid credits in the developer console. Processing is subject to available capacity.

Check AI API

Developer documentation

Version 1: AI detection and humanization with prepaid credits.

Open developer console

Availability

The production API is open. A verified account, API key, available credits and processing capacity are required. Temporary capacity limits return 503 before processing; retry later with the same request identifier.

Contact support about your integration. No API purchase or request is made from this documentation.

Authentication

Use a Check AI key in the Authorization header from your server. Never place it in a browser bundle, public repository or support message. Base URL: https://checkai-app.com.

Authorization: Bearer YOUR_CHECKAI_API_KEY

Once access is enabled, verified accounts can create up to five active keys in the developer console. Keys are shown once, stored as hashes and expire after one year. Rotate by creating a replacement and revoking the old key. Test keys cannot access production. Website session tokens are not developer keys.

Endpoints

Version 1 — authenticated access
Method & pathPurposeCredits
POST /api/v1/detectAI score, highlights and explanation1 per input word
POST /api/v1/humanizeRewritten text4 per input word
GET /api/v1/balanceavailable_credits and reserved_creditsNo processing credits
GET /api/v1/requests/{id}Request status and saved resultNo processing credits

Send JSON with a single text string. Detection accepts 30–2,000 words; humanization accepts 10–2,000. Both are limited to 20,000 characters. Words are counted by splitting trimmed text on whitespace. Uploads, streaming and custom rewriting settings are not supported.

Request examples

These examples require an enabled API and a real key. The copy button only copies text.

# Server-side request; requires a valid key and credits.
curl https://checkai-app.com/api/v1/humanize \
  -H "Authorization: Bearer YOUR_CHECKAI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: YOUR_UNIQUE_REQUEST_ID" \
  -d '{"text":"Clear writing starts with one useful idea and a careful review."}'

Contract preview only. No request is sent by this page.

Humanization response example

{
  "request_id": "example-request-id",
  "status": "succeeded",
  "usage": {
    "input_words": 12,
    "credits": 48
  },
  "result": {
    "text": "Good writing begins with a useful idea, followed by careful editing."
  }
}

Illustrative response. Detection returns result.ai_percentage (0–100), result.highlights (text passages) and result.explanation.

Credits and retries

Credits are reserved before processing, charged on confirmed success and returned after a confirmed rejection. An ambiguous timeout keeps the reservation for review. Purchases credit this separate balance only after a verified Stripe notification; returning from checkout does not credit an account.

Every POST requires an Idempotency-Key: 16–128 letters, digits, underscores or hyphens. Use one identifier per logical request. An identical repeat returns its saved status without a second provider call. Reusing it with different text or a different tool returns 409.

A 202 response includes a request ID. Check it with GET; do not submit again under a new key. Contact support if it remains pending. Results are available for seven days; after that, a successful request returns 410 and is never automatically resubmitted.

Unused credits have no scheduled expiry and cannot be transferred between accounts. Applicable taxes are shown at checkout. See our terms for withdrawal rights, refunds and service remedies.

Errors and limits

At most two unresolved processing requests and 30 new processing requests per minute per account. Additional account, key and IP limits apply. Provider requests time out after 30 seconds; allow at least 45 seconds in your client.

202
Pending or unconfirmed — check the request ID
400 / 415
Invalid text, idempotency key or JSON content type
401 / 403
Invalid key, unverified or unavailable account
402
Insufficient API credits
409
Idempotency conflict or two unresolved requests
410
Saved result expired; no repeat processing
429
Rate limit — wait before retrying
502
Confirmed rejection; credits returned
503
API closed, storage unavailable or processing capacity exhausted

Text and privacy

Processing requires sending the submitted text to Check AI’s servers and an external AI processor. Only submit content you are authorised to process. Do not include secrets or unnecessary personal data.

For API requests, Check AI does not store the submitted input text. Results are available for seven days and removed by daily cleanup. Request identifiers, fingerprints, usage and billing records are retained for deduplication and accounting. API keys are stored as hashes. Account deletion removes developer keys and results, subject to accounting and legal retention. No zero-retention promise or uptime service-level agreement is offered. See the current website privacy information for the existing Check AI service.

AI detection cannot establish authorship with certainty. Rewriting does not guarantee factual accuracy, originality or a human classification by any detector.