D'Auteure vum Text sinn: De Paul Reiter, d'Auteure vum Text sinn:

Eng Handvoll Endpunkten, Bearer Auth, transparent Kredittpräisser. Gebaut fir Agenturen, editorial Pipelines an LMS-nahe Tools.

Äre API Schlëssel

Melden Si sech un fir Är API Schlëssel ze kréien. Schlëssel kommen mat all Kont; API Kontrolle ginn an Credits bezuelt.

Anmelden

Endpunkten

POST /api/v1/check/

Text fir Kontroll schécken. 202 mat enger check_id zréckginn. Kierper: JSON mat engem Textfeld, optional deeper Boolean.

curl -X POST https://plagiarism.free/api/v1/check/ \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "The text you want to check..."}'

GET /api/v1/check/<check_id>/

D'Resultat ass eng komplett

curl https://plagiarism.free/api/v1/check/CHECK_ID/ \
  -H "Authorization: Bearer YOUR_KEY"

GET /api/v1/checks/

Listen Är leschte Kontrollen, déi neist virum Enn. Optiounal Query Parameter: Limit (1- 100, Standard 20) an Status (Queue, gemaach, gescheitert...). Vermëschen d'Einsendungen an erstellen Är eege Dashboard ouni all check_ id ze späicheren.

curl "https://plagiarism.free/api/v1/checks/?limit=20&status=done" \
  -H "Authorization: Bearer YOUR_KEY"

Lëscht vu Python-Programmer

import time
import requests

API = "https://plagiarism.free/api/v1/check/"
HEADERS = {"Authorization": "Bearer YOUR_KEY"}

r = requests.post(API, json={"text": open("essay.txt").read()}, headers=HEADERS)
check_id = r.json()["check_id"]

while True:
    report = requests.get(f"{API}{check_id}/", headers=HEADERS).json()
    if report["status"] in ("done", "failed"):
        break
    time.sleep(3)

print(report["score_pct"], "% matched")
for source in report["sources"]:
    print(source["pct_of_document"], source["url"])

Lëscht vu lëtzebuergesche Schrëftsteller

const API = "https://plagiarism.free/api/v1/check/";
const headers = { "Authorization": "Bearer YOUR_KEY", "Content-Type": "application/json" };

const { check_id } = await fetch(API, {
  method: "POST", headers, body: JSON.stringify({ text })
}).then(r => r.json());

let report;
do {
  await new Promise(res => setTimeout(res, 3000));
  report = await fetch(`${API}${check_id}/`, { headers }).then(r => r.json());
} while (!["done", "failed"].includes(report.status));

Präis

D'Sprooch ass eng vun de gréisste Sproochen op der Welt, mat ronn 1,5 Millioune Sproochesprecher, déi ronn 100 Sproochen léieren, an 100 Milliounen Awunner, déi ronn 100 Milliounen Sproochen schwätzen. Si huet och e Programm.

D'Prüfungen lafen asynchron (e realen, rate-limitéierten Web-Retrieval dauert 20-45 Sekonnen) - froen den Status-Ennpunkt un, anstatt d'Verbindung opzehalen. HTTP 402 heescht onzuelbar Kreditter; d'Äntwert enthält wat d'Prüfung kascht.

Häufig gestallt Froen

Two endpoints. POST /api/v1/check/ with your text returns a check_id; GET /api/v1/check/check_id/ returns status while the check runs and the full report JSON (score, matched sentences, sources) when done. Auth is a Bearer key from your account page. Code samples in curl, Python and JavaScript are below.

The same transparent unit as the site: 1 credit per 1,000 words scanned, rounded up per check. Credit packs start at $4.99 for 30 credits and are valid a full year; the $7.99/month Starter plan includes 60 credits and API access. No per-seat fees, no separate API pricing tier.

A check takes roughly 20-45 seconds because it performs real, rate-limited web retrieval and page comparison - the API is asynchronous for that reason. Submissions queue fairly; paid checks get priority. Poll the status endpoint every few seconds rather than holding the connection open.

Everything the web report shows: overall matched percentage, per-sentence match type (exact / near / none) with confidence, the matched source excerpt for each flagged sentence, and the source list with URLs and per-source match percentages. Enough to render your own report UI or gate a workflow.

Yes - that is what it is for: LMS-adjacent tools, editorial workflows, agency content pipelines. Volume is metered purely by credits, and the per-check word cap is 25000 words. If you need sustained high volume, contact us and we will provision for it rather than let queues degrade.