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.
| Header | Değer | Zorunlu |
|---|---|---|
| Authorization | Bearer ozdna_sk_... | evet |
| Content-Type | application/json | evet |
| X-Request-Id | İdempotency izleme için UUID | isteğ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:
- Erişim isteyin — Sandbox kimlik bilgileri için waitlist'e katılın.
- API anahtarı oluşturun — Dashboard'da test anahtarı üretin (ozdna_sk_test_...).
- 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
Metin içinde AI üretimi olasılığını segment düzeyinde analiz eder.
| Alan | Tip | Açıklama |
|---|---|---|
| text zorunlu | string | Analiz edilecek metin (max 50.000 karakter) |
| mode | string | academic · legal · financial · general |
| language | string | ISO 639-1 — örn. tr, en |
| webhook_url | string | Asenkron 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
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.
| Özellik | Davranış |
|---|---|
| Kimlik doğrulama | Bearer API anahtarı (ozdna_sk_test_ / ozdna_sk_live_) |
| Kotalar | Upstream çağrıdan önce anahtar başına aylık kota |
| Rate limit | Anahtar başına bucket; 429 + Retry-After |
| Yeniden deneme | Upstream 429/502/503/504 — en fazla 3 deneme, backoff ile |
| Önbellek | Embeddings org + input hash başına 60 sn |
| Loglama | Yapı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
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
Eski metin completion proxy'si. Chat ile aynı gateway pipeline'ını kullanır.
POST /v1/embeddings
RAG ve semantik arama için embedding vektörleri. Yanıtlar 60 saniyelik org kapsamlı önbellekten gelebilir.
POST /v1/rerank
Dokümanları sorgu alaka düzeyine göre sıralar. Body: { "query", "documents", "top_n?", "mode?" }.
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.
| Method | Path | Açıklama |
|---|---|---|
| GET | /v1/orgs/:orgId | Organizasyon profili |
| PATCH | /v1/orgs/:orgId | Org adını güncelle |
| GET | /v1/orgs/:orgId/workspaces | Workspace listesi |
| POST | /v1/orgs/:orgId/workspaces | Workspace oluştur |
| GET | /v1/workspaces/:workspaceId/projects | Proje listesi |
| POST | /v1/workspaces/:workspaceId/projects | Proje oluştur |
| GET | /v1/projects/:projectId/keys | Anahtar listesi (yalnızca prefix) |
| POST | /v1/projects/:projectId/keys | Anahtar oluştur — secret bir kez gösterilir |
| DELETE | /v1/projects/:projectId/keys/:keyId | Anahtarı 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/dk | Eşzamanlı | Aylık kota |
|---|---|---|---|
| Developer (sandbox) | 10 | 2 | 1.000 çağrı |
| Startup | 60 | 10 | Özel |
| Growth | 300 | 50 | Özel |
| Enterprise | Özel | Özel | Sı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.
{
"error": "rate_limit_exceeded",
"message": "Rate limit aşıldı. 30 saniye sonra yeniden deneyin.",
"request_id": "req_abc123"
}
Dikey modlar
| Mod | Kullanım | Hedef segment |
|---|---|---|
| academic | Akademik metin, tez, makale | Üniversite, EdTech, TezMakale |
| legal | Sözleşme, dilekçe, mevzuat metni | Hukuk firmaları, ComplyDNA |
| financial | Rapor, uyum metni, düzenleyici içerik | Fintech, EMI/PSP, RegTech |
| general | Genel amaçlı metin | Varsayı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