Docsfra
API Dokumantasyonu
v1

Baslangic ve Auth

Docsfra API, dokumanlarinizi cikarimdan AI-hazir aranabilir/sorgulanabilir hale getiren, modul modul calisan bir M2M (makine-to-makine) arayuzdur. Bu bolum entegrasyona baslamadan once bilmeniz gereken temel kavramlari anlatir: API key, Bearer auth, entitlement (modul yetkisi), metering (kredi) ve hata/rate-limit davranisi.

Docsfra nedir

Bir dokuman yukledikten sonra sunucu tarafinda modul modul islenir:

cikarim (extract) -> yapilandirma (structure) -> embedding (embed) -> indeksleme (index)

Bu boru hatti arka planda otomatik ilerler — asamalari ayri ayri tetiklemeniz gerekmez. Dokuman indekslendikten sonra iki sorgu modulu devreye girer: semantik arama (search) ve soru-cevap/RAG (ask). Her modul ayri ayri faturalandirilir (bkz. Metering ve kredi) ve ayri ayri yetkilendirilir (bkz. Entitlement).

Uctan uca akis

Tipik bir entegrasyon su sirayla ilerler:

  1. Key olustur — dashboard'da (app.docsfra.com) bir API key uretin, hangi modullere yetkili olacagini secin.
  2. Belge yuklePOST /v1/documents (ya da coklu dosya icin POST /v1/batches); id degeri aninda doner, isleme arka planda devam eder.
  3. Isi yoklaGET /v1/jobs/{id} ile durumu kontrol edin (queued -> processing -> parsing -> indexing -> completed/failed).
  4. Opsiyonel: webhook alin — polling yerine (ya da onunla birlikte) document.completed / document.failed bildirimi alin.
  5. Semantik arama yapinGET /v1/search ile indekslenmis dokumanlarda chunk-seviyeli hibrit arama yapin.
  6. Soru sorunPOST /v1/ask ile retrieval ve sentezi tek cagrida birlestiren RAG uc noktasini kullanin.

Bu adimlarin her biri kendi sayfasinda detaylandirilir: Upload, Polling, Webhook, Semantik Arama, Soru-Cevap.

API key

Her istek bir API key ile kimliklendirilir. Key iki tipte gelir:

  • dip_live_... — gercek tenant verisi; entitlement, metering ve rate limit'e tam tabidir.
  • dip_test_... — staging/entegrasyon testleri icin; billing ve tenant-bazli rate limit'ten muaftir, bunun yerine sabit ve comert bir hard-cap'e tabidir (varsayilan 1000 istek/gun, key basina). Test key entitlement kontrolunden muaf degildir — yetkisiz bir modulu cagirirsa yine 403 service_not_enabled alir.

Key'ler yalnizca dashboard'dan (app.docsfra.com, oturum tabanli auth ile) olusturulur ve iptal edilir — API'nin kendisi key CRUD islemi sunmaz. Key olustururken hangi modullere yetkili olacagini da secersiniz (bkz. Entitlement). Yeni bir key olusturuldugunda ham deger yalnizca o cevapta gorunur, sonrasinda tekrar gosterilmez — guvenli bir yerde saklayin.

Bearer ile kimliklendirme

Tum istekler Authorization basligina Bearer seklinde key icermelidir:

Authorization: Bearer dip_live_a1b2c3d4e5f6...
  • Eksik/gecersiz key -> 401 unauthorized
  • Iptal edilmis (revoke) key -> yine 401 unauthorized, mesaj invalid_or_revoked_key
  • Key dogrulandiktan sonra tum sorgular otomatik olarak o key'in tenant'ina scope edilir. Baska bir tenant'a ait bir kaynagi id ile sorgulasaniz bile 404 donulur (kaynagin varligini sizdirmamak icin 403 degil).

Entitlement: modul bazli erisim

Her API key, yalnizca kendisine tanimlanmis modullere erisebilir. Modul kodlari: extract | structure | embed | index | search | ask | media-cdn | md-cdn. Bir key'in yetkili oldugu modul listesi dashboard'da key olusturulurken/duzenlenirken secilir ve her zaman tenant'in plan kapsamiyla sinirlidir — bir key, tenant'in sahip olmadigi bir module yetkilendirilemez.

Bir istek, key'in yetkili olmadigi bir modulu cagirirsa 403 service_not_enabled doner:

{
  "error": {
    "code": "service_not_enabled",
    "message": "Bu API anahtari 'ask' modulune yetkili degil",
    "request_id": "req_9f8a7b6c"
  }
}

Bu kontrol kredi bakiyesinden bagimsizdir — bakiyeniz yeterli olsa bile yetkisiz bir modulu cagiramazsiniz.

Metering ve kredi

Basarili her modul cagrisi tenant kredi bakiyesinden dusulur. Yeni kaydolan her tenant 250 kredi welcome bonusu ile baslar. Bakiye, cagrilan islemin maliyetini karsilamiyorsa istek on-kontrolde reddedilir: 402 insufficient_credit.

dip_test_ key'ler icin cagrilar yine olculur (usage kaydi olusur) ama bakiyeden dusulmez.

Varsayilan (global) katalog oranlari:

ModulAciklamaBirimVarsayilan oran
extractCikarimsayfa1.00
structureYapilandirma (reasoning)sayfa0.50
embedEmbedding1K token0.02
indexVektor indeksleme1K chunk-ay0.10
searchHibrit aramasorgu0.02
askRAG soru-cevapsorgu0.20
memoryBelge Kimlik Karti (Document Memory)belge0.10
entitiesVarlik Grafi (Entity Graph)belge0.15
reasoningMantik Grafi (Reasoning Graph)belge0.15
layoutYerlesim/bbox (Layout Model)sayfa0.05
media-cdnMedia CDNGB-ay0.05
md-cdnMarkdown CDNGB-ay0.02

Bu oranlar tenant basina override edilebilir; gecerli oranlarinizi her zaman dashboard'daki usage/fiyat ekraninda gorebilirsiniz — buradaki tablo yalnizca varsayilan referans degerleridir.

Not: extract/structure/embed/index/search/ask'in aksine (her cagrida ucretlendirilir), memory/entities/reasoning/layout belge basina bir kez (layout icin sayfa basina bir kez) o artifact uretildigi anda ucretlendirilir — sonrasinda uc noktasindan okumak ucretsizdir (bkz. Veri Cikarimi ve Artifact'ler → Fiyatlandirma).

Hata formati

Tum hatalar ayni zarfla doner:

{ "error": { "code": "...", "message": "...", "request_id": "..." } }

En sik karsilasilan kodlar:

HTTPcodeAnlami
400invalid_requestEksik/hatali alan
401unauthorizedEksik, gecersiz veya revoke edilmis key
402insufficient_creditBakiye, islemin maliyetini karsilamiyor
403service_not_enabledKey, cagrilan module yetkili degil
404not_foundKaynak yok ya da baska tenant'a ait
413payload_too_largeDosya boyutu limiti asildi
422unprocessable_fileDesteklenmeyen format ya da bozuk dosya
429rate_limitedThrottle limiti asildi (Retry-After ile)
500internal_errorBeklenmeyen sunucu hatasi
503service_unavailableAlt sistem gecici olarak musait degil

Rate limit

Rate limit tenant bazinda anahtarlanir (IP bazinda degil); dip_test_ key'ler ise kendi key'lerine ozel sabit bir hard-cap'e tabidir:

ScopeKapsamLimit
tenant_uploadPOST /v1/documents, /v1/batches60 / dakika
tenant_statusGET /v1/jobs/{id}, /v1/batches/{id}600 / dakika
tenant_searchGET /v1/search300 / dakika
tenant_askPOST /v1/ask60 / dakika
test_key_hard_capdip_test_ key, tum uc noktalar1000 / gun (key basina)

Limit asildiginda 429 rate_limited doner ve cevapta Retry-After basligi bulunur — bu, tekrar denemeden once beklenmesi gereken saniye sayisidir:

HTTP/1.1 429 Too Many Requests
Retry-After: 42

Retry-After degerine uyup istemci tarafinda exponential backoff uygulamaniz onerilir.

Model seçimi & BYOK

Tamamen isteğe bağlı — hiçbir şey yapılandırmazsan Docsfra varsayılanları geçerlidir ve hiçbir şey değişmez. Her işlem hattı için (structuring, contextual, memory, entity, reasoning, rag) OpenRouter kataloğundaki dilediğin modeli seçebilir, istersen kendi sağlayıcı API anahtarını getirebilirsin. Yapılandırma Console'daki Modeller sayfasındadır.

ModAnahtarModelFaturalama
VarsayılanDocsfraDocsfra varsayılanlarısabit artifact tarifesi (değişmez)
Özel modelDocsfrasenin seçiminsabit tarife + model-usage: listelenen model fiyatı üzerinden token başına krediye çevrilir
BYOKseninsenin seçiminyalnız sabit artifact tarifesi — model maliyeti kendi sağlayıcı faturana

Dilediğin lane'i kendi OpenAI-uyumlu uç noktana da yönlendirebilirsin (Azure OpenAI, vLLM, Ollama, LiteLLM…): uç nokta URL'ini gir (base URL girersen /chat/completions otomatik eklenir) ve model adını serbest metin yaz; self-host motorlarda API anahtarı opsiyoneldir. Özel uç noktalar genel internetten erişilebilir olmalıdır.

Anahtar güvenliği: BYOK anahtarları şifreli saklanır, asla loglanmaz ve API tarafından asla geri döndürülmez (yalnız son-4 haneli key_hint). Anahtarın sağlayıcı tarafından reddedilirse çekirdek endpoint'ler (/v1/ask) net bir hata döner — Docsfra hiçbir zaman sessizce platform anahtarına düşmez. Her işlem adımı kullanılan modeli belgenin provenance zincirine kaydeder; model seçimi tamamen denetlenebilirdir.