API REST v1
AnonShot की फ़ोटो को अपने ऐप में जोड़ें
अपने सर्वर से फ़ोटो अपलोड करें, उसका कोड पाएँ और किसी LLM, इमेज टैग या किसी भी HTTP क्लाइंट में डायरेक्ट URL इस्तेमाल करें। हर फ़ाइल की दिशा ठीक की जाती है, EXIF मेटाडेटा हटाया जाता है और वह WebP में दी जाती है।
30 सेकंड में पूरा तरीका
- अकाउंट सेटिंग में एक टोकन बनाएँ।
- उस टोकन के साथ फ़ाइल
POST /api/v1/photosपर भेजें। shortUrlरखें, या और आसानी से, जवाब में दिए गए तैयार URL रखें।- फ़ोटो सार्वजनिक हो तो
publicImageUrlLLM को दें, या निजी रखनी हो तो टोकन के साथfileUrlडाउनलोड करें।
1. टोकन बनाएँ और सुरक्षित रखें
पूरा टोकन सिर्फ़ एक बार दिखता है। इसे अपने बैकएंड के एनवायरनमेंट वेरिएबल में रखें, कभी Git, URL, ब्राउज़र को भेजे जाने वाले JavaScript या बाँटे जाने वाले मोबाइल ऐप में नहीं।
ANONSHOT_TOKEN=anon_live_…Authorization: Bearer $ANONSHOT_TOKENphotos: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 पेज खोलना | सार्वजनिक |
| publicImageUrl | LLM, <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.webpX-AnonShot-Photo-Id हेडर में ऑपरेशन की पहचान होती है। इस रूट पर JPEG, PNG और WebP चलते हैं।
सभी रूट
| रूट | काम |
|---|---|
| GET /api/v1 | API की जानकारी, बिना ऑथेंटिकेशन |
| 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 हेडर बचा हुआ कोटा बताते हैं।