Plaģiāta pārbaude API ar OpenAPI 3.0
REST gals plagiātisma un AI noteikšanai. OpenAPI 3.0 specifikācija, Python un Node SDK, Apache 2.0 piemērs. Sākot no pirmā curl līdz webhuku apjomiem — tas pats dzinējs, kas darbojas noplag.com.
No nulles līdz līdzības rādītājam ar vienu curl.
POST teksts, saņem intervālus ar rādītājiem. SDK nav vajadzīgs, nav kompilācijas, nav īpašas datu plūsmas.
$ curl https://engine.noplag.app/v1/checks \ -H "Authorization: Bearer $NOPLAG_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: $(uuidgen)" \ -d '{ "text": "The rain in Spain falls...", "corpora": ["web", "academic"], "ai_detection": true, "webhook_url": "https://you.example/hook" }'{ "check_id": "chk_01HX9R2Y4...", "status": "complete", "similarity_pct": 23.4, "ai_score": 0.08, "engine_commit": "v0.4.2", "sources": [ { "url": "https://en.wikipedia...", "matched_chars": 142, "similarity_pct": 100.0 } ]}Četri galapunkti. Viens līgums. Versija URL.
Tā pati OpenAPI 3.0 specifikācija ir pieejama gan atvērtā pirmkoda repozitorijā, gan vietnē engine.noplag.app. SDK tiek ģenerēti no šīs specifikācijas katrā iezīmētajā laidienā.
Bearer tokeni. Idempotences atslēgas. Godīgi limiti galvenēs.
Nekā īpaša. Standarta HTTP pieejas — ievērojam tās, lai Jūsu esošā atkārtojumu starpprogrammatūra darbotos.
Bearer tokeni. Viena galvene, nav papildus darbību.
Authorization: Bearer nplg_live_a82f...Idempotency-Key: 0e8f9c44-...Uz atslēgu, minūtē. Galvenes precīzi rāda Jūsu stāvokli.
X-RateLimit-Limit: 60X-RateLimit-Remaining: 41X-RateLimit-Reset: 1747920480Retry-After: 19 (only on 429)Divi SDK. Abi ģenerēti no vienas OpenAPI 3.0 specifikācijas.
Python + Node SDK pie katra dzinēja marķētā laidiena. Citas valodas (Go, Ruby, Java) ģenerējamas no openapi.yaml — aicinām PR no kopienas.
from noplag import Noplagclient = Noplag(api_key="nplg_live_…")report = client.checks.create( text="...", corpora=["web", "academic"], ai_detection=True,)print(report.similarity_pct)import Noplag from "@noplag/sdk";const client = new Noplag({ apiKey: process.env.NOPLAG_KEY,});const report = await client.checks.create({ text: "...", corpora: ["web", "academic"], aiDetection: true,});Ilgi darbojošās pārbaudes atzvana Jūs. Atkārtojumi, kas saglabā pilnu vēsturi.
Četri notikumu tipi. JSON struktūra. HMAC-SHA256 paraksts galvenē.
Eksponenciāli atkārtojumi 24 stundas. Var atkārtot no paneļa.
Pārbaudiet parakstu. Nesaņemtais tiek noraidīts.
Katra piegāde nes X-Noplag-Signature: t=<unix>,v1=<hex>. Aprēķiniet HMAC-SHA256 pār timestamp + body ar savu noslēpumu un salīdziniet konstantā laikā.
h = hmac.new(secret, f"{t}.{body}".encode(), hashlib.sha256).hexdigest()assert hmac.compare_digest(h, v1)Balstāmies uz HTTP. Tas ir viss API dizaina dokuments.
POST darbības — idempotentes. Versija URL. Kļūdas paskaidro nākamo soli. Galvenes precīzi rāda Jūsu stāvokli limitlogā. Paginācija — ar kursoru, nevis kārtas numuru. Laika zīmogi UTC ISO 8601. Mums nav savas HATEOAS valodas, neatgriežam 200 OK kļūdai un neprasām OAuth serveru savstarpējiem zvaniem. API dizains — RFC 9110 un OpenAPI 3.0 specifikācija. Nav atsevišķa “Noplag veida”, ko būtu jāapgūst.
Lasīt dizaina piezīmesJautājumi, ko uzdod mūsu integrācijas inženieri.
- Kāda ir zvana aizture tipiskam dokumentam?
- p50 ap 600 ms, pārbaudot 500 vārdus pret indeksēto korpusu; p95 ~1,8 s. Ja ieslēgts Layer-W (tiešsaistes pārbaude tīmeklī), pievienojas ~2 s — tas notiek caur Google un Brave. Garākiem dokumentiem (ja sagaidāms darbs virs 8 s) uzreiz tiek atgriezts check_id, un rezultāts tiek nosūtīts ar webhook.
- Kā tiek rēķināta maksa par API?
- Viens maksas zvans uz katru /v1/checks iesniegumu — neatkarīgi no dokumenta apjoma, līdz plāna vārdskaitam (1 500 Pro, 50 000 Premium, pielāgots Enterprise). Idempotenti atkārtojumi ar to pašu atslēgu + ķermeni 24h laikā netiek dubultskaitīti. /v1/checks/{id} lasīšana un SDK palīgzvani — bez maksas.
- Vai es varu darbināt API lokāli?
- Jā — github.com/NoplagLabs/noplag-engine ir tā pati Apache-2.0 atsauces implementācija, kas darbojas engine.noplag.app. Ar docker compose up var palaist lokālu /v1/checks galapunktu. Mākoņpakalpojuma līmenī pieejams pārvaldītais korpuss un Google/Brave API atslēgas; pilnai pašuzturēšanai savas atslēgas jānodrošina pašam.
- Vai ir rate-limit atkārtojuma galvene, kurai varu uzticēties?
- Pie 429 atgriežam Retry-After sekundēs. X-RateLimit-* galvenes iet katrā atbildē — varat ierobežot pēc X-RateLimit-Remaining, negaidot 429. Abi pareizi, abi stabili caur laidieniem.
- Kāda ir SDK atjauninājumu biežums?
- Python un Node SDK tiek pārģenerēti no openapi.yaml pie katra dzinēja marķējuma. Galvenie dzinēja laidieni (v0.x → v0.y) saņem SDK versiju tajā pašā dienā. Kļūdu labojumi iznāk nedēļas laikā. Abi SDK ievēro semver; API virsma mainās tikai /v1 → /v2.
- Kas notiek, ja korpuss mainās mēneša laikā?
- Katra pārbaude satur X-Engine-Commit un korpusa momentuzņēmuma laiku. Vecas pārbaudes atkārtota veikšana pret jaunāko korpusu — viens query parameters (?corpus_snapshot=…). Oriģinālā atskaite saglabājas ar savu momentuzņēmumu — mēs nekad nemainām iepriekš atgrieztu līdzības rādītāju bez atsevišķa pieprasījuma.
- Kā izmantot testa režīmu, nebojājot savu mēneša kvotu?
- Testa atslēgas (nplg_test_…) darbojas smilšu kastē: pilna API virsma, nekas netiek saglabāts, nekaitina limitu vai kvotu. Webhuki arī darbojas testā — integrācijas testi ir bez maksas.
- Kā pareizi veikt masveida pārbaudes?
- Sūtiet paralēli līdz sava limita griestam — nav grupas gala punkta pēc dizaina (500 dokumentu batch, kur 312. dokuments izgāžas, nav labāk kā 500 neatkarīgu zvanu). Liela apjoma gadījumā — kombinējiet API ar webhuku: iesniedziet, uzreiz saņemat check_id, turpiniet nākamos 200 dokumentus, apstrādājiet atbildes pēc to saņemšanas, neatkarīgi no kārtas.
- Vai varu pārbaudīt tikai savas mapes?
- Jā — corpora: [] ar folder_id pieprasījumā salīdzina tikai pret privātajām mapēm. Kombinējiet ar corpora: ["academic"], lai pārbaudītu tikai akadēmiskos + savu mapi. Katram pieprasījumam atsevišķi; papildu maksas nav.
- Kas mainās, ja vajag ES rezidenci vai lokālu izpildi?
- Enterprise līmenis nodrošina atsevišķu EU-endpoint (api.eu.noplag.com) ar to pašu OpenAPI saskarni — personas dati paliek EEA. Vai arī — palaidiet pilnu piemēra ieviešanu savā VPC — tas pats dzinējs, tas pats /v1 līgums, nekas netiek pārsūtīts ārpus tīkla. (Atjaunojam uz open-core uzņēmumu; formālas atbilstības, piemēram, SOC 2, ir plānā, bet vēl nav. Piedāvājam auditu iespējamu dzinēju kā pagaidu variantu.)
Iegūstiet API atslēgu. Veiciet savu pirmo zvanu.
Bezmaksas izmēģinājums — 100 API zvani. Pro — 23 $/mēn par 1 000. Apache 2.0 piemērs, ja nevēlaties izsaukt ārpus sava tīkla.