AnonShot

API REST v1

AnonShot की फ़ोटो को अपने ऐप में जोड़ें

अपने सर्वर से फ़ोटो अपलोड करें, उसका कोड पाएँ और किसी LLM, इमेज टैग या किसी भी HTTP क्लाइंट में डायरेक्ट URL इस्तेमाल करें। हर फ़ाइल की दिशा ठीक की जाती है, EXIF मेटाडेटा हटाया जाता है और वह WebP में दी जाती है।

30 सेकंड में पूरा तरीका

  1. अकाउंट सेटिंग में एक टोकन बनाएँ।
  2. उस टोकन के साथ फ़ाइल POST /api/v1/photos पर भेजें।
  3. shortUrl रखें, या और आसानी से, जवाब में दिए गए तैयार URL रखें।
  4. फ़ोटो सार्वजनिक हो तो publicImageUrl LLM को दें, या निजी रखनी हो तो टोकन के साथ fileUrl डाउनलोड करें।

1. टोकन बनाएँ और सुरक्षित रखें

पूरा टोकन सिर्फ़ एक बार दिखता है। इसे अपने बैकएंड के एनवायरनमेंट वेरिएबल में रखें, कभी Git, URL, ब्राउज़र को भेजे जाने वाले JavaScript या बाँटे जाने वाले मोबाइल ऐप में नहीं।

ANONSHOT_TOKEN=anon_live_…
Authorization: Bearer $ANONSHOT_TOKEN
  • photos:write अपलोड, बदलाव और मिटाने की अनुमति देता है।
  • photos:read सूची, विवरण और ऑथेंटिकेटेड डाउनलोड की अनुमति देता है।
  • डिफ़ॉल्ट कोटा 60 रिक्वेस्ट प्रति मिनट और 10,000 रिक्वेस्ट प्रति महीना है।
  • टोकन रद्द किए जा सकते हैं और उनकी एक्सपायरी तारीख़ हो सकती है।

2. फ़ोटो अपलोड करें

multipart/form-data फ़ॉर्म भेजें। files फ़ील्ड दोहराया जा सकता है: JPEG, PNG, WebP और GIF चलते हैं, हर फ़ाइल 50 MB तक और हर रिक्वेस्ट में 20 फ़ाइलें तक।

curl उदाहरण

curl -X POST https://anonshot.com/api/v1/photos \
  -H "Authorization: Bearer $ANONSHOT_TOKEN" \
  -F "files=@photo.jpg"

विकल्प: पेज सुरक्षित करने के लिए -F "password=alag-secret" जोड़ें, या एक बार देखने वाली फ़ोटो के लिए -F "burnAfterRead=true"। अगर किसी बाहरी सर्विस को सार्वजनिक URL खुलकर पढ़ना है तो ये विकल्प न लगाएँ।

सर्वर-साइड JavaScript उदाहरण

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 ?? "अपलोड नहीं हो सका")

const photo = payload.data[0]
console.log(photo.shortUrl, photo.publicImageUrl)

Content-Type हेडर खुद सेट न करें: FormData अपने-आप सही multipart boundary जोड़ देता है।

3. जवाब और उसके तीन URL

{
  "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
  }]
}
वैल्यूकिसके लिएपहुँच
shareUrlइंटरफ़ेस के साथ AnonShot पेज खोलनासार्वजनिक
publicImageUrlLLM, <img>, डायरेक्ट डाउनलोडसार्वजनिक, बिना HTML
fileUrlवही फ़ोटो सार्वजनिक किए बिना डाउनलोड करनाBearer + photos:read

डायरेक्ट पता हमेशा /p/{code}/image होता है। यह HTML पेज नहीं, बल्कि प्रोसेस की गई फ़ोटो के WebP बाइट लौटाता है। अकाउंट टोकन से बनी फ़ोटो एक्सपायर नहीं होतीं, जब तक उन्हें मिटाया न जाए या एक बार देखने वाले शेयर के रूप में खोला न जाए। पासवर्ड वाली फ़ोटो ऐसे LLM के काम की नहीं जिसके पास अनलॉक कुकी न हो।

4. फ़ोटो को LLM से जोड़ें

अगर प्रोवाइडर इमेज URL लेता है, तो सीधे photo.publicImageUrl दें। अगर फ़ोटो सार्वजनिक नहीं होनी चाहिए, तो सर्वर पर fileUrl से बाइट लें और प्रोवाइडर की API के हिसाब से भेजें।

const imageResponse = await fetch(photo.fileUrl, {
  headers: { Authorization: `Bearer ${process.env.ANONSHOT_TOKEN}` },
})

if (!imageResponse.ok) throw new Error("फ़ोटो तक पहुँच नहीं")
const imageBytes = await imageResponse.arrayBuffer()
// फिर imageBytes को LLM के SDK में दें।

AnonShot टोकन कभी LLM को न दें और कभी क्वेरी पैरामीटर में न जोड़ें। टोकन सिर्फ़ आपके बैकएंड और anonshot.com के बीच इस्तेमाल होता है।

5. पढ़ें, सूची देखें और मिटाएँ

# अपनी फ़ोटो की सूची
curl https://anonshot.com/api/v1/photos \
  -H "Authorization: Bearer $ANONSHOT_TOKEN"

# किसी फ़ोटो का विवरण
curl https://anonshot.com/api/v1/photos/Ab3dE7xK \
  -H "Authorization: Bearer $ANONSHOT_TOKEN"

# साफ़ की गई WebP डाउनलोड करें
curl https://anonshot.com/api/v1/photos/Ab3dE7xK/file \
  -H "Authorization: Bearer $ANONSHOT_TOKEN" \
  --output Ab3dE7xK.webp

# शेयर हमेशा के लिए मिटाएँ
curl -X DELETE https://anonshot.com/api/v1/photos/Ab3dE7xK \
  -H "Authorization: Bearer $ANONSHOT_TOKEN"

सिर्फ़ EXIF मेटाडेटा हटाएँ

यह रूट एक फ़ोटो लेता है और बिना शेयर लिंक बनाए सीधे साफ़ WebP लौटाता है।

curl -X POST https://anonshot.com/api/v1/exif/clean \
  -H "Authorization: Bearer $ANONSHOT_TOKEN" \
  -F "files=@photo.jpg" \
  --output photo-bina-metadata.webp

X-AnonShot-Photo-Id हेडर में ऑपरेशन की पहचान होती है। इस रूट पर JPEG, PNG और WebP चलते हैं।

सभी रूट

रूटकाम
GET /api/v1API की जानकारी, बिना ऑथेंटिकेशन
GET · POST /api/v1/photosफ़ोटो की सूची या 20 फ़ोटो तक अपलोड
GET · PATCH · DELETE /api/v1/photos/{code}शेयर पढ़ें, बदलें या मिटाएँ
GET /api/v1/photos/{code}/fileटोकन से साफ़ WebP पाएँ
GET /p/{code}/imageसार्वजनिक फ़ोटो सीधे दिखाएँ, बिना HTML पेज
POST /api/v1/exif/cleanफ़ोटो साफ़ करें और WebP पाएँ
POST /api/v1/uploads/presignस्टोरेज में डायरेक्ट अपलोड की तैयारी
GET · POST /api/v1/albumsएल्बम की सूची या नया एल्बम
GET · PATCH · DELETE /api/v1/albums/{code}एल्बम पढ़ें, बदलें या मिटाएँ
POST · DELETE /api/v1/albums/{code}/photosफ़ोटो जोड़ें या हटाएँ

जवाब, त्रुटियाँ और कोटा

सफल JSON जवाब {"data": …} इस्तेमाल करते हैं। त्रुटियाँ {"error":{"code":"…","message":"…"}} इस्तेमाल करती हैं। खास तौर पर 400 (रिक्वेस्ट या फ़ोटो), 401 (टोकन), 403 (scope) और 429 (कोटा) संभालें। X-RateLimit-Remaining और X-Monthly-Remaining हेडर बचा हुआ कोटा बताते हैं।

API टोकन बनाएँ या रद्द करें
इमेज होस्टिंग और EXIF हटाने वाली API — AnonShot