---
title: "Submit text for AI detection"
method: POST
path: "/api/v1/chat-gpt/"
tags: ["AI Detection"]
---

# Submit text for AI detection

`POST /api/v1/chat-gpt/`

Submit text or a supported file for AI-generated text detection. The response contains the created AI check report.

The authenticated user must be allowed to create AI checks. The endpoint rejects empty content, content below the configured minimum character length, disabled AI-check settings, missing AI package eligibility, and texts over the configured free or paid word limits.

## Response `200`

The AI detection check was created successfully.

- object
  - `success` boolean
  - `data` AiCheck — AI-generated text detection report.
    - `enabled` boolean — Whether AI detection is enabled for this report/user context.
    - `id` integer, nullable — Numeric AI report ID, or `null` when a text has no AI report yet.
    - `status` 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 | 10, nullable — | ID | Name | Description | |---:|:-------|:------------| | 1 | STATUS_QUEUED | Check in queue | | 2 | STATUS_IN_PROGRESS | Check in progress | | 3 | STATUS_FAILED | Check failed | | 4 | STATUS_CHECKED | Successfully checked | | 5 | STATUS_NOT_ENOUGH_TEXT | Not enough text | | 7 | STATUS_NOT_ENOUGH_ORIGINAL_TEXT | Not enough text | | 8 | STATUS_TEXT_TOO_LONG | Text is too long| | 9 | STATUS_LANGUAGE_IS_NOT_SUPPORTED | Text language is not supported | | 10 | STATUS_CREATED | Check created |
    - `percent` number, nullable — Overall probability that the submitted text was AI-generated.
    - `processed_percent` number, nullable — Percentage of the submitted text classified as AI-generated.
    - `strong_percent` number, nullable — Percentage of the submitted text classified as strongly likely to be AI-generated.
    - `likely_percent` number, nullable — Percentage of the submitted text classified as likely to be AI-generated.
    - `mark` 0 | 1, nullable — User feedback for the AI result: `1` means like, `0` means dislike, `null` means not rated.
    - `comment` string, nullable — Optional user comment submitted with the AI result rating.
    - `comment_author` object, nullable — User who submitted the rating comment, or `null` when no feedback exists.
      - `id` integer — Numeric user ID of the check author.
      - `name` string — Display name of the check author.
    - `type` integer, nullable — AI report type. For ChatGPT/perplexity checks this value is `3`.
    - `words` integer, nullable — Word count calculated for the AI detection check.
    - `pages` integer, nullable — Page count calculated for the AI detection check.
    - `parameters` object — Detector parameters saved with the AI report, when present.
    - `group_id` integer, nullable — Group ID associated with the AI check, or `null` for an individual check.
    - `creator` User — User account summary.
      - `id` integer — Numeric user ID.
      - `name` string — User display name.
      - `email` string, email — User email address.
      - `created_at` integer — User creation timestamp in milliseconds.
      - `updated_at` integer — User update timestamp in milliseconds.
      - `is_blocked` boolean — Whether the user account is blocked.
      - `allowed_languages` string[] — Language codes the user can submit for checking.
      - `balance` Account — Balance counters for a user or group account.
        - `balance` integer, required — Available balance in pages. One page is 275 words.
        - `bonus` integer, required — Available bonus balance in pages. One page is 275 words.
        - `hold` integer, required — Balance on hold. This field is deprecated.
        - `hold_bonus` integer, required — Bonus balance on hold. This field is deprecated.
        - `ai_balance` integer, required — Available AI-check balance.
      - `balance_type` integer — User billing/balance type.
      - `avatar` string, nullable — URL of the user avatar image, when available.
      - `sale_role` integer, nullable — Internal sale role for the user, when assigned.
      - `ai_checks_enabled` boolean — Whether AI detection checks are enabled for this user.
      - `is_test` boolean — Whether this is a test account.
      - `is_guest` boolean — Whether this account is a guest account.
      - `is_change_password_needed` boolean — Whether the user must change an autogenerated password.
      - `is_email_verification_needed` boolean — Whether this user should complete email verification.
      - `orders` integer — Number of paid orders for the user.
      - `not_ai_orders` integer — Number of paid non-AI orders for the user.
      - `last_ai_order_paid_days_ago` integer, nullable — Days since the user's most recent paid AI order, or `null`.
    - `has_own_content` boolean, nullable — Whether the report stores its own submitted content.
    - `conclusion_type` integer, nullable — Numeric conclusion category calculated for checked AI reports.
    - `conclusion` string, nullable — Human-readable conclusion calculated for checked AI reports.
    - `content` string, nullable — Original text content used for the AI detection check, when exposed by the endpoint.
    - `chunks` object[], nullable — Text ranges classified by the AI detector.
      - `reliability` integer — | ID | Name | Description | |---:|:-------|:------------| | 1 | RELIABILITY_LIKELY | Sentence with a small reliability | | 2 | RELIABILITY_STRONG | Sentence with a big reliability |
      - `position` integer[] — Start and end character offsets for the AI-highlighted text fragment.
    - `ignored_ranges` TextIgnoredRange[] — Character ranges forced to "not AI generated" because they match assignment ignore templates. Chunks overlapping these ranges are trimmed, split, or removed before the AI percentages are calculated. The submitted text itself is never modified.
      - `id` integer, nullable — Internal ignored range identifier.
      - `start` integer — Start character offset of the ignored range.
      - `end` integer — End character offset of the ignored range.
      - `filename` string — Name of the ignore assignment template file that produced this range.
      - `ignore_assignment_template_id` integer, nullable — Identifier of the ignore assignment template that produced this range.

## Other responses

- `400` — The request is invalid. Check required fields, field formats, and resource ownership.
- `403` — Authentication or authorization failed because the token is missing, invalid, blocked, or not allowed to access the resource.

---

[API](https://skmtc.net/plagiarismcheck/apis/plagiarismcheck-org-api.md) · [All operations](https://skmtc.net/plagiarismcheck/apis/plagiarismcheck-org-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/plagiarismcheck/plagiarismcheck-org-api/revisions/034b4999350e/schema)
