Quetext Partner API

Access plagiarism detection, AI content detection, and reporting through our RESTful API

Introduction

The Quetext Plagiarism API provides programmatic access to our plagiarism detection service. Our API offers a RESTful interface with JSON-formatted responses, allowing you to integrate plagiarism checking directly into your applications.

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 — no monthly commitment

Start with $5 in free API credits

FREE

Sign up and get 50,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/
API Versioning: This documentation covers API v2, which uses API key authentication.

Pricing & Wallet

The v2 API is funded by a prepaid API credits wallet, independent of any Quetext subscription. Pricing is $0.10 per 1,000 words analyzed. Top up your wallet from Account > API Keys and optionally enable auto top-up so your integrations never go down. See the Pricing & Wallet section below 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 — comes with $5 in free credits (50,000 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. 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.

POST https://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 length varies by plan.
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 Example

{ "status": false, "code": 500, "message": "This search requires a minimum of 20 words." }
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.

GET https://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.

GET https://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/12345/pdf" \ -H "X-API-Key: YOUR_API_KEY" \ -o report-12345.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 — subsequent downloads of the same report are fast.

Get Reports API

Retrieve a list of all your plagiarism reports. This endpoint returns up to 5,000 reports from your account, sorted by creation date (most recent first).

GET https://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": "abc123", "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

Permanently delete a specific plagiarism report from your account. This action cannot be undone.

DELETE https://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 report. Use this endpoint to poll for completion status after submitting a report.

GET https://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, "id": "abc123def456" } ] }

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 details about your current account plan, subscription information, and available credits. This endpoint provides comprehensive information about your subscription, including plan details and credit balances.

GET https://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, "addon": 0 } } }

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.pagesnumberAvailable page credits for plagiarism detection
credits.addonnumberAdditional purchased credits

Error Response (401)

{ "status": false, "code": 401, "message": "Something went wrong. Please try again later." }
Credit Management: Use this endpoint to check your available credits before creating reports. Credits are consumed based on the word count of analyzed text. Free plans may have different credit structures than paid plans.

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.

POST https://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. Must be at least 50 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}.
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.

GET https://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 check deducts from this wallet based on the request's word count.

Pricing & Wallet

Rate
$0.10
per 1k words
Free credits
$5
on signup
That's
50k
free words

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 in free API credits. That's 50,000 words of plagiarism and AI detection — enough to build and ship your integration before spending a dollar.

Get Free Credits

What deducts from the wallet

  • POST /api/v2/report (plagiarism) and POST /api/v2/ai-detect-report (AI detection) — 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 — your API will not go down unexpectedly

Receipts

Every successful top-up has a Stripe-hosted receipt URL attached. You can find receipts under Recent Top-ups on the API Keys page, or fetch them programmatically via the dashboard wallet endpoint.

Insufficient balance behavior

If a POST /v2/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.