Genel Bakış Başvuru
API başvuru kılavuzu

Tek çağrı, tek sözleşme.

Bu sayfadaki her şey bugün üretim uç noktasında çalışır. Anahtarlar erişimle birlikte verilir. Sonda anlatılan sürümlü sunucu ve üst bilgiyle kimlik doğrulama bir sonraki değişikliktir; yayınlandıktan sonra mevcut sözleşme çalışmaya devam eder.

Kimlik doğrulama

Kurum anahtarınız hesabı tanımlar; planı, sınırları ve yüklediğiniz özel politikaları taşır. Anahtarı istek gövdesinde gönderin. Sunucu tarafında tutun: tarayıcıda veya mobil uygulama dosyasında duran anahtar, yayımlanmış anahtardır.

Her ortam için bir anahtar kullanın. Anahtar yenileme hemen geçerli olur; bu nedenle hazırlık ve üretim ortamlarını ayrı ayrı yenileyin.

Bir taslağı kontrol edin

POST https://verbapulse.com/analyzecurl
curl -X POST https://verbapulse.com/analyze \
  -H "Content-Type: application/json" \
  -d '{
    "text": "As agreed, we will match any competitor price for the next three years.",
    "org_api_key": "<your key>",
    "platform": "support-agent"
  }'

İstek alanları

AlanTürNotlar
textstringZorunlu. Kontrol edilecek taslak, en fazla 50,000 karakter.
org_api_keystringZorunlu. Kurum anahtarınız.
platformstringKendi raporlamanız için serbest etiket, örneğin support-agent.
user_idstringKullanıcı başına raporlama ve kontrol istiyorsanız kullanıcı veya ajan kimliğiniz.
departmentstringOlayı departman düzeyindeki raporlamada gruplar.
recipientsstring[]Taslak giden bir mesajsa alıcı adresleri. Gizlilik sözleşmesi kontrollerini etkinleştirir.
contextstringemail varsayılan değerdir. Bir kişinin asistana yapıştırdığı metin için ai_tool kullanın.

Yanıt

200 OKgerçek çıktı
{
  "status": "ok",
  "session_id": "dd1597af-fca5-4c11-9176-ec3a4e0755dc",
  "nda_recipients": [],
  "segments": [
    {
      "text": "we will match any competitor price for the next three years",
      "sentence": "As agreed, we will match any competitor price for the next three years.",
      "start": 11,
      "end": 70,
      "risk_level": "medium",
      "risk_type": "compliance",
      "explanation": "Firm long-term pricing commitment, confirm approval and contractual alignment",
      "suggested_sentence": "we can discuss matching competitor pricing as part of our agreement",
      "fix_type": "sentence"
    }
  ]
}
AlanNotlar
statusok taslak kontrol edildiğinde döner. unavailable kontrol edilemediğinde döner.
segmentsBulgular. Boş dizi ile birlikte ok dönmesi taslağın temiz olduğunu gösterir.
start, endGönderdiğiniz metindeki karakter konumları; vurgulama veya yerinde değiştirme için kullanılır.
risk_levellow, medium, high, critical.
risk_typeKategori, örneğin compliance, legal, financial_crime, confidentiality.
fix_typephrase işaretlenen bölüm değiştirilebiliyorsa, sentence cümlenin yeniden yazılması gerekiyorsa döner.
session_idSonraki olayları ilişkilendirir, örneğin yazanın öneriyi kabul ettiğini.
nda_recipientsKayıtlı gizlilik sözleşmesi olmayan alıcılar. Yalnız şu alanı gönderdiğinizde döner: recipients.
detailBazı unavailable yanıtlarında bulunur. Yazan kişiye gösterebileceğiniz bir cümledir, örneğin kullanım hakkının bittiğini söyler. Bu alan varsa yeniden denemek işe yaramaz.

Tek entegrasyon kuralı

Yanıtta 200 ve "status": "ok" yoksa, yanıtı kontrol edilmedi olarak değerlendirin ve ürününüzde bunu belirtin. Reddedilen istek herhangi bir değerlendirme içermez; 200 dışındaki bir yanıtta boş bir segments dizisi, taslağın temiz olduğu anlamına gelmez.

Bu hatayı biz de yaptık. Outlook eklentimiz durum kodunu kontrol etmeden gövdeyi okuyordu; bu yüzden istek sınırına takılan bir yanıt "risk tespit edilmedi" olarak görünüyordu. Bu ürünün yaşayabileceği en tehlikeli arızadır ve gövdeyi önce ayrıştıran her entegrasyonu aynı tuzak bekler.

if r.status_code != 200 or r.json().get("status") != "ok":
    # show "not checked" and let the human decide; never fall through to "clean"
    return Unchecked(reason=r.status_code)

Durum ve hata kodları

KodAnlamıNe yapılmalı
200 + okKontrol edildi.Kullanılacak alan: segments.
200 + unavailableKontrol tamamlanamadı. Neden geçici olmadığında detail dizgisi nedeni belirtir."Kontrol edilmedi" gösterin. Kısa bir aradan sonra bir kez yeniden deneyin; detail varsa yeniden denemeyin.
200 + deactivatedAnahtar veya kullanıcı etkin durumda olmadığında döner.Göndermeyi durdurun. Hesabı kontrol edin.
413Taslak 50,000 karakteri aşıyor.Metni bölün ve parçaları kontrol edin.
429İstek sınırı aşıldı.Bekleyip yeniden deneyin. Daha yüksek sınır için bize yazın.
5xxSunucu hatası."Kontrol edilmedi" gösterin. Artan aralıklarla yeniden deneyin.

Sınırlar ve davranış

İstek sınırıAnahtar başına dakikada 600 istek. Talep üzerine daha yüksek sınır verilir.
GecikmeKısa bir taslak için 2 ila 5 saniye. Kontrolü kendi metin üretiminizle paralel çağırın, yanıtı yalnız bulgu olduğunda bekletin.
Tekrarlanan metinAynı hesaptan birkaç saat içinde gelen özdeş taslak için önbellekteki sonuç dönebilir. Hiçbir şeyi değiştirmezseniz aynı cevabı hızla alırsınız.
EşzamanlılıkSizin tarafınızda kesin bir üst sınır yoktur. Planınızın kapasitesini aşan sürekli yük kuyruğa alınır; bu nedenle taahhüdünüzü en yoğun anınıza göre belirleyin.
Yeniden denemelerSorun yaratmaz. Bir kontrolün olay kaydı dışında yan etkisi yoktur.
Değerlendirme anahtarlarıToplam 5,000 kontrol ve kayan herhangi bir 24 saatlik dönemde 500 kontrol. Sınırlardan biri aşıldığında yanıt unavailable olur ve şu alanı içerir: detail.

Örnekler

Pythonhttpx
import httpx

def check(text: str) -> dict:
    r = httpx.post(
        "https://verbapulse.com/analyze",
        json={"text": text, "org_api_key": KEY, "platform": "support-agent"},
        timeout=30,
    )
    if r.status_code != 200:
        return {"checked": False, "reason": r.status_code}
    d = r.json()
    if d.get("status") != "ok":
        return {"checked": False, "reason": d.get("status")}
    return {"checked": True, "findings": d["segments"]}
Nodefetch
async function check(text) {
  const r = await fetch("https://verbapulse.com/analyze", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ text, org_api_key: KEY, platform: "support-agent" }),
  });
  if (!r.ok) return { checked: false, reason: r.status };
  const d = await r.json();
  if (d.status !== "ok") return { checked: false, reason: d.status };
  return { checked: true, findings: d.segments };
}

Veri işleme

Döndürdüğümüz bulgularla neler yapabileceğiniz, hizmet şartlarının 6. maddesinde düzenlenmiştir. Kısaca: bulguları kendi kurumunuzun yazışmalarını kontrol etmek için kullanın; aynı işi yapan bir modeli eğitmek veya değerlendirmek için kullanmayın.

Sıradaki değişiklik

Üst bilgiyle kimlik doğrulamalı sürümlü sunucu: POST https://api.verbapulse.com/v1/analyze ve Authorization: Bearer, ayrıca bir kullanım uç noktası. Yukarıda anlatılan gövde anahtarı bu değişiklikten sonra da çalışır. Şimdi entegre ediyorsanız temel URL'yi ve kimlik doğrulama yöntemini tek bir sabitin arkasına alın; geçiş iki satırlık bir değişiklik olur.