AnonShot

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

  1. hesap ayarlarınızdan bir token oluşturun.
  2. Dosyayı bu tokenle POST /api/v1/photos adresine gönderin.
  3. shortUrl değerini veya yanıtta dönen hazır URL'leri saklayın.
  4. Görsel herkese açıksa publicImageUrl adresini LLM'e verin; gizli kalması gerekiyorsa fileUrl adresini 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_TOKEN
  • photos:write yükleme, düzenleme ve silmeye izin verir.
  • photos:read listeleme, 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ğerKullanımErişim
shareUrlAnonShot sayfasını arayüzüyle açmakHerkese açık
publicImageUrlLLM'ler, <img>, doğrudan indirmeHerkese açık, HTML'siz
fileUrlAynı görseli herkese açmadan indirmekBearer + 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.webp

X-AnonShot-Photo-Id başlığı işlem kimliğini içerir. Bu rotada JPEG, PNG ve WebP kabul edilir.

Tüm rotalar

RotaAmaç
GET /api/v1API keşfi, kimlik doğrulama gerekmez
GET · POST /api/v1/photosFotoğ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}/fileTemizlenmiş WebP'yi tokenle alın
GET /p/{code}/imageHerkese açık bir görseli HTML sayfası olmadan doğrudan sunun
POST /api/v1/exif/cleanBir görseli temizleyip WebP olarak geri alın
POST /api/v1/uploads/presignDepolamaya doğrudan yüklemeyi hazırlayın
GET · POST /api/v1/albumsAlbü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}/photosFotoğ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.

API tokeni oluşturun veya iptal edin