Phase 2 önizleme — Erken API referansı. Production endpoint'leri beta sonrası davet usulü açılacak. Kamuya açık benchmark'lar Q3 2026.

API Referansı

ozDNA REST API, production AI gateway'ini B2B entegrasyonlara açar. JSON istek/yanıt, Bearer token kimlik doğrulama ve OpenAPI 3.1 sözleşmesi. İstemci kütüphaneleri: SDK genel bakış (Python, Node.js, Go, Java).

Giriş

API, AI metin dedeksiyonu sunar — /v1/detect üzerinden segment düzeyinde analiz, dikey mod kalibrasyonu ve çok dilli destek. ozDNA metin humanizasyonu veya dedeksiyon atlatma araçları sunmaz.

Aynı production motoru tezmakale.com üzerinde çalışır; B2B API katmanı backend olgunlaştıkça açılmaktadır. Ayrıca: ozDNA production partner'ları · TezMakale vaka çalışması.

Kimlik doğrulama

Tüm isteklerde Bearer token ile Authorization header'ı zorunludur:

Authorization: Bearer ozdna_sk_live_...

API anahtarları dashboard üzerinden proje kapsamında oluşturulur. Anahtarlar ozdna_sk_test_ (sandbox) veya ozdna_sk_live_ (production) öneki ile gelir.

HeaderDeğerZorunlu
AuthorizationBearer ozdna_sk_...evet
Content-Typeapplication/jsonevet
X-Request-Idİdempotency izleme için UUIDisteğe bağlı

API anahtarlarını istemci tarafı kodda asla açığa çıkarmayın. İstekleri backend'iniz üzerinden yönlendirin veya ozDNA gateway proxy desenini kullanın.

Hızlı başlangıç

İlk API yanıtınızı üç adımda alın:

  1. Erişim isteyin — Sandbox kimlik bilgileri için waitlist'e katılın.
  2. API anahtarı oluşturun — Dashboard'da test anahtarı üretin (ozdna_sk_test_...).
  3. Detect isteği gönderin — Bearer token ile metni /v1/detect endpoint'ine POST edin.
# 1. API anahtarınızı ayarlayın
export OZDNA_API_KEY="ozdna_sk_test_..."

# 2. AI üretimi metni tespit edin
curl -X POST https://api.sandbox.ozdna.com/v1/detect \
  -H "Authorization: Bearer $OZDNA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "Örnek akademik metin...", "mode": "academic", "language": "tr"}'

Base URL

https://api.ozdna.com          # production (beta)
https://api.sandbox.ozdna.com  # sandbox

cURL örneği

Header ve JSON gövdesi ile tam detect isteği:

curl -X POST https://api.ozdna.com/v1/detect \
  -H "Authorization: Bearer ozdna_sk_live_..." \
  -H "Content-Type: application/json" \
  -H "X-Request-Id: $(uuidgen)" \
  -d '{
    "text": "Bu çalışmada uygulanan metodoloji...",
    "mode": "academic",
    "language": "tr"
  }'

Node.js SDK örneği

// npm install @ozdna/sdk  (yakında — şimdilik fetch kullanın)
const OZDNA_API_KEY = process.env.OZDNA_API_KEY;

async function detect(text) {
  const res = await fetch('https://api.ozdna.com/v1/detect', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${OZDNA_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      text,
      mode: 'academic',
      language: 'tr',
    }),
  });

  if (!res.ok) {
    const err = await res.json();
    throw new Error(`ozDNA ${res.status}: ${err.message}`);
  }

  return res.json();
}

detect('Analiz edilecek örnek metin...')
  .then(result => console.log(result.ai_probability))
  .catch(console.error);

Python SDK örneği

# pip install ozdna  (yakında — şimdilik requests kullanın)
import os
import requests

OZDNA_API_KEY = os.environ["OZDNA_API_KEY"]
BASE_URL = "https://api.ozdna.com"

def detect(text: str, mode: str = "academic", language: str = "tr") -> dict:
    response = requests.post(
        f"{BASE_URL}/v1/detect",
        headers={
            "Authorization": f"Bearer {OZDNA_API_KEY}",
            "Content-Type": "application/json",
        },
        json={"text": text, "mode": mode, "language": language},
        timeout=30,
    )
    response.raise_for_status()
    return response.json()

if __name__ == "__main__":
    result = detect("Analiz edilecek örnek metin...")
    print(f"AI olasılığı: {result['ai_probability']}")

POST /v1/detect

POST /v1/detect

Metin içinde AI üretimi olasılığını segment düzeyinde analiz eder.

AlanTipAçıklama
text zorunlustringAnaliz edilecek metin (max 50.000 karakter)
modestringacademic · legal · financial · general
languagestringISO 639-1 — örn. tr, en
webhook_urlstringAsenkron callback URL (Growth+)

Örnek yanıt

{
  "ai_probability": 0.94,
  "confidence": "high",
  "verdict": "ai_generated",
  "segments": 12,
  "segment_map": [
    { "start": 0, "end": 142, "score": 0.97 }
  ],
  "processing_ms": 210,
  "mode": "academic",
  "language": "tr"
}

POST /v1/batch

POST /v1/batch

Toplu detect işlemleri. Growth ve Enterprise planlarında kullanılabilir. İşlem asenkron tamamlanır — sonuç webhook_url ile iletilir veya GET /v1/batch/{id} ile sorgulanır.

LLM Gateway

Production AI gateway, OpenAI uyumlu inference route'larını tek giriş noktasından sunar. Her istek kimlik doğrulama, kota kontrolü, rate limit, model yönlendirme ve maliyet atamasından geçer. Yanıt header'ları: X-OzDNA-Model, X-OzDNA-Cost-USD, önbellekten gelen embeddings için X-OzDNA-Cache: HIT.

ÖzellikDavranış
Kimlik doğrulamaBearer API anahtarı (ozdna_sk_test_ / ozdna_sk_live_)
KotalarUpstream çağrıdan önce anahtar başına aylık kota
Rate limitAnahtar başına bucket; 429 + Retry-After
Yeniden denemeUpstream 429/502/503/504 — en fazla 3 deneme, backoff ile
ÖnbellekEmbeddings org + input hash başına 60 sn
LoglamaYapılandırılmış log + her istekte audit trail

İsteğe bağlı mode alanı (academic, legal, financial, general) chat ve completion için model yönlendirmesini belirler.

POST /v1/chat

POST /v1/chat

OpenAI uyumlu chat completions. model atlanırsa maliyet odaklı router seçilen dikey moda göre devreye girer.

curl -X POST https://api.ozdna.com/v1/chat \
  -H "Authorization: Bearer $OZDNA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "academic",
    "messages": [{ "role": "user", "content": "Token ekonomisini özetle." }]
  }'

POST /v1/completion

POST /v1/completion

Eski metin completion proxy'si. Chat ile aynı gateway pipeline'ını kullanır.

POST /v1/embeddings

POST /v1/embeddings

RAG ve semantik arama için embedding vektörleri. Yanıtlar 60 saniyelik org kapsamlı önbellekten gelebilir.

POST /v1/rerank

POST /v1/rerank

Dokümanları sorgu alaka düzeyine göre sıralar. Body: { "query", "documents", "top_n?", "mode?" }.

POST /v1/moderation

POST /v1/moderation

İçerik moderasyon skorları. JSON body'de input veya text kabul eder.

Admin REST API

Otomasyon ve CI için programatik org yönetimi. Route'lar aynı organizasyona kapsamlı Bearer anahtar gerektirir. Anahtarlar org içinde kaynak oluşturabilir; tam secret yalnızca oluşturma anında döner.

MethodPathAçıklama
GET/v1/orgs/:orgIdOrganizasyon profili
PATCH/v1/orgs/:orgIdOrg adını güncelle
GET/v1/orgs/:orgId/workspacesWorkspace listesi
POST/v1/orgs/:orgId/workspacesWorkspace oluştur
GET/v1/workspaces/:workspaceId/projectsProje listesi
POST/v1/workspaces/:workspaceId/projectsProje oluştur
GET/v1/projects/:projectId/keysAnahtar listesi (yalnızca prefix)
POST/v1/projects/:projectId/keysAnahtar oluştur — secret bir kez gösterilir
DELETE/v1/projects/:projectId/keys/:keyIdAnahtarı iptal et

Organizasyonlar

curl https://api.ozdna.com/v1/orgs/org_demo \
  -H "Authorization: Bearer $OZDNA_API_KEY"

Workspace'ler

curl -X POST https://api.ozdna.com/v1/orgs/org_demo/workspaces \
  -H "Authorization: Bearer $OZDNA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Production", "slug": "prod"}'

Projeler

curl -X POST https://api.ozdna.com/v1/workspaces/ws_demo/projects \
  -H "Authorization: Bearer $OZDNA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "TezMakale Entegrasyonu"}'

API anahtarları

curl -X POST https://api.ozdna.com/v1/projects/proj_demo/keys \
  -H "Authorization: Bearer $OZDNA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "CI deploy", "environment": "test"}'

Yanıt tam key alanını bir kez içerir. Güvenli saklayın — sonraki listeleme çağrıları yalnızca key_prefix gösterir.

Rate limit

Rate limit'ler gateway katmanında API anahtarı başına uygulanır. Limit aşımında 429 Too Many Requests ve Retry-After header'ı döner.

Planİstek/dkEşzamanlıAylık kota
Developer (sandbox)1021.000 çağrı
Startup6010Özel
Growth30050Özel
EnterpriseÖzelÖzelSınırsız

429 yanıtlarında exponential backoff uygulayın. Proaktif throttle için X-RateLimit-Remaining ve X-RateLimit-Reset header'larını kullanın.

Hata kodları

Tüm hatalar error, message ve request_id alanları içeren JSON döner.

400Geçersiz istek — eksik text, geçersiz mode veya boyut limiti aşımı
401Yetkisiz — geçersiz, süresi dolmuş veya eksik API anahtarı
402Ödeme gerekli — plan kotası aşıldı; yükseltin veya satış ile iletişime geçin
403Yasak — anahtar bu endpoint veya dikey mod için yetkili değil
404Bulunamadı — geçersiz endpoint veya batch job ID
429Rate limit — yeniden denemeden önce Retry-After header'ına bakın
500İç hata — exponential backoff ile yeniden deneyin; devam ederse destek
503Servis kullanılamıyor — geçici kesinti; backoff ile yeniden deneyin
{
  "error": "rate_limit_exceeded",
  "message": "Rate limit aşıldı. 30 saniye sonra yeniden deneyin.",
  "request_id": "req_abc123"
}

Dikey modlar

ModKullanımHedef segment
academicAkademik metin, tez, makaleÜniversite, EdTech, TezMakale
legalSözleşme, dilekçe, mevzuat metniHukuk firmaları, ComplyDNA
financialRapor, uyum metni, düzenleyici içerikFintech, EMI/PSP, RegTech
generalGenel amaçlı metinVarsayılan

Webhook'lar

webhook_url ile asenkron isteklerde işlem tamamlandığında POST callback gönderilir. Payload, endpoint yanıtı ile aynı yapıdadır; ek olarak job_id ve event alanları bulunur.

İmza doğrulama: X-OzDNA-Signature header'ı (HMAC-SHA256).

OpenAPI spec

Tam OpenAPI 3.1 tanımı beta erişimi ile birlikte yayınlanır:

https://api.ozdna.com/openapi.json
https://api.ozdna.com/openapi.yaml

Production referans: AI dedeksiyonu TezMakale üzerinde canlı — ozDNA altyapısı üzerine kurulu Türkiye'nin akademik AI platformu (yalnızca dedeksiyon ve analiz).

Production API erişimi şu an davet usulü. Endpoint'ler yayınlandıkça dokümantasyon genişletilecektir.

Waitlist'e Katıl