İntihal kontrolü API: REST ve SDK seçenekleri
İntihal + yapay zeka tespiti için doğrudan kullanılabilir REST uç noktası. OpenAPI 3.0 spesifikasyonu, Python ve Node SDK'ları, Apache 2.0 referans uygulaması. İlk curl çağrınızdan webhook tabanlı hacime — noplag.com'dakiyle aynı motor.
Bir curl ile sıfırdan benzerlik puanına.
POST ile metni gönderin, puanlanmış aralıkları alın. SDK gerekmez, derleme adımı yok, özel bir veri formatı yok.
$ 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 } ]}Dört uç nokta. Tek sözleşme. URL'de sürümlü.
Aynı OpenAPI 3.0 spesifikasyonu hem açık kaynak kodlu depoda hem de engine.noplag.app üzerinde bulunur. SDK’lar her etiketli sürümde bu spesifikasyondan yeniden oluşturulur.
Bearer tokenlar. Idempotency anahtarları. Net hız limit başlıkları.
Karmaşık bir şey yok. Standart HTTP kavramları — onları takip ediyoruz, böylece mevcut yeniden deneme ara yazılımınız çalışır.
Bearer tokenlar. Tek başlık, imza dansı yok.
Authorization: Bearer nplg_live_a82f...Idempotency-Key: 0e8f9c44-...Anahtar başı, dakika başı. Başlıklar tam olarak neredesiniz gösterir.
X-RateLimit-Limit: 60X-RateLimit-Remaining: 41X-RateLimit-Reset: 1747920480Retry-After: 19 (only on 429)İki SDK. Aynı OpenAPI 3.0 spesifikasyonundan türetilir.
Python + Node her etiketli motor sürümünde yayınlanır. Diğer diller (Go, Ruby, Java) openapi.yaml'den üretilir — topluluk PR'ları kabul edilir.
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,});Uzun süren denetimler size geri çağrı yapar. Tekrarlar mantıklı, karmaşık değil.
Dört olay türü. JSON içerik. Başlıkta HMAC-SHA256 imzası.
24 saat boyunca üstel tekrar. Gösterge panelinden tekrar oynatabilirsiniz.
İmzayı kontrol edin. Sonucu hesaplanamayanı reddedin.
Her iletimde X-Noplag-Signature: t=<unix>,v1=<hex> başlığı var. Zaman damgası + gövde ile webhook secret'ınızı kullanarak HMAC-SHA256 hesaplayın ve sabit zamanlı karşılaştırma yapın.
h = hmac.new(secret, f"{t}.{body}".encode(), hashlib.sha256).hexdigest()assert hmac.compare_digest(h, v1)HTTP'yi takip ediyoruz. Bütün API tasarım belgesi bu.
POST'larda idempotent. Sürümü URL'de belirtiyoruz. Hatalar ne yapacağınızı açıkça yazar. Hız limitini başlıklarda tam olarak gösteririz. Sayfalama cursor ile, offset değil. UTC ISO 8601 zaman damgaları. Özel HATEOAS dili yok, hatada 200 OK döndürmüyoruz, sunucu-sunucu çağrısında OAuth zorunluluğu yapmıyoruz. API tasarımı için belgeler: RFC 9110 ve OpenAPI 3.0 — ayrıca bir “Noplag Yöntemi” öğrenmenizi istemiyoruz.
Tasarım notlarını okuyunEntegrasyon mühendislerimizin sorduğu gerçek sorular.
- Tipik bir belge için çağrı gecikmesi nedir?
- 500 kelimelik bir metnin indekslenmiş korpus üzerinde kontrolü için p50 yaklaşık 600 ms, p95 ise yaklaşık 1,8 sn. Layer W (canlı web doğrulaması) etkinleştirildiğinde yaklaşık 2 sn eklenir — bu işlem Google ve Brave üzerinden çift yönlü gerçekleşir. Uzun belgelerde (8 sn'den fazla işlem süresi beklenen) kontrol hemen bir check_id ile başlatılır ve sonuç webhook ile iletilir.
- Fiyatlandırma API'ye göre nasıl ölçülür?
- /v1/checks isteği başına bir ücretlendirme yapılır, belge boyutu plan sınırına kadar (1.500 kelime Pro, 50.000 Premium, kurumsal için özel). 24 saat içinde aynı Idempotency-Key + gövde ile yapılan tekrarlar çift sayılmaz. /v1/checks/{id} okuma ve SDK ek çağrıları ücretsiz.
- API'yi kendi sunucumda çalıştırabilir miyim?
- Evet — github.com/NoplagLabs/noplag-engine, engine.noplag.app üzerinde çalışan Apache 2.0 referans uygulamasının aynısıdır. docker compose up komutu ile yerel /v1/checks uç noktasını çalıştırabilirsiniz. Bulut katmanında yönetilen korpus ve Google/Brave API anahtarları eklenir; tam self-host için kendi anahtarlarınızı kullanmanız gerekir.
- Güvenilir bir hız limiti tekrar başlığı var mı?
- 429 durumunda Retry-After saniye olarak döner. Tüm yanıtlarda X-RateLimit-* başlıkları da döner — 429 beklemeden X-RateLimit-Remaining ile ön-taramalı yanıt verebilirsiniz. Her ikisi de doğru ve dağıtımlarda kararlı.
- SDK sürümleme sıklığı nedir?
- Python ve Node SDK'lar openapi.yaml'den her motor etiketinde otomatik üretilir. Ana motor sürümleri (v0.x → v0.y) SDK'da da aynı gün çıkar. Yama düzeltmeleri aynı hafta yayımlanır. İki SDK da semver'e uyar; ana API yüzeyi yalnızca /v1 → /v2'de değişir.
- Corpus ay içinde değişirse ne olur?
- Her kontrol X-Engine-Commit ve corpus anlık görüntü zaman damgası ile işaretlenir. Eski bir kontrolü yeni corpus ile çalıştırmak bir sorgu parametresi ile yapılır (?corpus_snapshot=…). Orijinal rapor, orijinal snapshot ile korunur — geçmiş bir benzerlik puanı sessizce değiştirilmez.
- Aylık kotamı harcamadan nasıl test ederim?
- Test anahtarları (nplg_test_…) bir kum havuzuna gönderir: tam API yüzeyi, asla kalıcı veri tutmaz, aylık kota veya hız limitine dahil edilmez. Webhooklar da kum havuzundan çalışır — uçtan uca entegrasyon testi ücreti yok.
- Toplu kontrollerde en doğru yaklaşım nedir?
- Hız limitiniz kadar paralelde gönderin — toplu uç nokta yok (tasarım gereği: 500 belgede 312'ncide hata almak 500 bağımsız çağrıdan kötü). Yüksek hacimli akışlar için API'yi webhooklarla birlikte kullanın: gönderin, check_id anında dönsün, sonraki 200 başvuruyu girin, sonuçlar geldikçe sırayla işleyin.
- Bir kontrolü yalnızca kendi klasörlerime sınırlayabilir miyim?
- Evet — istek gövdesinde corpora: [] ile folder_id geldiğinde yalnızca kullanıcıya özel klasörlere karşı eşleşir. corpora: ["academic"] ile “sadece akademik + kendi klasörlerim” seçeneği de mümkün. Çağrı bazında kapsam; ek bir faturalandırma seviyesi gerekmez.
- AB yerleşimi veya kurum içi yapılandırma istiyorsam ne değişir?
- Kurumsal seviye, AB veri yerleşimli özel uç nokta (api.eu.noplag.com) sağlar, aynı OpenAPI yüzeyi, kişisel veri EEA içinde kalır. Ya da referans uygulamayı tamamen kendi VPC'nize kurun — aynı motor, aynı /v1 kontratı, ağınızdan dışarıya veri çıkmaz. (Açık çekirdek modeline geçtik; SOC 2 gibi resmi belgeler yol haritasında, henüz hazır değil — bu arada sunabildiğimiz şey denetlenebilir bir motor.)
Bir API anahtarı alın. İlk çağrınızı yapın.
Ücretsiz deneme 100 API çağrısı içerir. Pro paketi 1.000 çağrı için $23/ay. Çağrılarınız ağınızda kalacaksa Apache 2.0 referans uygulama.