Create a check from text or a file
One call runs the plagiarism, grammar, citation, AI-content and style checks on a document. Every refusal about the document itself answers here, synchronously (no_input, no_checks_selected, too_short, too_long, unsupported_type, unreadable_file, file_too_large (413), unsupported_language, multiple_inputs, invalid_file), so a check that is accepted (202) has been read and will run. Only a scanned PDF or an image is read later, by OCR, while the check runs.
Authorization
bearerAuth Create a key under Account → API. Send it as Authorization: Bearer st_live_…. Keys carry scopes: checks:write (create, cancel, delete; add, change and delete source rules), checks:read (list, get; list source rules) and usage:read (credit position).
In: header
Header Parameters
Any string unique to this submission. A retry carrying the same key answers the first check’s id (202, Idempotent-Replayed: true) and never starts or charges a second check.
1 <= length <= 200TypeScript Definitions
Use the request body type in TypeScript.
Send the document as text, or as file (base64 or a data: URL) with an optional filename. The file is judged by its bytes, never by its name or declared type: .txt, .md, .html, .csv, .docx, .xlsx, .pdf, and JPEG/PNG/GIF/WebP images (OCR). Text is decoded from UTF-8, UTF-16 or Windows-1252. options selects which issue categories run: plagiarism, grammarSpelling, citations, aiContent, and style, the clarity + word-choice layer, whose findings come back as clarity / word_choice issues plus a scores.clarity density (null when the style pass did not run). options.register ("academic" | "general") selects which word-choice rules apply: academic flags contractions, colloquial wording and first-person asides. The passes also set the price: a check costs, per started 250 words, a base every check pays plus the rate of each pass that is on (the schedule is credits.passes on GET /v1/capabilities), so a plagiarism-only check costs less than one with everything on. Every option defaults to true, so a pass you leave out RUNS and is charged; to run fewer checks, set the others to false explicitly. The 202 quotes the estimate as estimatedCredits and the finished check carries creditsCharged. sourceRules adds include or exclude rules for this check alone, applied together with the account's list (/v1/source-rules): the same mode, kind and value shape, at most 50 rules.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/checks" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "estimatedCredits": 0}List checks GET
The account's checks, newest first, a page at a time. Pass the `nextCursor` of one page as `cursor` to read the next; `nextCursor` is null on the last page. Rejected submissions are not listed (read one by id).
Search checks GET
Full-text search over the account's checks: the title, the whole document and the names of the sources it matched. Every word is required and matches as a prefix, so `segur` finds `seguramente`; accents are ignored. Checks whose title holds every word come first, then the best text matches, then the newest. `excerpt` is a window of the document around the hit with each matched run wrapped in `[[` and `]]`.