RESTOpenAPI 3.0 spets · Python + Node SDK-d · v0.4.2

Plagiaadikontroll API ja OpenAPI 3.0 tugi

REST-põhine plagiaadi ja tehisintellekti tuvastuse lõpp-punkt. OpenAPI 3.0 spets, Python ja Node SDK-d, Apache 2.0 viiteimplementatsioon. Alustades esimesest curl-käsust kuni webhook-mahuni — sama mootor, mis töötab aadressil noplag.com.

REST · OpenAPI 3.0Python + Node SDK-dApache 2.0 viiterakendus
ESIMENE PÄRING

Nullist sarnasusskoorini ühe curl-iga.

POST-iga tekst, vastu skooride intervallid. SDK pole nõutav, kompileerida ei tule, privaatset ühendusprotokolli pole.

PÄRING · bashKopeeri
$ 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"    }'
VASTUS · 200 OK · application/jsonKopeeri
{  "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 }  ]}
LÕPP-PUNKTID

Neli lõpp-punkti. Üks kokkulepe. Versioon URL-is.

Sama OpenAPI 3.0 spetsifikatsioon asub nii avatud lähtekoodiga repositooriumis kui ka aadressil engine.noplag.app. SDK-d uuendatakse selle põhjal iga märgistatud väljalaske korral.

POST/v1/checksAlgata kontrollSünkroonne kuni 8 sekundit; üle selle tuleb tagasikõne veebikonksuga. Idempotentsusvõti kohustuslik.
GET/v1/checks/{id}Vaata kontrolliTagastab viimase aruande oleku. Intervallide voog tekstina Accept: text/event-stream kaudu.
GET/v1/sources/{id}Vaata allikatLeiab vaste allika ID kaudu — täielik URL, kuupäev, salvestuse vs reaalajas vaade.
POST/v1/foldersHalda kaustuLisa / loetle / liiguta kontrolle. Piirab sisuotsingu valitud kausta privaatdokumentidega.
POST/v1/webhooksRegistreeri veebikonksHMAC-allkirjastus; eksponentsiaalne uuestikatse 24 h jooksul; iga tarne saab armatuurist uuesti esitada.
Täielik viide aadressil api./docsopenapi.yaml
AUTENTIMINE + PIIRANGUD

Bearer-tokenid. Idempotentsusvõtmed. Ausad piiravaated päises.

Ei midagi ebatavalist. Standardne HTTP — jälgime neid, et teie olemasolev kordusloogika töötaks.

AUTENTIMINE

Bearer-tokenid. Üks päis, ei tantsu signeerimisega.

1.
Loo võtiTöölaud → Seaded → API. Võtmetel on ulatus (lugemine / kirjutamine / admin) ja neid saab kahe klõpsuga vahetada.
2.
Lisa igasse päringusseAuthorization: Bearer nplg_live_…. Testvõtmed (nplg_test_) suunavad liivakasti, mis ei salvesta päringuid.
3.
POST-päringutesse ka Idempotency-KeySobilik on iga UUID. Sama võti + sisu annab vahemälus vastuse 24 tunni jooksul — korduspäring ei tekita topeltkulusid ega duplikaatkontrolle.
Authorization: Bearer nplg_live_a82f...Idempotency-Key: 0e8f9c44-...
PIIRANGUD

Võtme- ja minutipõhine. Päised näitavad teie asukohta.

TASEREQ/MINKUUSPLAHVATUS
Tasuta10100 / kuus20
Pro601 000 / kuus120
Premium30010 000 / kuus600
EnterpriseKohandatudLäbiräägitavKohandatud
X-RateLimit-Limit: 60X-RateLimit-Remaining: 41X-RateLimit-Reset: 1747920480Retry-After: 19  (only on 429)
SDK-D

Kaks SDK-d. Genereeritud samast OpenAPI 3.0 spetsist.

Python ja Node ilmuvad iga mootoriväljalaske märgisega. Teised keeled (Go, Ruby, Java) genereeritakse openapi.yaml põhjal — kogukonna PR-id teretulnud.

PYTHONpip install noplag
from noplag import Noplagclient = Noplag(api_key="nplg_live_…")report = client.checks.create(    text="...",    corpora=["web", "academic"],    ai_detection=True,)print(report.similarity_pct)
NODEnpm i @noplag/sdk
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,});
<200msp95 latentsus
99,95%töökindlus SLA
3regioonid (US/EU/AP)
OAPI 3spetsi formaat
Apache 2.0viiterakendus
VEEBIKONKSUD

Pikad kontrollid kutsuvad teid tagasi. Uuestikatsetega, mis ei tüüta.

01

Neli sündmustüüpi. JSON-sisu. HMAC-SHA256 allkiri päises.

check.completedAruanne valmis · sisaldab kogu JSON aruannet
check.failedPüsiv viga · sisaldab veakoodi + nõuanded uuestikatseks
check.progressVahepealne olek · seni leitud allikad
folder.sharedKausta jagati tiimiliikmele või välisaudiitorile
02

Eksponentsiaalsed uuestikatsed 24 h jooksul. Taasesitav armatuurist.

Uuestikatse kõver5s, 30s, 2m, 10m, 1h, 6h, 24h — siis dead-letter
Aegumine10s ühendus, 30s katse kohta kokku
Edu kriteeriumHTTP 2xx vastus määratud aja sees; järgime ümbersuunamisi
Taasesituse UIValige ükskõik milline tarne armatuurist ja esitage see uuele URL-ile
03

Kontrollige allkirja. Kõik, mis ei päde, tuleb tagasi lükata.

Igal tarnel on X-Noplag-Signature: t=<unix>,v1=<hex>. Arvutage HMAC-SHA256 ajatemplile + sisule kasutades oma veebikonkku saladust; võrdlus konstantse ajaga.

h = hmac.new(secret,    f"{t}.{body}".encode(),    hashlib.sha256).hexdigest()assert hmac.compare_digest(h, v1)
ARENDUSPRINTSIIBID

Järgime HTTP-d. See on kogu API disainidokument.

POST-is idempotentsus. Versioon URL-is. Veateated annavad juhised, mida järgmisena teha. Päised annavad teada, kus piiranguaknas ollakse. Lehelist kasutab kursorit, mitte offset-it. Ajad UTC ISO 8601. Oma HATEOAS-i pole, 200 OK-d vigadel ei anna, OAuth-i ei nõua server-to-serveri puhul. API disain toimub järgi RFC 9110 ja OpenAPI 3.0 spets-i. Eraldi “Noplag Way”-d õppida ei tule.

Vaata disainimärkmeid
DISAINIPOHD
IDEMPSama Idempotency-Key + sisu 24 tunni sees annab vahemälu vastuse. Võrguvea korral uuesti sama võtme ja andmetega — topeltkulu ega dubleerimist ei teki.
VERPeaversioon URL-is (/v1, /v2). Lõhkuvad muudatused toovad uue versioonitee — vana toetatud 12 kuud peale teadaannet.
ERRIGA 4xx/5xx jaoks RFC 9457 problem-details JSON: type, title, detail, instance, lisaks noplag.retry_strategy vihje.
PAGKursoripõhine igal nimekirja päringul. ?limit=100&cursor=… tagastab next_cursor body-s. Offseti üllatusi pole ka leht 47 puhul, kui kirjed vahepeal muutuvad.
OBSVastus sisaldab X-Engine-Commit, X-Request-Id ja Server-Timing igas etapis. Kordamiskontroll kontrolli ID järgi; raport seob täpse mootoriversiooniga.
OPENViite-implementatsioon Apache 2.0 litsentsiga aadressil github.com/NoplagLabs/noplag-engine. Kui andmed ei tohi võrgust väljuda, saate teenust ise majutada — API on sama.
KKK

Küsimused, mida meie integratsiooniinsenerid päriselt küsivad.

Kui pikk on tavalise kontrolli viivitus?
p50 umbes 600 ms 500-sõnalise kontrolli puhul indekseeritud korpuse vastu; p95 ~1,8 s. Kui Layer W (reaalajas veebikinnituse) on lubatud, lisandub ~2 s — see teeb päringu Google'i ja Brave'i kaudu. Pikkade dokumentide puhul (oodatav tööaeg üle 8 s) tagastatakse kohe check_id ja tulemus saadetakse webhooki kaudu.
Kuidas hinnastamine API kaudu toimub?
Iga /v1/checks päringu peale arvestatakse üks tasuline päring, sõltumata tekstimahust, kuni plaani ülempiirini (1500 sõna Pro, 50 000 Premium, eraldi Enterprise). Idempotentne uuesti saatmine sama Idempotency-Key + kehaga 24 h sees ei loe topelt. /v1/checks/{id} tulemused ja SDK abistavad päringud on tasuta.
Kas saan API-d ise majutada?
Jah — github.com/NoplagLabs/noplag-engine on sama Apache 2.0 viite-implementatsioon, mis töötab aadressil engine.noplag.app. 'docker compose up' loob kohaliku /v1/checks lõpp-punkti. Pilvetasandil lisanduvad hallatav korpus ja Google/Brave API võtmed; täis isemajutuse jaoks tuleb need ise lisada.
Kas piirangu päis on usaldusväärne?
429 korral tagastame Retry-After sekundites. X-RateLimit-* päised kaasas igas vastuses — saate ennetavalt piirata X-RateLimit-Remaining järgi, ilma 429 ootamata. Mõlemad on täpsed ja stabiilsed ka uuenduste järel.
Kui tihti SDK-d väljastatakse?
Python ja Node SDK uuenevad automaatselt openapi.yaml järgi igal mootori märgisega väljalaskel. Suuremad väljalasked (v0.x → v0.y) annavad samal päeval uued SDK versioonid. Paigad nädalaga. Mõlemad SDK-d järgivad semver‘i; API pind muutub vaid /v1 → /v2 vahetusel.
Mis juhtub kui korpus muutub kuu keskel?
Iga kontroll paneb vastuse X-Engine-Commit ja korpuse ajatempliga. Vanema kontrolli uuesti käitamine uuema korpuse vastu käib ühe päringuparameetriga (?corpus_snapshot=…). Originaalraport säilitatakse oma algse hetkega — me ei muuda vastuseid tagantjärele vaikimisi.
Kuidas testida ilma kuupiiri põletamata?
Testvõtmed (nplg_test_…) suunavad liivakasti: täis API pind, päringuid ei salvestata, kvooti ega piiranguid ei rakenda. Veebikonksud töötavad ka liivakastis, seega integreerimistestid on tasuta.
Kuidas teha hulgikontrolli?
Saatke paralleelselt kuni oma piirini — spetsiaalset batch-lõpp-punkti polegi (500 dokumendi batch, mis kukub läbi 312-dal, on kehvem kui 500 eraldi kõnet). Suure mahu korral kasutage API-d koos veebikonksudega: saatke, võtke check_id, järgmised 200 päringut, tulemused laekuvad asünkroonselt.
Kas saan piirata kontrolli ainult oma kaustadele?
Jah — corpora: [] koos folder_id-ga päringus kontrollib vaid teie privaatses kaustas. Koos corpora: ["academic"] — ainult akadeemiline + oma kaustad. Piirang iga päringu tasemel; eri arvestust ei tule.
Mis muutub, kui vaja on EL-i asukohaga või on-prem lahendust?
Enterprise-tase loob eraldi EL-i asukohaga lõpp-punkti (api.eu.noplag.com) sama OpenAPI pinnaga — isikuandmed ei lahku EEA-st. Või majutades viiterakendust ise oma VPC-s — sama mootor, sama /v1 lepingu pind, midagi ei lähe võrgust välja. (Relaunchimas open-core ettevõttena; ametlikud deklaratsioonid nagu SOC 2 on plaanis, hetkel veel pole — pakume seni auditeeritavat mootorit.)

Hankige API võti. Tehke esimene päring.

Tasuta prooviperiood sisaldab 100 API päringut. Pro-tase 23 $/kuus eest 1 000 päringut. Apache 2.0 viiterakendus, kui soovite kõne võrgust sees hoida.

Plagiaadikontroll API, OpenAPI 3.0 ja SDK-d