API Dokümantasyonu
PDF to Question API'sini kullanarak uygulamanızı entegre edin. Bearer token authentication ile güvenli API erişimi.
API Base URL
Tüm API istekleri bu base URL üzerinden yapılır. Örnek: https://pdf-to-question.aydinacar.net/api/auth/login
Kimlik Doğrulama (Authentication)
API'yi kullanmak için önce bir kullanıcı hesabı oluşturmanız ve Bearer token almanız gerekir.
Token'ı aldıktan sonra, tüm korumalı endpoint'lere istek yaparken Authorization header'ında token'ı göndermeniz gerekir.
POST 1. Kullanıcı Kaydı
Yeni bir kullanıcı hesabı oluşturun. Kayıt işlemi başarılı olduğunda otomatik olarak Bearer token döner.
https://pdf-to-question.aydinacar.net/api/auth/register
🎁 Bonus: Yeni kayıt olan kullanıcılara otomatik olarak 14 günlük ücretsiz trial verilir.
POST 2. Kullanıcı Girişi
Mevcut bir kullanıcı hesabı ile giriş yapın ve Bearer token alın.
https://pdf-to-question.aydinacar.net/api/auth/login
3. Bearer Token ile API İsteği
Token'ı aldıktan sonra, korumalı endpoint'lere istek yaparken Authorization header'ında Bearer token göndermeniz gerekir.
Kod Örnekleri
cURL
JavaScript (Fetch API)
Python (Requests)
PHP (Guzzle HTTP)
Korumalı Endpoint'ler
Aşağıdaki endpoint'ler Bearer token gerektirir. Token'ı Authorization: Bearer {token} header'ında göndermeniz gerekir.
/api/auth/me
Kullanıcı bilgilerini getirir
/api/auth/logout
Kullanıcı çıkışı yapar ve token'ı geçersiz kılar
/api/pdfs
Kullanıcının PDF'lerini listeler
/api/pdfs
Yeni bir PDF yükler ve işleme başlatır
/api/pdfs/{id}
PDF detayını getirir (sayfalar ve sorular dahil)
/api/pdfs/{id}/status
PDF işleme durumunu ve progress bilgisini getirir
/api/pdfs/{id}/questions
PDF'den çıkarılan soruları getirir
/api/pdfs/{pdfId}/pages/{pageId}/questions
Belirli bir sayfadaki soruları getirir (enhanced görsellerle)
/api/pdfs/{pdfId}/questions/{questionId}
Soruyu günceller
/api/pdfs/{pdfId}/questions/{questionId}/recrop
Soru görselini yeniden kırpar ve OCR işlemini tetikler
/api/pdfs/{id}
PDF'i siler
/api/pdfs/{pdfId}/questions/{questionId}
Tek soruyu siler (görsel dosyaları dahil)
/api/pdfs/{pdfId}/questions/{questionId}/reprocess-column
Soruyu siler ve ilgili sütunu (left/right) yeniden gap_detection ile işler
/api/pdfs/{pdfId}/pages/{pageId}/reprocess-gap-detection
Sayfadaki tüm soruları siler ve sayfayı yeniden gap_detection ile işler
/api/pdfs/{id}/reprocess
PDF'i yeniden işler (resimleri yeniden oluşturur)
/api/tokens/balance
Token bakiyesini getirir
/api/tokens/usage
Token kullanım geçmişini getirir
/api/tokens/pdfs/{pdfId}/usage
PDF'e ait token kullanımını getirir
/api/invoices
Fatura listesini getirir
/api/bank-accounts
Banka hesap bilgilerini getirir
Not: Tüm korumalı endpoint'lerin detaylı dokümantasyonu için
API_ENTEGRASYON.md dosyasını inceleyebilirsiniz.
/api/* altındaki tüm endpoint'ler (auth/register ve auth/login hariç) Bearer token gerektirir.
PDF İşlemleri - Detaylı Örnekler
POST PDF Yükleme
/api/pdfs
file(required): PDF dosyası (max 1GB)preload(optional, boolean, default: false):false: PDF yüklenir ve otomatik işlenir (bakiye düşer)true: PDF sadece yüklenir, işlenmez (bakiye düşmez, manuel başlatılır)
page_range_start(optional): İşlenecek ilk sayfa numarasıpage_range_end(optional): İşlenecek son sayfa numarası
📦 Ön Yükleme Modu: PDF yalnızca sunucuya yüklenir, işlenmez.
Bakiye düşmez. İstediğiniz zaman POST /api/pdfs/{id}/start-processing
endpoint'i ile işlemeye başlatabilirsiniz.
⚡ Asenkron İşlem: PDF yükleme işlemi arka planda çalışır.
İşlem durumunu kontrol etmek için /api/pdfs/{id}/status endpoint'ini kullanın.
💰 Ücretlendirme: PDF yükleme için minimum $2 bakiye gerekir. İşlem maliyeti sayfa sayısı ve soru sayısına göre hesaplanır.
GET PDF İşleme Durumu
/api/pdfs/{id}/status
📊 Progress Aşamaları:
• 0-20%: PDF sayfalara çevriliyor
• 20-40%: Sayfa tipleri analiz ediliyor
• 40-55%: Sorular tespit ediliyor (Gap Detection)
• 55-70%: Sorular doğrulanıyor (Validation)
• 70-85%: Soru metinleri çıkarılıyor (OCR)
• 85-95%: Soru numaraları eşleştiriliyor
• 95-100%: Tamamlanma
💡 Status Değerleri:
• preload: Ön yüklendi (işlenmedi)
• pending: İşlem sıraya alındı
• processing: İşleniyor
• completed: Tamamlandı
• failed: Başarısız
POST Preload PDF'i İşleme Başlat
Ön yüklenmiş (preload) bir PDF'in işlenmesini başlatır. Bu endpoint sadece status: preload
olan PDF'ler için çalışır.
/api/pdfs/{id}/start-processing
🔄 Kullanım Akışı:
1. PDF'i preload=true ile yükle → Status: preload
2. Bu endpoint'i çağır → Status: processing
3. İşlem tamamlanınca → Status: completed
💰 Ücretlendirme: Bu endpoint çağrıldığında bakiye kontrolü yapılır ve işlem başlar. Minimum $2 bakiye gereklidir.
GET Soruları Getirme
/api/pdfs/{id}/questions
page_number(optional): Belirli bir sayfa için soruları getir
📸 Görsel Formatı:
• crop_image_url: Sorunun PDF'den kesilmiş hali
DELETE Soru Silme
Tek bir soruyu ve tüm görsel dosyalarını (cropped, enhanced, trimmed) kalıcı olarak siler.
/api/pdfs/{pdfId}/questions/{questionId}
⚠️ Dikkat: Bu işlem geri alınamaz! Soru ve tüm görselleri kalıcı olarak silinir.
PUT Soru Görselini Yeniden Kırpma
Soru görselini orijinal sütun görselinden (left/right column) yeniden kırpar. Kesim ayarları piksel cinsinden belirtilir. Pozitif değerler görseli daraltır (içeri keser), negatif değerler genişletir (dışarı genişletir). İşlem sonrası OCR işlemi otomatik tetiklenir.
/api/pdfs/{pdfId}/questions/{questionId}/recrop
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| left | integer | Hayır | Soldan kesim/genişletme (px). Pozitif = daralt, Negatif = genişlet |
| right | integer | Hayır | Sağdan kesim/genişletme (px). Pozitif = daralt, Negatif = genişlet |
| top | integer | Hayır | Üstten kesim/genişletme (px). Pozitif = daralt, Negatif = genişlet |
| bottom | integer | Hayır | Alttan kesim/genişletme (px). Pozitif = daralt, Negatif = genişlet |
| question_text | string | Hayır | Soru metnini güncelle |
| topic | string (max 255) | Hayır | Soru konusunu güncelle |
| correct_answer | string (max 10) | Hayır | Doğru cevabı güncelle (A, B, C, D, E vb.) |
📝 Önemli Notlar:
• Koordinatlar güncellenmez: Veritabanındaki koordinat bilgileri korunur, sadece görsel yeniden kırpılır
• Orijinal sütun görselinden kırpılır: İşlem sol veya sağ sütun görselinden yapılır (sorunun column_side değerine göre)
• Görsel sınırları: Genişletme işlemi görsel sınırlarını aşamaz, otomatik olarak sınırlanır
• Minimum boyut: Kırpılan görsel minimum 10x10 piksel olmalıdır
• OCR tetiklenir: İşlem sonrası soru pending_direct_ocr durumuna geçer ve OCR işlemi başlar
• Eski görseller silinir: Önceki cropped ve enhanced görselleri otomatik silinir
• Kullanıcı yüklediği görseller: column_side değeri "user" olan sorular için bu işlem yapılamaz
💡 Kesim Ayarları Örnekleri:
• left: 10 → Soldan 10px daralt (içeri kes)
• left: -10 → Soldan 10px genişlet (dışarı genişlet)
• right: 5, left: 5 → Her iki taraftan 5px daralt
• top: -20, bottom: -20 → Üstten ve alttan 20px genişlet
• Sadece metin güncellemesi için tüm kesim parametreleri 0 veya gönderilmeyebilir
POST Soruyu Yeniden İşleme (İlgili Sütun)
Soruyu siler ve sorunun bulunduğu sütunu (left veya right) yeniden gap_detection ile işler. PDF durumu "processing" olarak güncellenir ve tüm işlem akışı otomatik devam eder.
/api/pdfs/{pdfId}/questions/{questionId}/reprocess-column
🔄 İşlem Akışı:
1. Soru ve görselleri silinir
2. PDF status "processing" olur
3. İlgili sütun için gap_detection başlar
4. Validation → OCR → Text Matching otomatik devam eder
5. PDF status "completed" olur
POST Sayfayı Yeniden İşleme (Gap Detection)
Sayfadaki tüm soruları siler ve sayfayı (hem left hem right sütun) yeniden gap_detection ile işler. PDF durumu "processing" olarak güncellenir.
/api/pdfs/{pdfId}/pages/{pageId}/reprocess-gap-detection
⚠️ Dikkat: Bu işlem sayfadaki TÜM soruları siler ve yeniden tespit eder. Hem sol hem sağ sütun yeniden işlenir.
🔄 İşlem Akışı:
1. Sayfadaki tüm sorular ve görselleri silinir
2. PDF status "processing" olur
3. Sol ve sağ sütun için gap_detection başlar
4. Validation → OCR → Text Matching otomatik devam eder
5. PDF status "completed" olur
Token İşlemleri
Token Sistemi
Sistem USD bazlı çalışır. PDF yükleme, soru çıkarma ve görsel iyileştirme işlemleri OpenAI API kullanımına göre maliyetlendirilir. Tüm ücretlendirme USD ($) cinsindendir.
💰 Fiyatlandırma:
• Minimum bakiye gereksinimi: $2.00
• Ortalama maliyet: $0.10 - $0.50 / PDF (sayfa ve soru sayısına göre)
GET Token Bakiyesi
/api/tokens/balance
GET Token Kullanım Geçmişi
/api/tokens/usage
per_page(optional, default: 20): Sayfa başına kayıt sayısıpage(optional, default: 1): Sayfa numarası
GET PDF Token Kullanımı
/api/tokens/pdfs/{pdfId}/usage
Hata Yönetimi
401 Unauthorized
Token geçersiz, eksik veya süresi dolmuş olduğunda:
Çözüm: Yeniden giriş yapın ve yeni token alın (POST /api/auth/login)
422 Validation Error
Gönderilen veriler doğrulama kurallarına uygun olmadığında:
Çözüm: errors objesindeki hataları kontrol edin ve verileri düzeltin
402 Payment Required
Yetersiz bakiye olduğunda (PDF yükleme için):
Çözüm: Bakiye yükleyin veya yeterli bakiye olduğunda tekrar deneyin
404 Not Found
İstenen kaynak (PDF, soru vb.) bulunamadığında:
Çözüm: ID'yi kontrol edin veya bu kaynağa erişim yetkiniz olup olmadığını kontrol edin
500 Internal Server Error
Sunucu tarafında beklenmeyen bir hata oluştuğunda:
Çözüm: Birkaç dakika bekleyip tekrar deneyin. Sorun devam ederse destek ile iletişime geçin
💡 Best Practices:
• Her API çağrısında Accept: application/json header'ı gönderin
• Token'ları güvenli bir şekilde saklayın (environment variables)
• Hata durumlarını success alanına göre kontrol edin
• Rate limiting için 429 Too Many Requests durumunu handle edin
• Asenkron işlemler için polling interval'i en az 2 saniye olmalı
Yardım ve Destek
API kullanımı ile ilgili sorularınız için bizimle iletişime geçebilirsiniz.