API documentation
Authentication, endpoints, and response formats for the pre-submission check API.
Overview
Every request is JSON over HTTPS, and the result comes back in the response. There is no job ID to poll.
https://api.nubint.ai/api/v1Response fields use camelCase, with two exceptions: bibliographic data (csl) keeps standard CSL-JSON keys such as container-title and DOI, and issue params keep snake_case keys.
Authentication
Send your API key in the X-API-Key header on every request. Not the Authorization header.
Create keys in the Nubint app under Settings → API/MCP. Keys start with nbk_live_ and are shown only once. We store only a hash, so a lost key has to be replaced.
Each account can have up to 10 active keys. If a key may have leaked, revoke it on the same screen; revoked keys are rejected immediately.
The API can be called from accounts on the Pro or Max plan. A key from a free account gets 403; the key stays, and works again once you subscribe.
Reference verification
Checks each entry of a reference list against a scholarly index to see whether it points to a real work. No language model is called, so the same input gives the same result.
Request
Array of reference strings: the entries of the References section, one per string, not the body text. Up to 100. Include DOIs when you have them; matching gets exact.
Response
The verdict. See Verdict values below.
Why that verdict: identifier (DOI or other ID matched), title_exact, title_strong, title_partial, parsed (not in the index; metadata read from the string), none.
Metadata and identifiers of the matched paper. Present only for verified and uncertain.
Metadata parsed from the reference string (CSL-JSON) for works outside the index. Present only for off_index.
Title of the accepted candidate. For uncertain, lets the user compare it with their own reference.
Title of a candidate rejected for insufficient overlap (off_index only). A clue when the manuscript's title is mistyped. It is not an accepted match, so never cite it as one.
Totals. needsReview counts everything that isn't verified, i.e. what the user should check.
AI-writing detection
Judges whether text reads as AI-written, using an independent detection model. It judges paragraph by paragraph and, in flagged paragraphs, ranks the sentences that drove the call.
Request
Text to check. Separate paragraphs with blank lines. Up to 200,000 characters.
Response
Document-level verdict: safe, caution, risk, or inconclusive.
Number of paragraphs judged.
Number of paragraphs given a band.
Credits charged for this request. 0 for inconclusive.
Flagged sentences. code is the band (likely or possibly), anchor is the sentence, and params.rank is its rank within the paragraph.
If the detection service doesn't respond, this endpoint returns 502. It never returns safe without a result.
Full manuscript check
Send the text and references in one request and get three sections back: reference verification, AI-writing detection, and source quality. References are matched once, so both reference sections look at the same papers.
Request
Manuscript text. If empty, AI-writing detection and source quality are skipped. Up to 200,000 characters.
Array of reference strings. If empty, reference verification and source quality are skipped. Up to 100.
Response
An example where AI-writing detection failed: the other sections still return results (some fields omitted).
One per section: ok (checked), failed (outage on our side; retry), or skipped (no input). failed and skipped come with a reason.
Checks verified references only: retractions (retracted_source), expressions of concern (expression_of_concern), preprints (preprint_source, preprint_has_published_version), rarely cited sources (low_citation_source), and more.
Credits charged for this request. Only successful sections are billed; failed, skipped, and inconclusive AI detection cost 0.
Verdict values
Reference verdicts (status)
Confirmed in the index: a DOI or other identifier, or the title, matches.
A candidate was found but the title only partly matches. Compare it with matchedTitle.
Couldn't be confirmed with this index. It may be a book, statute, or closed-access journal that the index never had. It does not mean the work doesn't exist.
A line that can't be read as a reference (no title, year, or author found).
AI-writing verdicts (verdict)
This check found no AI-writing signs. Not a guarantee of human authorship.
Some paragraphs show AI-writing signs. Review the flagged sentences.
Several paragraphs show clear AI-writing signs.
Not enough prose to judge (too short, or mostly tables and lists). It does not mean the text isn't AI-written.
Issue object
Issues from AI-writing detection and source quality share one shape.
A stable identifier. Pick your UI wording from this value.
The sentence in the manuscript. In author-year (e.g. APA) manuscripts, source-quality issues may have no anchor; use reference to identify the paper.
Identifier (canonicalId) of the paper the issue is about.
Values for rendering the message (reference number, citation count, rank, and so on).
Issue text in the user's language, present only when the check produced one.
Pricing
AI-writing detection costs 44 credits per 10,000 tokens and source quality 32 credits per 10,000 tokens. Text length is rounded up to blocks of 5 English A4 pages, and one block is the minimum charge. These are the same rates as editor reviews.
Reference verification is free. Sections that failed on our side, sections skipped for lack of input, and inconclusive AI detection are not charged.
The estimated cost is checked before running; if your balance can't cover it, nothing runs and you get a 402.
Errors
Error bodies are JSON with a single detail field.
Limit exceeded: more than 100 references or 200,000 characters. Nothing is truncated.
The X-API-Key header is missing, or the key is wrong or revoked.
Not enough credits: the balance is 0 or can't cover this request's estimated cost. Nothing was run.
The Pro or Max plan is required.
The request body doesn't match the schema (field names or types).
Rate limit exceeded. Retry in a minute.
The AI-writing detection service didn't respond (/preflight/ai-detection). Retry shortly.
Authentication is temporarily unavailable. Your key is fine; don't revoke it, just retry.
Limits and timing
Up to 100 references and 200,000 characters (about 80 pages of English A4) per request.
Responses are synchronous, so a long reference list can take tens of seconds. Set your client timeout to 120 seconds or more.
Rate limits per account: 30 reference verifications per minute, and 10 AI-writing detections or full checks per minute. Beyond that you get a 429.
MCP
The same three checks are available as MCP tools (preflight_check, verify_citations, detect_ai_writing). ChatGPT and Claude connect with a sign-in (OAuth) and need no API key; see the MCP connection guide.
Connect via MCPConnect developer tools with an API key
Developer tools that let you set headers can connect with X-API-Key. The server URL is the same.
One command in your terminal. Afterwards, run /mcp to check the connection.