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
Base URL
All API requests should be made to:
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
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.
Encryption
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
Error Response Format
| Code | Meaning |
|---|---|
| 400 | Bad Request - Invalid request parameters or missing required fields |
| 401 | Unauthorized - Invalid or missing API key |
| 402 | Payment 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) |
| 403 | Forbidden - You do not have permission to view the requested resource |
| 404 | Not Found - Resource could not be found |
| 409 | Conflict - Report is still processing; the requested action requires a completed report |
| 429 | Too Many Requests - Rate limit exceeded. Please slow down and try again |
| 500 | Internal 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).
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:
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.
Headers
Request Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
text | string | Yes | The text content to check for plagiarism. Minimum length varies by plan. |
title | string | No | Optional title for the report. Helps organize your reports. |
Request Body Example
Response (200 OK)
Error Response Example
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.
URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
REPORT_ID | string | Yes | The unique identifier of the report (returned when creating a report). |
Headers
Response (200 OK)
Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique report identifier |
status | string | Report status: "completed" or "in-progress" |
percentage | number | Processing completion percentage (0-100) |
score | number | Plagiarism similarity score (0-100, null if not available) |
word_count | number | Total word count in the analyzed text |
matches | array | Array of detected plagiarism matches with sources |
Error Response (401)
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.
Headers
Path Parameters
| Parameter | Type | Description |
|---|---|---|
REPORT_ID | integer | The id of a completed report owned by your account. |
Success Response (200)
The response body is the binary PDF. Relevant headers:
Error Responses
| Status | Body | Cause |
|---|---|---|
| 400 | code:400 | Missing report id |
| 401 | code:401 | Invalid or missing X-API-Key |
| 404 | code:404 | Report not found, or not owned by your account |
| 409 | code:409, data.progress | Report is still being analyzed. Poll /v2/report-progress/{id} until progress reaches 1, then retry. |
| 429 | code:429 | Download rate limit exceeded for this account. |
| 500 | code:500 | PDF rendering failed. Retry after a short delay. |
Example (curl)
POST /v2/report; re-downloads are free.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).
Headers
Response (200 OK)
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.
URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
REPORT_ID | string | Yes | The unique identifier of the report to delete. Must be a valid report ID that belongs to your account. |
Headers
Response (200 OK)
Error Response (404)
Get Report Progress API
Check the processing progress of a plagiarism report. Use this endpoint to poll for completion status after submitting a report.
URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
REPORT_ID | string | Yes | The unique identifier of the report to check progress for. |
Headers
Response (200 OK)
Response When Report Not Found
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.
Headers
Response (200 OK)
Response Fields
| Field | Type | Description |
|---|---|---|
plan.name | string | Name of your subscription plan |
plan.price | number | Monthly or yearly subscription price |
plan.created_at | number | Unix timestamp when the plan was created |
plan.additional_users | number | Number of additional users allowed on team plans |
plan.plan_type | string | Subscription billing period: "Monthly" or "Yearly" |
credits.pages | number | Available page credits for plagiarism detection |
credits.addon | number | Additional purchased credits |
Error Response (401)
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.
Headers
Request Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
text | string | Yes | The text to analyze for AI-generated content. Must be at least 50 characters. |
title | string | No | Optional title for the report. Auto-generated from the text if omitted. |
Request Body Example
Response (200 OK)
Error Response Example (402)
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}.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.
URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
REPORT_ID | string | Yes | The unique identifier of the AI-detection report (returned when creating it). |
Headers
Response (200 OK)
Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique report identifier |
status | string | Report status: "completed" or "in-progress" |
percentage | number | Processing completion percentage (0-100) |
ai_score | string | Likelihood the text is AI-generated, as a percentage string (e.g. "82.50"). null until analysis completes. |
ai_summary | string | Human-readable verdict for the document |
ai_matches | array | Per-sentence breakdown of AI-generation likelihood |
word_count | number | Total word count in the analyzed text |
POST /api/v2/ai-detect-report.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
Pay-as-you-go with a prepaid wallet. Only POST requests deduct credits — all reads, PDFs, and progress checks are free.
What deducts from the wallet
POST /api/v2/report(plagiarism) andPOST /api/v2/ai-detect-report(AI detection) — charged once the analysis dispatches successfully. Failures (e.g.402insufficient 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:
402 responses, surface the gap to your operators, and consider enabling auto top-up so the next request succeeds without manual intervention.