API Documentation
Everything you need to integrate plagiarism checking into your application. Simple, reliable, and built for scale.
Authentication
All API endpoints require authentication via an API key. Include your API key in the Authorization header as a Bearer token.
Authorization: Bearer pe_your_api_key_hereAPI keys are prefixed with pe_ followed by 32 hex characters. You can manage your API keys in your dashboard.
/api/v1/scan
Run a plagiarism scan on the provided text. Returns a scan ID and detailed plagiarism analysis.
Request Body
{
"text": "Your text to check for plagiarism...",
"options": {
"search_depth": "standard" // "standard" or "deep"
}
}terminalcURL
curl -X POST https://plagiarismchecker.so/api/v1/scan \
-H "Authorization: Bearer pe_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"text": "Your text to check for plagiarism...",
"options": {
"search_depth": "standard"
}
}'codePython
import requests
response = requests.post(
"https://plagiarismchecker.so/api/v1/scan",
headers={"Authorization": "Bearer pe_your_api_key"},
json={
"text": "Your text to check...",
"options": {"search_depth": "standard"}
}
)
print(response.json())javascriptNode.js
const response = await fetch("https://plagiarismchecker.so/api/v1/scan", {
method: "POST",
headers: {
"Authorization": "Bearer pe_your_api_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
text: "Your text to check...",
options: { search_depth: "standard" },
}),
});
const data = await response.json();Response
{
"scanId": "scan_abc123def456",
"plagiarism_score": 24.5,
"verdict": "moderate_plagiarism",
"highlights": [...],
"sources": [...],
"stats": {
"total_words": 1250,
"unique_words": 890,
"matched_words": 305,
"processing_time_ms": 3500
}
}/api/v1/scan/:scanId
Retrieve a previous scan result by ID.
curl https://plagiarismchecker.so/api/v1/scan/scan_abc123 \
-H "Authorization: Bearer pe_your_api_key"/api/v1/usage
Get your usage statistics and credit balance.
curl https://plagiarismchecker.so/api/v1/usage \
-H "Authorization: Bearer pe_your_api_key"/api/v1/health
Health check endpoint. No authentication required.
curl https://plagiarismchecker.so/api/v1/healthError Codes
| HTTP | Code | Description |
|---|---|---|
| 400 | TEXT_TOO_SHORT | Text must be at least 50 characters |
| 400 | TEXT_TOO_LONG | Text must be 10,000 characters or fewer |
| 400 | INVALID_REQUEST | Request body is malformed |
| 401 | AUTHENTICATION_REQUIRED | No valid authentication provided |
| 401 | INVALID_API_KEY | Invalid or revoked API key |
| 402 | CREDITS_EXHAUSTED | Monthly credit limit reached |
| 429 | RATE_LIMIT_EXCEEDED | Too many requests |
| 500 | PIPELINE_ERROR | Internal scanning error |
| 502 | ML_SERVICE_UNAVAILABLE | Similarity engine temporarily unavailable |
Rate Limits
Each plan includes both a rate limit (requests per minute) and a monthly credit allowance. Credits are consumed per scan based on text length and search depth.
| Plan | Requests/min | Credits/month |
|---|---|---|
| Free | 10 | 300 |
| Creator | 20 | 1,000 |
| Professional | 60 | 5,000 |
| Department | 120 | 20,000 |
| Institution | 200 | 100,000 |
Rate limit headers are included with every API response:
X-RateLimit-Limit: 20
X-RateLimit-Remaining: 18
X-RateLimit-Reset: 1708257660When you exceed your rate limit, the API returns a 429 status code. When you exceed your monthly credits, the API returns a 402 status code.