YZ Görsel Algılama API'si
TruthScan'in YZ görsel algılama API'sini uygulamalarınıza entegre etmek için eksiksiz dokümantasyon.
Kod yazmadan denemek için FastAPI üç noktamızı ziyaret edin: https://detect-image.truthscan.com/docs
Kimlik Doğrulama
TruthScan, API'ye erişim için API anahtarları kullanır. API anahtarınızı geliştirici portalımızın üst kısmında.
TruthScan, API anahtarının sunucuya yapılan tüm API isteklerinde aşağıdaki gibi bir istek gövdesinde yer almasını bekler:
{
"key": "YOUR API KEY GOES HERE"
}YOUR API KEY GOES HERE yazan yeri kişisel API anahtarınızla değiştirmelisiniz.
YZ Görsel Algılayıcı
Algılama (3 Adımlı Süreç)
YZ Görsel Algılama iş akışı aşağıdaki adımlardan oluşur:
- On-imzali Yükleme URL'si Edinin
- Görseli Yükleyin
- Görseli Algılama İçin Gönderin
1. On-imzali Yükleme URL'si Edinin
API'den on-imzali bir URL talep ederek başlayın. Bu URL, görsel dosyanızı depolama sunucusuna güvenli bir şekilde yüklemenizi sağlar.
Desteklenen Dosya Formatları
JPG, JPEG, PNG, WebP, JFIF, HEIC, HEIF, AVIF, BMP, TIFF, TIF
Önemli Not
On-imzali URL talep ederken görsel dosyası adından boşlukları kaldırmak gereklidir.
GET https://detect-image.truthscan.com/get-presigned-url?file_name=example.jpgÖrnek İstek
curl -X GET 'https://detect-image.truthscan.com/get-presigned-url?file_name=example.jpg' \
--header 'apikey: YOUR API KEY GOES HERE'Örnek Yanıt
{
"status": "success",
"presigned_url": "https://image-presigned-upload.ai-assets-cdn.com?file_name=581d47c7-3ef4-42af-88d9-6dab6bf69389_20250611-121955_example.jpg?...",
"file_path": "uploads/example.jpg"
}2. Görseli Yükleyin
Görselinizi bir PUT isteği ile yüklemek için sağlanan 'presigned_url'i kullanın. Görsel formatınıza göre doğru içerik türünü ayarladığınızdan emin olun.
Önemli Not
Görseli yüklerken görsel dosyası adından boşlukları kaldırmak gereklidir.
Örnek İstek
curl -X PUT 'https://image-presigned-upload.ai-assets-cdn.com?file_name=581d47c7-3ef4-42af-88d9-6dab6bf69389_20250611-121955_example.jpg?...' \
--header 'Content-Type: image/<FILE_FORMAT - jpeg, jpg, png, webp, heic, heif, avif, bmp, tiff, tif>' \
--header 'x-amz-acl: private' \
--data-binary '@example.jpg' # AttachmentDosya Boyutu Sınırları
- Minimum dosya boyutu: 1KB
- Maksimum dosya boyutu: 10MB
Yükleme süreci boyunca dosya formatının tutarlı kaldığından emin olun. Başarılı bir yükleme 200 durum kodu döndürecektir.
3. Görseli YZ Algılama İçin Gönderin
Yükledikten sonra, önceki adımdan alınan 'file_path'e referans vererek görseli YZ algılama için gönderin.
POST https://detect-image.truthscan.com/detectÖrnek İstek
curl -X 'POST' \
'https://detect-image.truthscan.com/detect' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"key": "YOUR-API-KEY-GOES-HERE",
"url": "https://ai-image-detector-prod.nyc3.digitaloceanspaces.com/<FILE_PATH>",
"generate_preview": false,
"generate_analysis_details": true
}''FILE_PATH', ilk adım olan 'On-imzali Yükleme URL'si Edinin' yanıtından alınan yolu ifade eder.
İsteğe Bağlı Parametreler
generate_preview: Görsel için önizleme URL'si oluşturmak için 'true' olarak ayarlayın (varsayılan: 'false')document_type: Belge türü (varsayılan: 'Image')email: İşleme için e-posta adresigenerate_analysis_details: Derin YZ analiz sonuçlarını etkinleştirmek için 'true' olarak ayarlayın (varsayılan: 'false'). Etkinleştirildiğinde, sorgu yanıtı analysis_results_status ve analysis_results alanları içerecektir.
Örnek Yanıt
{
"id": "77565038-9e3d-4e6a-8c80-e20785be5ee9",
"status": "pending"
}Yanıt, algılama durumunu izlemek için benzersiz bir görsel kimliği içerir.
Sorgulama
Bu üç nokta, /detect isteği tarafından döndürülen bir görsel kimliğini kabul eder. Ve görsel gönderiminin durumunu ile metadata, OCR ve ML model analizi dahil olmak üzere YZ Algılama işleminin tam sonuçunu döndürür.
POST https://detect-image.truthscan.com/queryÖrnek İstek
curl -X 'POST' \
'https://detect-image.truthscan.com/query' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"id": "IMAGE-ID-GOES-HERE"
}'Örnek Yanıt
{
"id": "00fee5ff-a55b-42fb-b7c7-d14f05ae0769",
"status": "done",
"result": 90.2371538185235,
"result_details": {
"is_valid": true,
"detection_step": 3,
"final_result": "AI Generated",
"metadata": [
"No Information Detected for Real/AI",
"Could not find anything from ExifTool and Pillow metadata"
],
"metadata_basic_source": "null",
"ocr": [
"OCR did not detect AI",
0.0
],
"ml_model": [
"AI Generated",
90.2371538185235
],
"confidence": 90.2371538185235,
"heatmap_status": "ready",
"heatmap_url": "https://ai-image-detector-prod.nyc3.digitaloceanspaces.com/uploads/....",
"analysis_results_status": "pending",
"analysis_results": null
},
"preview_url": "https://ai-image-detector-prod.nyc3.digitaloceanspaces.com/previews/..."
}Sonuç Yorumlama
result: Görselin YZ tarafından üretilme olasılığını gösteren 1-100 arası skor. Yüksek skorlar = daha yüksek YZ olasılığı.final_result: Genel belirleme (örneğin 'AI Generated', 'Real', 'Digitally Edited', 'AI Edited')confidence: Algılama güven skorudetection_step: Algılamanın tamamlandığı aşamayı gösterir. 1 = Yalnızca metadata döndürüldü, 2 = Metadata ve OCR döndürüldü, 3 = Metadata, OCR ve ML model sonuçları döndürüldü (en kapsamlı)metadata: ExifTool ve Pillow kullanılarak görsel metadatasından cikarilan bilgilerocr: Filigran algılama için Optik Karakter Tanıma analiz sonuçlarıml_model: Makine öğrenimi modelinden gelen sonuçlarpreview_url: Önizleme görseli URL'si (generate_preview true olarak ayarlanmışsa)heatmap_status: Isı haritası üretim durumu ('pending' veya 'ready'). Not: Isı haritası üretimi asenkrondur. Başlangıçta heatmap_status 'pending' olacak ve heatmap_url boş veya null olabilir. Hazır olduğunda heatmap_status 'ready' olur ve heatmap_url doldurulur.heatmap_url: Isı haritası görseli URL'si, heatmap_status 'ready' olduğunda kullanılabilir. Yalnızca skoru >= 20 olan görseller için kullanılabilir.analysis_results_status: Derin YZ analiz durumu ('pending', 'done', 'skipped' veya null). 'pending' olduğunda /query üç noktasını sorgulamaya devam edin. 'done' olduğunda analysis_results alani tamamlanmış analizi içerir. 'skipped', null veya yoksa bu görsel için derin analiz mevcut değildir.analysis_results: Derin YZ analiz sonuçları (analysis_results_status 'done' olduğunda mevcuttur). İçerir: agreement, confidence, keyIndicators, detailedReasoning, visualPatterns ve recommendations.
Önemli Not
Isı haritası üretimi asenkrondur. Başlangıçta heatmap_status 'pending' olacak ve heatmap_url boş veya null olabilir. Hazır olduğunda heatmap_status 'ready' olur ve heatmap_url doldurulur. Isı haritaları yalnızca skoru >= 20 olan görseller için oluşturulur.
Burada "result": 90.24 görselin YZ tarafından üretilmiş olma olasılığının yüksek olduğunu gösterir. "final_result": "AI Generated" net bir belirleme sağlar ve "confidence": 90.24 bu sonuça yüksek güven olduğunu gösterir.
Analiz Sonuçları (Asenkron Derin Analiz)
Detect isteğinde 'generate_analysis_details' değerini 'true' olarak ayarladığınızda, TruthScan ilk algılamadan sonra arka planda derin YZ analizi çalıştırır. İlk sorgu yanıtı 'done' durumuyla dönecek ve algılama sonuçlarınız kullanıma hazır olacak, ancak analysis_results_status alanı hala 'pending' olabilir.
1. İlk Sonuç Yerleşir (Analiz Hala Beklemede)
generate_analysis_details: true ile gönderip 'done' durumunda ilk sorgulamayı yaptığınızda, temel algılama sonuçları (result, final_result, confidence) hazırdır. Ancak analysis_results_status 'pending' olabilir — bu, derin YZ analizinin hala arka planda işlendiği anlamına gelir.
{
"id": "00fee5ff-a55b-42fb-b7c7-d14f05ae0769",
"status": "done",
"result": 90.2371538185235,
"result_details": {
"is_valid": true,
"detection_step": 3,
"final_result": "AI Generated",
"confidence": 90.2371538185235,
"analysis_results_status": "pending",
"analysis_results": null
}
}Ne yapılmalı
İlk algılama sonuçlarını (result, final_result, confidence, metadata, ocr, ml_model) hemen kullanabilirsiniz. Derin analize de ihtiyacınız varsa, analysis_results_status 'pending'den değişene kadar aynı görsel kimliği ile /query üç noktasını sorgulamaya devam edin.
2. Analiz Sonuçları İçin Sorgulamaya Devam Edin
Aynı görsel kimliği ile /query üç noktasını çağırmaya devam edin. Her yanıttaki analysis_results_status alanını kontrol edin. 'pending'den 'done'a değiştiğinde analysis_results nesnesi doldurulacaktır.
curl -X 'POST' \
'https://detect-image.truthscan.com/query' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"id": "00fee5ff-a55b-42fb-b7c7-d14f05ae0769"
}'3. Analiz Tamamlandı — Tam Yanıt
analysis_results_status 'done' olduğunda, analysis_results nesnesi uyum düzeyi, güven, temel göstergeler, detaylı mühakeme, görsel desenler ve öneriler içeren tam derin YZ analizini içerir.
{
"id": "00fee5ff-a55b-42fb-b7c7-d14f05ae0769",
"status": "done",
"result": 90.2371538185235,
"result_details": {
"is_valid": true,
"detection_step": 3,
"final_result": "AI Generated",
"confidence": 90.2371538185235,
"heatmap_status": "ready",
"heatmap_url": "https://ai-image-detector-prod.nyc3.digitaloceanspaces.com/uploads/....",
"analysis_results_status": "done",
"analysis_results": {
"agreement": "strong",
"confidence": 92,
"keyIndicators": [
"Unnaturally smooth skin texture",
"Consistent lighting anomalies"
],
"detailedReasoning": "The image shows clear signs of AI generation with unnaturally smooth textures and consistent lighting patterns not typical of real photography.",
"visualPatterns": [
"Uniform noise pattern typical of diffusion models"
],
"recommendations": [
"Cross-reference with original source if available",
"Check for metadata inconsistencies",
"Compare with known AI generation patterns"
]
}
},
"preview_url": "https://ai-image-detector-prod.nyc3.digitaloceanspaces.com/previews/..."
}Analiz Mevcut Olmadığında
analysis_results_status 'skipped', null veya yoksa, bu görsel için derin analiz üretilmeyecektir. Bu, /detect isteğinde 'generate_analysis_details' 'true' olarak ayarlanmadığında veya belirli görsel türleri ve algılama senaryoları için olur. İlk algılama sonuçlarını nihai olarak kabul etmelisiniz.
{
"status": "done",
"result": 12.5,
"result_details": {
"analysis_results_status": "skipped",
"analysis_results": null
}
}Analiz Sonuçları Alanlari
analysis_results_status: 'pending' = hala işleniyor, 'done' = sonuçlar mevcut, 'skipped' / null / yok = bu görsel için mevcut degilanalysis_results.agreement: Derin analizin ilk algılama ile ne kadar guclu uyustugu (strong / moderate / weak / disagreement)analysis_results.confidence: Derin analizin güven skoru (0-100)analysis_results.keyIndicators: Görselde tespit edilen belirli görsel anomaliler dizisianalysis_results.detailedReasoning: Görselin neden bu şekilde sınıflandırıldığına dair 2-4 cümlelik açıklamaanalysis_results.visualPatterns: Bulunan stilistik desenler dizisi (örneğin difuzyon modellerinin tipik gurultu desenleri)analysis_results.recommendations: Daha fazla doğrulama için uygulanabilir öneriler dizisi
Kullanıcı Kredilerini Kontrol Et
Bu üç nokta, başlık aracılığıyla kullanıcının apikey'ini kabul eder. Ve kullanıcının kredi ayrıntılarını döndürür.
GET https://detect-image.truthscan.com/check-user-creditsÖrnek İstek
curl -X 'GET' \
'https://detect-image.truthscan.com/check-user-credits' \
-H 'apikey: YOUR API KEY GOES HERE' \
-H 'accept: application/json' \
-H 'Content-Type: application/json'Örnek Yanıt
{
"baseCredits": 10000,
"boostCredits": 1000,
"credits": 11000
}Sağlık Kontrolü
Bu üç nokta, YZ görsel algılama hizmetinin durumunu kontrol etmenizi sağlar.
GET https://detect-image.truthscan.com/healthÖrnek İstek
curl -X 'GET' \
'https://detect-image.truthscan.com/health' \
-H 'accept: application/json'Örnek Yanıt
{
"status": "healthy",
"timestamp": "2024-01-15T10:30:00Z"
}"healthy" yanıti hizmetin normal çalıştığını gösterir.
Hatalar
Hataların çoğu, API'ye yanlış parametreler gönderilmesinden kaynaklanır. Her API çağrısının parametrelerini doğru biçimlendirildiğinden emin olmak için iki kez kontrol edin ve sağlanan örnek kodu çalıştırmayı deneyin.
Kullandığımız genel hata kodları REST standardına uygundur:
| Hata Kodu | Anlam |
|---|---|
| 400 | Hatalı İstek -- İsteğiniz geçersiz. |
| 403 | Yasak -- API anahtarı geçersiz veya görsel işleme için yeterli kredi yok. |
| 404 | Bulunamadı -- Belirtilen kaynak mevcut değil. |
| 405 | Yönteme İzin Verilmiyor -- Geçersiz bir yöntemle kaynağa erişmeye çalıştınız. |
| 406 | Kabul Edilemez -- JSON olmayan bir format talep ettiniz. |
| 410 | Kaldırıldı -- Bu üç noktadaki kaynak kaldırıldı. |
| 422 | Geçersiz İstek Gövdesi -- İstek gövdeniz yanlış biçimlendirilmiş veya geçersiz veya eksik parametreleri var. |
| 429 | Çok Fazla İstek -- Çok fazla istek gönderiyorsunuz! Yavaşlayın! |
| 500 | Dahili Sunucu Hatası -- Sunucumuzda bir sorun yaşadık. Daha sonra tekrar deneyin. |
| 503 | Hizmet Kullanım Dışı -- Bakım için geçici olarak çevrimdışıyız. Lütfen daha sonra tekrar deneyin. |
Yaygın Sorunlar ve Çözümler
Kimlik Doğrulama Sorunları
"Kullanıcı doğrulaması başarısız oldu" (403)
Neden: Gecersiz veya süresi dolmus API anahtari
Çözüm:
- API anahtarınızın doğru olduğundan emin olun
- API anahtarınızın hesabınızda aktif olup olmadığını kontrol edin
- API anahtarınızı yeniden oluşturmayı deneyin
"Yeterli kredi yok" (403)
Neden: Görsel işleme için yetersiz kredi
Çözüm:
- Kalan kredilerinizi /check-user-credits ile kontrol edin
- Gerekirse ek kredi satın alın
- Daha az kredi tüketmek için yüklemeden önce görsel boyutunu optimize edin
Girdi Doğrulama Sorunları
"Desteklenmeyen dosya formati" (400)
Neden: Desteklenmeyen veya geçersiz görsel formatı gönderildi
Çözüm:
- Görsel formatının desteklendiğinden emin olun (JPG, JPEG, PNG, WebP, JFIF, HEIC, HEIF, AVIF, BMP, TIFF, TIF)
- Dosyanın bozuk olmadığından emin olun
- Yüklerken Content-Type başlığını kontrol edin
"Dosya çok büyük" (400)
Neden: Dosya boyutu 10MB sınırını aşıyor
Çözüm:
- Görseli 10MB'in altina yeniden boyutlandirin veya sıkıştırın
- Yüklemeden önce dosya boyutunu kontrol edin
- Mümkün olduğunda WebP gibi daha verimli formatlar kullanın
İşleme Sorunları
"Istek zaman aşımı" (WebSocket)
Neden: Görsel işleme çok uzun surdu
Çözüm:
- Daha küçük veya daha az karmaşık bir görselle deneyin
- Hizmetin yoğun yük altında olup olmadığını kontrol edin
- İsteği yeniden deneyin
Belge Durumu "başarısız"
Neden: Çeşitli nedenlerle işleme başarısız oldu
Çözüm:
- Görselin minimum gereksinimleri karşılayıp karşılamadığını kontrol edin (1KB - 10MB)
- Görselin desteklenen bir formatta olduğundan emin olun
- Algılama için göndermeden önce yüklemenin başarıyla tamamlandığını doğrulayın
- Sorun devam ederse destekle iletişime geçin
Yükleme Sorunları
"Görsel yükleme başarısız oldu" (403/400)
Neden: Gecersiz veya süresi dolmus on-imzali URL veya depolama sunucusu sorunlari
Çözüm:
- On-imzali URL'yi aldiktan hemen sonra kullandığınızdan emin olun (süresi dolabilir)
- Content-Type basliginin görsel formati için doğru olduğunu doğrulayın
- Yüklemeden önce dosya adından boşlukları kaldırın
- Mevcut URL'nin süresi dolduysa yeni bir on-imzali URL oluşturmayı deneyin
"Gecersiz on-imzali URL" (400)
Neden: Boşluklu dosya adı veya süresi dolmus/bozuk on-imzali URL
Çözüm:
- On-imzali URL talep etmeden önce dosya adından tüm boşlukları kaldırın
- Dosya adinda yalnızca alfanumerik karakterler, tireler ve alt çizgiler kullanın
- Gerekirse yeni bir on-imzali URL oluştürün
Yardıma mı İhtiyacınız Var?
API'mizi kullanma veya teknik destek hakkında daha fazla bilgi için lütfen bizimle iletişime geçin.
API Sıkça Sorulan Sorular
YZ görsel algılama API'miz hakkında en sık sorulan soruların cevaplarını bulun.