Quetext Partner API

Greife über unsere RESTful API auf Plagiatserkennung, KI-Erkennung und Berichtsfunktionen zu.

Introduction

The Quetext Plagiarism Checker & AI Detector API lets you add plagiarism checking and AI content detection to your own product through one RESTful interface with JSON responses. Pricing is $0.10 per 1,000 words from a prepaid wallet, and every new account starts with 5,000 free words.

Key Features

  • Plagiarism Detection: Analyze text against billions of web pages and academic sources
  • AI Content Detection: Estimate the likelihood that text was AI-generated, with a per-sentence breakdown
  • Report Management: Create, retrieve, list, and delete reports programmatically
  • PDF Export: Download a printable PDF of any completed report
  • Real-time Progress: Poll report processing status until analysis completes
  • Pay-as-you-go: A prepaid wallet is deducted per request based on word count, with no monthly commitment

Prefer not to write code? Quetext also works in your browser through extensions and inside AI assistants through Quetext MCP. For subscription plans, see pricing.

Start with 5,000 free words

FREE

Sign up and get 5,000 words free, enough to test your integration end-to-end. No credit card required.

Sign Up Free→

Base URL

All API requests should be made to:

https://www.quetext.com/api/v2/

Limits

RequestMinimumMaximum
Plagiarism check (POST /v2/report)20 words50,000 words
AI detection (POST /v2/ai-detect-report)50 words150,000 characters
File upload (POST /v2/report-file)20 words of extracted text10 MB (.txt, .pdf, .doc, .docx)
Rate limit10 requests per 5 seconds, including progress polling
API Versioning: This documentation covers API v2, which uses API key authentication.

Billing works from a prepaid wallet at $0.10 per 1,000 words, separate from any Quetext subscription. See Pricing & Wallet for details.

Authentication

Quetext provides API access through API keys. Generate a key from your Quetext account under Account > API Keys and send it in the X-API-Key header on every request.

Request headers

{ "Content-Type": "application/json", "Accept": "application/json", "X-API-Key": "YOUR_API_KEY" }

Security: Treat your API key like a password. Never expose it in client-side code. Each account can create up to 10 API keys, and all requests are rate-limited per account.

New to Quetext? Create a free account to get your API key. It comes with 5,000 free words to get started.

Encryption

Security Requirement: All requests must be sent using HTTPS with TLS 1.2 or higher. Please make sure your developer tools support this version of TLS as older versions or SSL are not supported for security reasons.

Responses

All API responses are returned in JSON format. In case of any errors from input validation, we send a code parameter in the response.

Success Response Format

{ "status": true, "data": { /* response data */ } }

Error Response Format

{ "status": false, "code": 401, "message": "Error description" }
CodeMeaning
400Bad Request - Invalid request parameters or missing required fields
401Unauthorized - Invalid or missing API key
402Payment Required - Insufficient API credits in your wallet. Top up your balance to continue. Response body includes data.balance_words (your current balance) and data.needed_words (this request's cost)
403Forbidden - You do not have permission to view the requested resource
404Not Found - Resource could not be found
409Conflict - Report is still processing; the requested action requires a completed report
429Too Many Requests - Rate limit exceeded. Please slow down and try again
500Internal server error - The error message is returned in the message parameter

Rate Limiting

All API endpoints are rate-limited to ensure fair usage and system stability. Rate limits are applied per account (identified by your API key).

Rate Limit: 10 requests per 5 seconds per account. If you exceed this limit, you will receive a 429 Too Many Requests response. Polling GET /v2/report-progress counts toward this limit. Please implement exponential backoff in your client applications.

Rate Limit Headers

When you make a request, the following headers are included in the response:

X-RateLimit-Limit: 10 X-RateLimit-Remaining: 5 X-RateLimit-Reset: 1693933200

Search Report API

Submit text for plagiarism detection and receive a report ID. This endpoint analyzes your text against billions of web pages and academic sources to identify potential plagiarism matches.

POSThttps://www.quetext.com/api/v2/report

Headers

{ "Content-Type": "application/json", "Accept": "application/json", "X-API-Key": "YOUR_API_KEY" }

Request Body Parameters

ParameterTypeRequiredDescription
textstringYesThe text content to check for plagiarism. Minimum 20 words, maximum 50,000 words.
titlestringNoOptional title for the report. Helps organize your reports.

Request Body Example

{ "title": "My Research Paper", "text": "The text content to check for plagiarism. This can be multiple paragraphs..." }

Response (200 OK)

{ "status": true, "data": { "id": "abc123def456" } }

Error Response: text too short (400)

{ "status": false, "code": 400, "message": "Input text too short, plagiarism check requires a minimum of 20 words. Current words - 12", "data": { "min_words": 20, "current_words": 12 } }

Upload a file instead

To check a document, send it to POST /api/v2/report-file as multipart/form-data with the file in the file field. Supported formats are .txt, .pdf, .doc and .docx, up to 10 MB. The extracted text follows the same 20 to 50,000 word limits and the same billing. Errors: 400 no file, 413 file too large, 415 unsupported file type, 422 no text could be extracted.

Note: After submitting a report, use the GET /api/v2/report-progress/{REPORT_ID} endpoint to check processing status. Reports are processed asynchronously and may take a few seconds to complete.

Get Single Report API

Retrieve detailed results for a specific plagiarism report. This endpoint returns complete analysis results including matches, sources, scores, and metadata.

GEThttps://www.quetext.com/api/v2/report/{REPORT_ID}

URL Parameters

ParameterTypeRequiredDescription
REPORT_IDstringYesThe unique identifier of the report (returned when creating a report).

Headers

{ "Content-Type": "application/json", "Accept": "application/json", "X-API-Key": "YOUR_API_KEY" }

Response (200 OK)

{ "status": true, "data": { "word_count": 1500, "sentence_count": 75, "score": 12.5, "title": "My Research Paper", "input_text": "The original text...", "matches": [ { "input_text_match": "Matching text found...", "input_text_offset": 150, "input_token_count": 25, "id": "match_123", "highlighted_snippet": "...highlighted text...", "percent_similar": 85, "source": { "url": "https://example.com/article", "id": "source_456" } } ], "start_date": 1693933146, "end_date": 1693933246, "id": "abc123def456", "status": "completed", "percentage": 100 } }

Response Fields

FieldTypeDescription
idstringUnique report identifier
statusstringReport status: "completed" or "in-progress"
percentagenumberProcessing completion percentage (0-100)
scorenumberPlagiarism similarity score (0-100, null if not available)
word_countnumberTotal word count in the analyzed text
matchesarrayArray of detected plagiarism matches with sources

Error Response (401)

{ "status": false, "code": 401, "message": "Report owner does not match." }
Security: You can only retrieve reports that belong to your account. Attempting to access another user's report will return a 401 error.

Download Report PDF

Download a completed plagiarism report as a PDF. The PDF contains the full report layout (score, matches, and source URLs), ready to share or archive.

GEThttps://www.quetext.com/api/v2/report/{REPORT_ID}/pdf

Headers

{ "X-API-Key": "YOUR_API_KEY" }

Path Parameters

ParameterTypeDescription
REPORT_IDintegerThe id of a completed report owned by your account.

Success Response (200)

The response body is the binary PDF. Relevant headers:

Content-Type: application/pdf Content-Disposition: attachment; filename="<account>-<report>-plag-<timestamp>.pdf"

Error Responses

StatusBodyCause
400code:400Missing report id
401code:401Invalid or missing X-API-Key
404code:404Report not found, or not owned by your account
409code:409, data.progressReport is still being analyzed. Poll /v2/report-progress/{id} until progress reaches 1, then retry.
429code:429Download rate limit exceeded for this account.
500code:500PDF rendering failed. Retry after a short delay.

Example (curl)

curl "https://www.quetext.com/api/v2/report/abc123def456/pdf" \ -H "X-API-Key: YOUR_API_KEY" \ -o report-abc123def456.pdf
No extra charge: Downloading a PDF does not deduct from your wallet. The wallet was charged at the time the report was created via POST /v2/report; re-downloads are free.
Caching: The first PDF render for a given report is cached on our servers for a few minutes, so subsequent downloads of the same report are fast.

Get Reports API

Retrieve the plagiarism and AI detection reports you created through the API, most recent first. Without query parameters it returns up to 1,000 reports. Add ?page=1&limit=20 to page through results (limit up to 50); the response then includes a pagination object with page, limit, total and total_pages.

GEThttps://www.quetext.com/api/v2/reports

Headers

{ "Content-Type": "application/json", "Accept": "application/json", "X-API-Key": "YOUR_API_KEY" }

Response (200 OK)

{ "status": true, "data": [ { "id": "abc123def456", "title": "My Research Paper", "score": 12.5, "word_count": 1500, "start_date": 1693933146, "end_date": 1693933246, "status": "completed", "percentage": 100 }, { "id": "def456", "title": "Another Report", "score": null, "word_count": 800, "start_date": 1693933000, "end_date": 1693933100, "status": "in-progress", "percentage": 45 } ] }
Note: The response includes both completed and in-progress reports. Use the status and percentage fields to determine if a report is ready for detailed analysis. Scores may be null for reports that are still processing or if no matches were found.

Delete Report API

Delete a plagiarism or AI detection report from your account. This action cannot be undone.

DELETEhttps://www.quetext.com/api/v2/report/{REPORT_ID}

URL Parameters

ParameterTypeRequiredDescription
REPORT_IDstringYesThe unique identifier of the report to delete. Must be a valid report ID that belongs to your account.

Headers

{ "Content-Type": "application/json", "Accept": "application/json", "X-API-Key": "YOUR_API_KEY" }

Response (200 OK)

{ "status": true, "message": "Report deleted." }

Error Response (404)

{ "status": false, "message": "Report Not Found" }
Warning: Deleting a report is permanent and cannot be undone. Make sure you have saved any important data from the report before deletion.

Get Report Progress API

Check the processing progress of a plagiarism or AI detection report. Use this endpoint to poll for completion after submitting either kind of report. progress runs from 0 to 1.

GEThttps://www.quetext.com/api/v2/report-progress/{REPORT_ID}

URL Parameters

ParameterTypeRequiredDescription
REPORT_IDstringYesThe unique identifier of the report to check progress for.

Headers

{ "Content-Type": "application/json", "Accept": "application/json", "X-API-Key": "YOUR_API_KEY" }

Response (200 OK)

{ "status": true, "data": { "progress": 0.75 } }

Response When Report Not Found

{ "status": true, "data": { "message": "No report found." } }
Polling Recommendation: After creating a report, poll this endpoint every 2-3 seconds until the progress reaches 1.0 (100%). Once complete, use the GET /api/v2/report/{REPORT_ID} endpoint to retrieve full results.

Get Account Plan Details

Retrieve your Quetext subscription plan and its plagiarism and AI detection credits. This endpoint describes your subscription, not the API wallet: API requests are billed from the wallet, and your wallet balance is shown under Account > API Keys and in every 402 response.

GEThttps://www.quetext.com/api/v2/plan

Headers

{ "Content-Type": "application/json", "Accept": "application/json", "X-API-Key": "YOUR_API_KEY" }

Response (200 OK)

{ "status": true, "data": { "plan": { "name": "Premium Professional", "price": 10.49, "created_at": 1693933146, "additional_users": 4, "plan_type": "Monthly" }, "credits": { "pages": "500.00", "addon": "0.00" }, "ai_plan": null, "ai_credits": null } }

Response Fields

FieldTypeDescription
plan.namestringName of your subscription plan
plan.pricenumberMonthly or yearly subscription price
plan.created_atnumberUnix timestamp when the plan was created
plan.additional_usersnumberNumber of additional users allowed on team plans
plan.plan_typestringSubscription billing period: "Monthly" or "Yearly"
credits.pagesstringSubscription plagiarism credits, in pages of 500 words
credits.addonstringAdditional purchased subscription credits, in pages
ai_planobject or nullAI detection subscription plan, or null if the account has none
ai_creditsobject or nullAI detection subscription credits (pages, addon), or null

Error Response (401)

{ "status": false, "code": 401, "message": "Something went wrong. Please try again later." }
Checking your API balance: Subscription credits are not used by the v2 API. To see how many words your API wallet can still cover, open Account > API Keys. A request your balance can't cover returns 402 with balance_words and needed_words.

AI Detection Report API

Submit text to estimate the likelihood that it was AI-generated, and receive a report ID. Like the plagiarism Search Report endpoint, analysis runs asynchronously: poll for completion, then fetch the result.

POSThttps://www.quetext.com/api/v2/ai-detect-report

Headers

{ "Content-Type": "application/json", "Accept": "application/json", "X-API-Key": "YOUR_API_KEY" }

Request Body Parameters

ParameterTypeRequiredDescription
textstringYesThe text to analyze for AI-generated content. Minimum 50 words, maximum 150,000 characters.
titlestringNoOptional title for the report. Auto-generated from the text if omitted.

Request Body Example

{ "title": "Essay draft", "text": "The text content to check for AI generation. This can be multiple paragraphs..." }

Response (200 OK)

{ "status": true, "data": { "id": "abc123def456" } }

Error Response Example (402)

{ "status": false, "code": 402, "message": "Insufficient API credits. Top up your balance to continue.", "data": { "balance_words": 120, "needed_words": 450 } }
Note: After submitting, poll GET /api/v2/report-progress/{REPORT_ID} until the progress reaches 1.0, then fetch results from GET /api/v2/ai-detect-report/{REPORT_ID}.
Files: To check a document, send it to POST /api/v2/ai-detect-report-file as multipart/form-data with the file in the file field (.txt, .pdf, .doc or .docx, up to 10 MB). The extracted text has the same 150,000-character limit.
Billing: Charged at the same $0.10 per 1,000 words rate as plagiarism reports, deducted from your API credits wallet on a successful submission. 402 and upstream errors are not charged.

Get AI Detection Report API

Retrieve the AI-detection result for a report created via POST /api/v2/ai-detect-report. Returns the AI-generation score, a human-readable verdict, and a per-sentence breakdown.

GEThttps://www.quetext.com/api/v2/ai-detect-report/{REPORT_ID}

URL Parameters

ParameterTypeRequiredDescription
REPORT_IDstringYesThe unique identifier of the AI-detection report (returned when creating it).

Headers

{ "Content-Type": "application/json", "Accept": "application/json", "X-API-Key": "YOUR_API_KEY" }

Response (200 OK)

{ "status": true, "data": { "id": "abc123def456", "title": "Essay draft", "status": "completed", "percentage": 100, "word_count": 1500, "sentence_count": 75, "ai_score": "82.50", "ai_summary": "Most of your text is likely to be written by AI.", "ai_matches": [ { "sentence": "A sentence from the analyzed text...", "generated_prob": 0.91 } ], "start_date": 1693933146, "end_date": 1693933246 } }

Response Fields

FieldTypeDescription
idstringUnique report identifier
statusstringReport status: "completed" or "in-progress"
percentagenumberProcessing completion percentage (0-100)
ai_scorestringLikelihood the text is AI-generated, as a percentage string (e.g. "82.50"). null until analysis completes.
ai_summarystringHuman-readable verdict for the document
ai_matchesarrayPer-sentence breakdown of AI-generation likelihood
word_countnumberTotal word count in the analyzed text
No extra charge: Reading the result is free. The wallet was charged when the report was created via POST /api/v2/ai-detect-report.
Security: You can only retrieve AI-detection reports created via the API and owned by your account. Other reports return a 401 or 404 error.

Pricing & Wallet

The v2 API is funded by a prepaid wallet that is separate from any Quetext subscription. Every plagiarism or AI detection request deducts from this wallet based on the request's word count.

Rate
$0.10
per 1k words
Free words
5k
on signup
Best for
Production
integrations

Pay-as-you-go with a prepaid wallet. Only POST requests deduct credits. All reads, PDFs, and progress checks are free.

Try the API free, no commitment

Every new account gets 5,000 free words of plagiarism and AI detection, enough to build and test your integration before you top up.

Get Free Credits→

What deducts from the wallet

  • POST /api/v2/report (plagiarism) and POST /api/v2/ai-detect-report (AI detection), plus their file upload versions POST /api/v2/report-file and POST /api/v2/ai-detect-report-file, charged once the analysis dispatches successfully. Failures (e.g. 402 insufficient balance, or upstream errors) are not charged.
  • Everything else (GET /v2/report/:id, GET /v2/ai-detect-report/:id, GET /v2/report/:id/pdf, GET /v2/reports, GET /v2/report-progress/:id, DELETE /v2/report/:id, GET /v2/plan) is free.

Topping up

Top up your wallet from Account > API Keys in the Quetext dashboard. You can:

  • Pick a preset amount ($5, $10, $20, $50, $100) or use one of the supported currency presets (USD, INR, EUR, GBP)
  • Pay with any saved card, or add a new card inline
  • Enable Auto Top-up: once your balance falls below your threshold, Quetext charges your saved card off-session for your selected amount. Auto top-up is the recommended setup for production integrations, so your API will not go down unexpectedly

Receipts

Every successful top-up has a Stripe-hosted receipt. You can find receipts under Recent Top-ups on the API Keys page.

Insufficient balance behavior

If a POST /v2/report or POST /v2/ai-detect-report request would exceed your balance, the request short-circuits with HTTP 402 and the request body is not sent for analysis. The response includes the current balance and the words needed:

{ "status": false, "code": 402, "message": "Insufficient API credits. Top up your balance to continue.", "data": { "balance_words": 120, "needed_words": 450 } }
Production tip: Wire your client to detect 402 responses, surface the gap to your operators, and consider enabling auto top-up so the next request succeeds without manual intervention.