Verificare plagiat API pentru integrare rapidă
Endpoint REST gata de integrat pentru detecție de plagiat + AI. Spec OpenAPI 3.0, SDK-uri Python și Node, implementare de referință Apache 2.0. De la primul curl la volum cu webhook — același engine folosit pe noplag.com.
De la zero la un scor de similaritate dintr-un singur curl.
POST text, primiți intervale notate la retur. Fără SDK, fără compilare, fără format propietar de date.
$ 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 } ]}Patru endpoint-uri. Un singur contract. Versiunea în URL.
Aceeași specificație OpenAPI 3.0 se găsește atât în depozitul open source, cât și pe engine.noplag.app. SDK-urile sunt regenerate din aceasta la fiecare versiune marcată.
Bearer tokens. Idempotency keys. Header-e de rate-limit oneste.
Nimic exotic. Folosim idiomuri HTTP standard — urmate pentru ca middleware-ul existent să funcționeze fără traume.
Bearer tokens. Un singur header, fără pași suplimentari.
Authorization: Bearer nplg_live_a82f...Idempotency-Key: 0e8f9c44-...Pe cheie, pe minut. Header-ele arată exact unde sunteți.
X-RateLimit-Limit: 60X-RateLimit-Remaining: 41X-RateLimit-Reset: 1747920480Retry-After: 19 (only on 429)Două SDK-uri. Generate din aceeași spec OpenAPI 3.0.
Python + Node apar la fiecare release cu tag pe engine. Alte limbi (Go, Ruby, Java) generate din openapi.yaml — PR-uri din comunitate binevenite.
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,});Check-urile de durată lungă vă apelează ei. Cu retry-uri fără dureri de cap.
Patru tipuri de evenimente. Body JSON. Semnătură HMAC-SHA256 în header.
Retry exponențial pe 24 ore. Rejucabil din dashboard.
Verificați semnătura. Respingeți orice nu corespunde.
Fiecare livrare are X-Noplag-Signature: t=<unix>,v1=<hex>. Calculați HMAC-SHA256 peste timestamp + body folosind secretul webhook și comparație în timp constant.
h = hmac.new(secret, f"{t}.{body}".encode(), hashlib.sha256).hexdigest()assert hmac.compare_digest(h, v1)Urmăm HTTP. Acesta este intregul design al API-ului.
POST-urile sunt idempotente. Versiunea apare în URL. Erorile spun ce urmează de făcut. Header-ele arată exact unde sunteți față de limita de rată. Paginare prin cursor, nu offset. Data/timp în UTC ISO 8601. Nu avem dialect HATEOAS personalizat, nu returnăm 200 OK la erori, nu cerem implementare OAuth pentru apeluri server-la-server. Documentația de design este RFC 9110 și spec OpenAPI 3.0 — nu există un “Noplag Way” suplimentar de învățat.
Citiți notele de designÎntrebările pe care le pun efectiv inginerii noștri de integrare.
- Care este latența tipică la apel pentru un document normal?
- p50 aproximativ 600ms pentru o verificare de 500 de cuvinte față de corpusul indexat; p95 ~1,8s. Se adaugă ~2s când Layer-W (verificare web în timp real) este activat — implică interogări la Google + Brave. Documentele lungi (cu timp estimat peste 8s) returnează imediat un check_id și transmit rezultatul prin webhook.
- Cum se măsoară costul pentru API?
- Un apel facturat per trimitere /v1/checks, indiferent de dimensiunea documentului până la plafonul de cuvinte (1.500 Pro, 50.000 Premium, Enterprise personalizat). Retry idempotent cu aceeași Idempotency-Key + body în 24h nu dublează costul. Citirile /v1/checks/{id} și apelurile auxiliare SDK sunt gratuite.
- Pot rula API-ul self-hosted?
- Da — github.com/NoplagLabs/noplag-engine este aceeași implementare de referință Apache-2.0 care rulează la engine.noplag.app. Cu docker compose up obțineți un endpoint local /v1/checks. Varianta cloud adaugă corpusul gestionat + cheile API Google/Brave; pentru self-host complet, folosiți propriile chei.
- Există un header de retry rate-limit de încredere?
- La 429 răspundem cu Retry-After în secunde. Header-ele X-RateLimit-* apar la fiecare răspuns — puteți pre-throttle bazat pe X-RateLimit-Remaining fără să așteptați un 429. Ambele sunt corecte și stabile la upgrade.
- Care e frecvența release-ului pentru SDK-uri?
- SDK-urile Python și Node se regenerează automat din openapi.yaml la fiecare tag engine. Release-urile majore engine (v0.x → v0.y) au SDK în aceeași zi. Patch-urile tehnice se livrează în acea săptămână. Ambele SDK-uri respectă semver; API-ul de bază se schimbă doar la /v1 → /v2.
- Ce se întâmplă dacă corpusul se schimbă la mijlocul lunii?
- Orice check marchează X-Engine-Commit și un timestamp de snapshot corpus. Reluarea unui check vechi pe corpusul actual se face cu un parametru de query (?corpus_snapshot=…). Raportul inițial se păstrează cu snapshotul original — nu modificăm niciodată silențios scorul de similaritate returnat.
- Cum testez fără să consum cota lunară?
- Cheile de test (nplg_test_…) merg pe un sandbox: toată suprafața API, nu persistă uploadurile, nu afectează limita lunară sau rate-limit-ul. Webhook-urile pornesc și din sandbox, deci testele end-to-end nu costă.
- Cum fac bulk check-uri corect?
- Trimiteți în paralel până la plafonul rate-limit — nu există endpoint batch (un batch de 500 care eșuează la doc 312 e mai rău decât 500 apeluri independente). Pentru volum mare, folosiți webhooks: trimiteți, primiți check_id imediat, lansați următoarele 200, preluați rezultate pe măsură ce sosesc, indiferent de ordine.
- Pot limita check-ul doar la folderele mele?
- Da — corpora: [] cu folder_id în body se limitează la foldere private user. Combinați cu corpora: ["academic"] pentru „doar academic + folderele mele”. Per apel; nu există nivel separat de tarifare.
- Ce se schimbă dacă vreau rezidență UE sau instalare on-prem?
- Enterprise oferă endpoint UE dedicat (api.eu.noplag.com) cu aceeași suprafață OpenAPI, deci datele rămân în EEA. Sau self-host implementarea de referință complet în VPC-ul propriu — același engine, același contract /v1, nimic iese din rețea. (Ne relansăm pe model open-core; atestări formale ca SOC 2 sunt planificate, nu livrate încă — engine-ul auditat e ceea ce oferim acum.)
Obțineți o cheie API. Faceți primul apel.
Trial gratuit cu 100 de apeluri API. Pro de la $23/lună pentru 1.000. Implementarea Apache 2.0 dacă preferați să rămână totul în rețea.