terminalREST API v1

API Documentation

Everything you need to integrate plagiarism checking into your application. Simple, reliable, and built for scale.

key

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_here

API keys are prefixed with pe_ followed by 32 hex characters. You can manage your API keys in your dashboard.

POST

/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
  }
}
GET

/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"
GET

/api/v1/usage

Get your usage statistics and credit balance.

curl https://plagiarismchecker.so/api/v1/usage \
  -H "Authorization: Bearer pe_your_api_key"
GET

/api/v1/health

Health check endpoint. No authentication required.

curl https://plagiarismchecker.so/api/v1/health
error

Error Codes

HTTPCodeDescription
400TEXT_TOO_SHORTText must be at least 50 characters
400TEXT_TOO_LONGText must be 10,000 characters or fewer
400INVALID_REQUESTRequest body is malformed
401AUTHENTICATION_REQUIREDNo valid authentication provided
401INVALID_API_KEYInvalid or revoked API key
402CREDITS_EXHAUSTEDMonthly credit limit reached
429RATE_LIMIT_EXCEEDEDToo many requests
500PIPELINE_ERRORInternal scanning error
502ML_SERVICE_UNAVAILABLESimilarity engine temporarily unavailable
speed

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.

PlanRequests/minCredits/month
Free10300
Creator201,000
Professional605,000
Department12020,000
Institution200100,000

Rate limit headers are included with every API response:

X-RateLimit-Limit: 20
X-RateLimit-Remaining: 18
X-RateLimit-Reset: 1708257660

When 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.