API REST v1
AnonShot görsellerini uygulamanızda kullanın
Sunucunuzdan bir görsel yükleyin, kodunu alın ve doğrudan URL'yi bir LLM'de, bir görsel etiketinde veya herhangi bir HTTP istemcisinde kullanın. Her dosyanın yönü düzeltilir, EXIF meta verileri kaldırılır ve WebP olarak sunulur.
30 saniyede nasıl çalışır
- hesap ayarlarınızdan bir token oluşturun.
- Dosyayı bu tokenle
POST /api/v1/photosadresine gönderin. shortUrldeğerini veya yanıtta dönen hazır URL'leri saklayın.- Görsel herkese açıksa
publicImageUrladresini LLM'e verin; gizli kalması gerekiyorsafileUrladresini tokenle indirin.
1. Tokeni oluşturun ve koruyun
Tokenin tamamı yalnızca bir kez gösterilir. Onu backend'inizde bir ortam değişkeninde saklayın; asla Git'te, bir URL'de, tarayıcıya gönderilen JavaScript'te veya dağıtılan bir mobil uygulamada tutmayın.
ANONSHOT_TOKEN=anon_live_…Authorization: Bearer $ANONSHOT_TOKENphotos:writeyükleme, düzenleme ve silmeye izin verir.photos:readlisteleme, ayrıntılar ve kimlik doğrulamalı indirmeye izin verir.- Varsayılan kotalar dakikada 60 istek ve ayda 10.000 istektir.
- Tokenler iptal edilebilir ve bir son kullanma tarihine sahip olabilir.
2. Fotoğraf yükleyin
Bir multipart/form-data formu gönderin. files alanı tekrarlanabilir: JPEG, PNG, WebP ve GIF kabul edilir; dosya başına en fazla 50 MB, istek başına 20 dosya.
curl örneği
curl -X POST https://anonshot.com/api/v1/photos \
-H "Authorization: Bearer $ANONSHOT_TOKEN" \
-F "files=@photo.jpg"Seçenekler: sayfayı korumak için -F "password=ayri-bir-gizli-deger" ekleyin veya tek seferlik görsel için -F "burnAfterRead=true". Harici bir hizmetin herkese açık URL'yi serbestçe okuması gerekiyorsa bu seçenekleri kullanmayın.
Sunucu tarafı JavaScript örneği
import { readFile } from "node:fs/promises"
const bytes = await readFile("photo.jpg")
const form = new FormData()
form.append("files", new Blob([bytes], { type: "image/jpeg" }), "photo.jpg")
const response = await fetch("https://anonshot.com/api/v1/photos", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ANONSHOT_TOKEN}`,
},
body: form,
})
const payload = await response.json()
if (!response.ok) throw new Error(payload.error?.message ?? "Yükleme başarısız oldu")
const photo = payload.data[0]
console.log(photo.shortUrl, photo.publicImageUrl)Content-Type başlığını kendiniz ayarlamayın: FormData doğru multipart sınırını otomatik olarak ekler.
3. Yanıt ve üç URL'si
{
"data": [{
"id": "…",
"shortUrl": "Ab3dE7xK",
"shareUrl": "https://anonshot.com/p/Ab3dE7xK",
"publicImageUrl": "https://anonshot.com/p/Ab3dE7xK/image",
"fileUrl": "https://anonshot.com/api/v1/photos/Ab3dE7xK/file",
"mime": "image/webp",
"size": 183421,
"width": 2048,
"height": 1365,
"burnAfterRead": false,
"passwordProtected": false
}]
}| Değer | Kullanım | Erişim |
|---|---|---|
| shareUrl | AnonShot sayfasını arayüzüyle açmak | Herkese açık |
| publicImageUrl | LLM'ler, <img>, doğrudan indirme | Herkese açık, HTML'siz |
| fileUrl | Aynı görseli herkese açmadan indirmek | Bearer + photos:read |
Doğrudan adres her zaman /p/{code}/image şeklindedir. HTML sayfası değil, işlenmiş boyutundaki görsel baytlarını WebP olarak döndürür. Bir hesap tokeniyle oluşturulan fotoğrafların süresi dolmaz; silinmedikçe veya tek seferlik paylaşım olarak bir kez açılmadıkça. Şifre korumalı bir fotoğraf, kilit açma çerezine sahip olmayan bir LLM için çalışmaz.
4. Görseli bir LLM'e verin
Sağlayıcı bir görsel URL'si kabul ediyorsa doğrudan photo.publicImageUrl değerini verin. Görsel herkese açık olmamalıysa baytları sunucunuzda fileUrl adresinden alın, ardından bu baytları sağlayıcının API'sine uygun şekilde gönderin.
const imageResponse = await fetch(photo.fileUrl, {
headers: { Authorization: `Bearer ${process.env.ANONSHOT_TOKEN}` },
})
if (!imageResponse.ok) throw new Error("Görsele erişilemiyor")
const imageBytes = await imageResponse.arrayBuffer()
// Ardından imageBytes değerini LLM SDK'sına verin.AnonShot tokenini asla LLM'e vermeyin ve asla sorgu parametresi olarak eklemeyin. Token yalnızca backend'iniz ile anonshot.com arasında kullanılır.
5. Okuyun, listeleyin ve silin
# Fotoğraflarınızı listeleyin
curl https://anonshot.com/api/v1/photos \
-H "Authorization: Bearer $ANONSHOT_TOKEN"
# Bir fotoğrafın ayrıntılarını okuyun
curl https://anonshot.com/api/v1/photos/Ab3dE7xK \
-H "Authorization: Bearer $ANONSHOT_TOKEN"
# Temizlenmiş WebP'yi indirin
curl https://anonshot.com/api/v1/photos/Ab3dE7xK/file \
-H "Authorization: Bearer $ANONSHOT_TOKEN" \
--output Ab3dE7xK.webp
# Paylaşımı kalıcı olarak silin
curl -X DELETE https://anonshot.com/api/v1/photos/Ab3dE7xK \
-H "Authorization: Bearer $ANONSHOT_TOKEN"Yalnızca EXIF meta verilerini silin
Bu rota bir görsel alır ve paylaşım bağlantısı oluşturmadan doğrudan temizlenmiş bir WebP döndürür.
curl -X POST https://anonshot.com/api/v1/exif/clean \
-H "Authorization: Bearer $ANONSHOT_TOKEN" \
-F "files=@photo.jpg" \
--output meta-verisiz-fotograf.webpX-AnonShot-Photo-Id başlığı işlem kimliğini içerir. Bu rotada JPEG, PNG ve WebP kabul edilir.
Tüm rotalar
| Rota | Amaç |
|---|---|
| GET /api/v1 | API keşfi, kimlik doğrulama gerekmez |
| GET · POST /api/v1/photos | Fotoğrafları listeleyin veya en fazla 20 görsel yükleyin |
| GET · PATCH · DELETE /api/v1/photos/{code} | Bir paylaşımı okuyun, düzenleyin veya silin |
| GET /api/v1/photos/{code}/file | Temizlenmiş WebP'yi tokenle alın |
| GET /p/{code}/image | Herkese açık bir görseli HTML sayfası olmadan doğrudan sunun |
| POST /api/v1/exif/clean | Bir görseli temizleyip WebP olarak geri alın |
| POST /api/v1/uploads/presign | Depolamaya doğrudan yüklemeyi hazırlayın |
| GET · POST /api/v1/albums | Albümleri listeleyin veya oluşturun |
| GET · PATCH · DELETE /api/v1/albums/{code} | Bir albümü okuyun, düzenleyin veya silin |
| POST · DELETE /api/v1/albums/{code}/photos | Fotoğraf ekleyin veya kaldırın |
Yanıtlar, hatalar ve kotalar
Başarılı JSON yanıtları {"data": …} kullanır. Hatalar {"error":{"code":"…","message":"…"}} kullanır. Özellikle 400 (istek veya görsel), 401 (token), 403 (kapsam) ve 429 (kota) durumlarını ele alın. X-RateLimit-Remaining ve X-Monthly-Remaining başlıkları kalan kotaları gösterir.