Developers
WriteGuard API
Check text for plagiarism and AI-generated content from your own application. Submit text, poll for results, get per-source matches and per-sentence AI scores.
403 plan_required. See plans.Authentication
Create a key in Settings → API and send it as a bearer token. The key is shown once when created — it is stored only as a hash, so it cannot be recovered later. Treat it as a password and keep it server-side.
Authorization: Bearer wgk_your_key_hereHow billing works
A scan costs its word count once per tool. Checking 800 words for both plagiarism and AI costs 1,600 words. Words are taken from your monthly allowance first and then from any purchased balance. If a scan cannot be queued, its words are refunded automatically. Rate limit is 60 requests per minute per key.
Text must be at least 50 words. Anything shorter is rejected with 400 text_too_short before any words are charged — below that length neither check can return a meaningful result.
Quick start
Scans are asynchronous: submitting returns 202 immediately, then you poll until the status is completed.
cURL
curl -X POST https://app.plagiarismcheckerplus.com/api/public/v1/scans \
-H "Authorization: Bearer $WRITEGUARD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "The text you want to check.",
"tools": ["plagiarism", "ai_detect"]
}'Node.js
const BASE = "https://app.plagiarismcheckerplus.com/api/public/v1";
const headers = {
Authorization: `Bearer ${process.env.WRITEGUARD_API_KEY}`,
"Content-Type": "application/json",
};
// 1. Submit — returns 202 straight away.
const res = await fetch(`${BASE}/scans`, {
method: "POST",
headers,
body: JSON.stringify({
text: "The text you want to check.",
tools: ["plagiarism", "ai_detect"],
}),
});
const { id } = await res.json();
// 2. Poll until it finishes (usually 30-90s).
let scan;
do {
await new Promise((r) => setTimeout(r, 3000));
scan = await fetch(`${BASE}/scans/${id}`, { headers }).then((r) => r.json());
} while (scan.status === "pending" || scan.status === "processing");
console.log(scan.results.plagiarism?.score, scan.results.aiDetection?.score);Python
import os, time, requests
BASE = "https://app.plagiarismcheckerplus.com/api/public/v1"
headers = {"Authorization": f"Bearer {os.environ['WRITEGUARD_API_KEY']}"}
scan_id = requests.post(
f"{BASE}/scans",
headers=headers,
json={"text": "The text you want to check.", "tools": ["plagiarism", "ai_detect"]},
).json()["id"]
while True:
scan = requests.get(f"{BASE}/scans/{scan_id}", headers=headers).json()
if scan["status"] not in ("pending", "processing"):
break
time.sleep(3)
print(scan["results"]["plagiarism"]["score"])Reference
Every endpoint, with schemas and a live console. Click Authorize and paste a key to run requests against your own account.