API दस्तावेज़

YourImageShare API से आप प्रोग्राम के ज़रिए फ़ाइल अपलोड कर सकते हैं, उनकी लिस्ट देख सकते हैं और उन्हें डिलीट कर सकते हैं। यह एक छोटी JSON/REST API है - SDK ज़रूरी नहीं, बस एक HTTP क्लाइंट और एक API की चाहिए - आधिकारिक JavaScript, Python और MCP लाइब्रेरी भी उपलब्ध हैं।

सभी क्लाइंट लाइब्रेरी और नीचे दिए गए टूल ओपन सोर्स हैं। हमारी आधिकारिक GitHub रिपॉज़िटरी github.com/yourimageshare/yourimageshare पर कोड देखें, समस्याएं बताएं या योगदान दें।

बेस URL: https://yourimageshare.com/api · फ़ॉर्मैट: इनपुट और आउटपुट JSON में, सिवाय अपलोड के जो multipart/form-data में होते हैं · ऑथ: हर रिक्वेस्ट पर एक API की। · मशीन-रीडेबल स्पेक: /openapi.json (OpenAPI 3.1), उन एजेंट और कोडजेन टूल के लिए जो इस पेज को पार्स नहीं करना चाहते।

API की पाएं

साइन इन करें, मेरा खाता पर जाएं और API टैब खोलें। आपकी की वहीं दिखती है, साथ में एक Regenerate बटन भी होता है। की दोबारा बनाने पर पुरानी की तुरंत बेकार हो जाती है, इसलिए बटन दबाने से पहले जहाँ-जहाँ वह इस्तेमाल हो रही है, वहाँ अपडेट कर लें।

उसी टैब में एक दूसरी, अलग Upload-only key भी है - इसे कब इस्तेमाल करें, यह नीचे दी गई टिप और फ़ोरम प्लगइन में देखें।

ऑथेंटिकेशन

अपनी की हेडर के रूप में भेजें - यही बेहतर तरीका है, क्योंकि क्वेरी स्ट्रिंग अक्सर एक्सेस लॉग, प्रॉक्सी लॉग और Referer हेडर में पहुँच जाती हैं:

X-API-Key: YOUR_API_KEY

?key= क्वेरी पैरामीटर भी काम करता है, जो पुराने इंटीग्रेशन और एक बार चलाने वाले curl कमांड के लिए रखा गया है। दोनों मौजूद हों तो हेडर को प्राथमिकता मिलती है।

?key=YOUR_API_KEY

टिप: अपनी की को पासवर्ड की तरह संभालकर रखें - जिसके पास भी यह है, वह आपके खाते पर अपलोड, लिस्ट, बदलाव और डिलीट कर सकता है। हर सफल रिक्वेस्ट लॉग होती है और आपके खाते के API टैब में दिन और रिक्वेस्ट के प्रकार के अनुसार चार्ट के रूप में दिखती है। अगर की ऐसी जगह रखनी पड़े जहाँ दूसरे लोग देख सकें - जैसे फ़ोरम प्लगइन या सार्वजनिक कॉन्फ़िग फ़ाइल - तो उसी टैब की Upload-only key इस्तेमाल करें: यह सिर्फ़ अपलोड कर सकती है - अपलोड की लिस्ट देखना, खोजना, बदलना और डिलीट करना, सब पर यह 401 देकर मना कर देती है।

एंडपॉइंट

अपलोड, लिस्ट और डिलीट में ऑथेंटिकेशन और रेट लिमिट एक जैसी हैं; बड़ी फ़ाइलें पहले टुकड़ों में भेजी जा सकती हैं।

POST /api - फ़ाइल अपलोड करें

ऑथेंटिकेट किए गए खाते के लिए एक फ़ाइल अपलोड करता है।

फ़ील्डटाइपज़रूरीविवरण
uploadsfileइन तीन में से एकअपलोड की जाने वाली फ़ाइल, 100MB तक (हमारे नेटवर्क से एक रिक्वेस्ट की सीमा)। हर रिक्वेस्ट में एक फ़ाइल - यह एंडपॉइंट एक साथ कई फ़ाइलें अपलोड नहीं करता।
urlstringकिसी इमेज या वीडियो का सार्वजनिक http(s) लिंक। हम इसे खुद डाउनलोड करते हैं, इसलिए 200MB तक की फ़ाइलें चलती हैं।
upload_idstringपहले से POST /api/chunk पर टुकड़ों में भेजी गई फ़ाइल, 200MB तक।
filenamestringनहींupload_id के साथ: फ़ाइल का मूल नाम।
expires_inintegerनहींइतने सेकंड बाद यह अपलोड अपने आप डिलीट हो जाएगा (60 से 31,536,000, यानी 1 मिनट से 1 साल)। सामान्य, स्थायी अपलोड के लिए इसे छोड़ दें।
allow_duplicatebooleanनहींआपके खाते से वही फ़ाइल पहले अपलोड हो चुकी हो, तब भी नई कॉपी सेव करें (नीचे duplicate देखें)।
keep_originalbooleanनहींइमेज को ठीक वैसी ही रखें जैसी अपलोड की गई। इसके बिना, 1 MB से बड़ी JPG/PNG फ़ाइलें WebP में ऑप्टिमाइज़ की जाती हैं। GPS जैसा मेटाडेटा दोनों हालात में हटा दिया जाता है।
visibilitystringनहींunlisted (डिफ़ॉल्ट): फ़ाइल और उसका पेज लिंक वाले हर व्यक्ति के लिए काम करते हैं, पर कहीं लिस्ट नहीं होते। private: सिर्फ़ फ़ाइल - पेज का लिंक आपके अलावा सबको सीधे फ़ाइल पर भेज देता है (कोई कमेंट, रिएक्शन या विज्ञापन नहीं)। public: साइट पर लिस्ट होता है और इंडेक्स हो सकता है।
titlestringनहीं90 अक्षरों तक, अपलोड के पेज पर दिखता है।
descriptionstringनहीं500 अक्षरों तक।

स्वीकृत प्रकार: JPG, PNG, GIF, WEBP, AVIF, BMP, TIFF, HEIC या HEIF इमेज; MP4, WEBM या AVI वीडियो (सटीक सूची समय के साथ बढ़ सकती है)। HEIC/HEIF और TIFF WebP के रूप में सेव होते हैं, MP4/WebM के अलावा बाकी वीडियो MP4 में बदले जाते हैं, और बड़ी JPEG/PNG इमेज अपलोड के कुछ देर बाद WebP में बदल दी जाती हैं, अगर इससे उनका साइज़ साफ़ तौर पर घटता है। अधिकतम साइज़: 200MB; बहुत बड़ी या न पढ़ी जा सकने वाली फ़ाइलें 422 के साथ रिजेक्ट हो जाती हैं।

रिस्पॉन्स - 200 OK:

{
  "type": "success",
  "msg": "success",
  "data": {
    "id": "aB3xY9qRz1",
    "type": "image",
    "path": "https://i.yourimageshare.com/aB3xY9qRz1.png",
    "src": "https://yourimageshare.com/ib/aB3xY9qRz1.png",
    "direct": "https://yourimageshare.com/ib/aB3xY9qRz1",
    "thumb": "https://i.yourimageshare.com/thumb-aB3xY9qRz1.webp",
    "width": 1920,
    "height": 1080,
    "size": 482113,
    "locked": false,
    "visibility": "unlisted",
    "title": null,
    "description": null,
    "expires_at": null,
    "duplicate": false,
    "delete_url": "https://yourimageshare.com/delete#iV3x...k9"
  }
}
फ़ील्डविवरण
idफ़ाइल की यूनीक पहचान।
typeimage या video।
pathअपलोड के समय फ़ाइल का स्टोरेज URL। फ़ाइल कन्वर्ट होने (WebP/MP4) पर यह थोड़ी देर बाद बदल सकता है, इसलिए path नहीं, src सेव करें।
srcस्थायी सीधा फ़ाइल URL - हमेशा मौजूदा फ़ाइल खोलता है, <img>/<video> के src और सेव करने के लिए उपयुक्त।
directYourImageShare पर फ़ाइल का पेज (शीर्षक, विवरण, कमेंट, शेयर विकल्प)।
thumb280px चौड़ा WebP थंबनेल (वीडियो के लिए उसका पहला फ़्रेम), या null।
width, heightपिक्सल में डिस्प्ले साइज़ (सीधी ओरिएंटेशन में; वीडियो के लिए फ़्रेम साइज़), या अज्ञात होने पर null।
sizeसेव की गई फ़ाइल का साइज़, बाइट में।
lockedअपलोड पासवर्ड से सुरक्षित हो तो true।
visibilityprivate, unlisted या public (ऊपर रिक्वेस्ट फ़ील्ड देखें)।
title, descriptionजैसा सेट किया गया हो, या null। टेक्स्ट पर वेबसाइट जैसी ही मॉडरेशन लागू होती है।
delete_urlसिर्फ़ नए अपलोड के लिए: एक निजी लिंक जो API की के बिना इस अपलोड को डिलीट कर देता है। यह सिर्फ़ एक बार दिखता है (केवल हैश सेव होता है) - ज़रूरत हो तो इसे संभालकर रखें।
expires_atवह ISO 8601 टाइमस्टैम्प जब यह अपलोड अपने आप डिलीट होगा, या एक्सपायर न होने पर null।
duplicateअगर आपके खाते से वही फ़ाइल पहले अपलोड हो चुकी थी तो true: वही अपलोड लौटाया जाता है और कुछ नया सेव नहीं होता। एक्सपायर होने वाले अपलोड पर या allow_duplicate=1 के साथ लागू नहीं होता।

एक्सपायर होने वाले अपलोड: expires_at बीतते ही फ़ाइल स्टोरेज से डिलीट हो जाती है और अपलोड का पेज लगभग 5 मिनट के भीतर 410 Gone देने लगता है। इसे बाद में वापस या आगे नहीं बढ़ाया जा सकता - जल्दी हटाना हो तो DELETE एंडपॉइंट से डिलीट करें, या ज़्यादा समय तक चाहिए तो नए expires_in के साथ दोबारा अपलोड करें।

POST /api/chunk - बड़ी फ़ाइलें

एक रिक्वेस्ट में ज़्यादा से ज़्यादा 100MB जा सकता है। बड़ी फ़ाइलों के लिए ( 200MB तक), या धीमे कनेक्शन पर हर रिक्वेस्ट छोटी रखने के लिए, फ़ाइल को ज़्यादा से ज़्यादा 5MB के टुकड़ों में भेजें और आख़िर में POST /api से पूरा करें:

  1. एक अपलोड id चुनें: 32 रैंडम हेक्स अक्षर।
  2. हर टुकड़े के लिए POST /api/chunk (multipart/form-data) करें, साथ में upload_id, index (0 से शुरू), total (टुकड़ों की संख्या) और chunk में बाइट्स। जवाब होगा {"type": "success", "chunk_size": 5242880}।
  3. uploads की जगह upload_id और filename के साथ POST /api करें, और चाहें तो कोई अन्य अपलोड फ़ील्ड भी जोड़ें। जवाब सामान्य अपलोड रिस्पॉन्स जैसा होगा।

जो अपलोड पूरा नहीं होता, उसके टुकड़े 2 घंटे बाद डिलीट हो जाते हैं। अपलोड रेट लिमिट में सिर्फ़ आख़िरी POST /api गिना जाता है।

GET /api/{id} और PATCH /api/{id} - एक अपलोड

GET आपका एक अपलोड लौटाता है, उन्हीं फ़ील्ड के साथ जो नीचे दी गई लिस्ट में हैं। PATCH उसकी visibility, title या description बदलता है (फ़ॉर्म फ़ील्ड या JSON; खाली title या description उसे हटा देता है) और अपडेट किया हुआ अपलोड लौटाता है। दोनों के लिए पूरी API की चाहिए; आपके खाते में ऐसा अपलोड न हो तो 404।

curl -X PATCH https://yourimageshare.com/api/aB3xY9qRz1 \
  -H "X-API-Key: YOUR_API_KEY" -d visibility=public -d title="Sunset"

POST /api/{id}/replace - फ़ाइल बदलें

आपके किसी अपलोड के पीछे की फ़ाइल बदल देता है, और उसका id, पेज और हर लिंक वैसा ही रहता है। कोई भी अनुमत प्रकार चलता है, अलग प्रकार भी (इमेज की जगह वीडियो भी हो सकता है)। नई फ़ाइल uploads के रूप में भेजें (या POST /api/chunk से टुकड़ों में भेजी फ़ाइल का upload_id); keep_original अपलोड की तरह ही काम करता है। नई फ़ाइल पर नए अपलोड जैसी ही जाँच और कन्वर्ज़न होते हैं, और पिछला वर्शन हटा दिया जाता है। पूरी API की चाहिए; आपके खाते में ऐसा अपलोड न हो तो 404, और अपलोड पासवर्ड से सुरक्षित या व्यू-लिमिट वाला हो तो 409।

curl -X POST https://yourimageshare.com/api/aB3xY9qRz1/replace \
  -H "X-API-Key: YOUR_API_KEY" -F [email protected]

GET /api - अपने अपलोड की लिस्ट

ऑथेंटिकेट किए गए खाते के अपलोड की पेज वाली लिस्ट लौटाता है (किसी भी स्रोत से - API, वेबसाइट या एडिटर), सबसे नए पहले, हर पेज पर 50।

पैरामीटरकहाँज़रूरीविवरण
pagequeryनहींपेज नंबर, डिफ़ॉल्ट 1।

रिस्पॉन्स - 200 OK:

{
  "type": "success",
  "data": [
    {
      "id": "aB3xY9qRz1",
      "type": "image",
      "title": null,
      "path": "https://i.yourimageshare.com/aB3xY9qRz1.webp",
      "src": "https://yourimageshare.com/ib/aB3xY9qRz1.webp",
      "direct": "https://yourimageshare.com/ib/aB3xY9qRz1",
      "thumb": "https://i.yourimageshare.com/thumb-aB3xY9qRz1.webp",
      "width": 1920,
      "height": 1080,
      "size": 482113,
      "locked": false,
      "visibility": "unlisted",
      "description": null,
      "expires_at": null,
      "created_at": "2026-07-23T15:43:28+01:00"
    }
  ],
  "meta": { "current_page": 1, "last_page": 1, "total": 1 }
}

यहाँ फ़ील्ड का मतलब वही है जो ऊपर अपलोड रिस्पॉन्स में है (पासवर्ड से सुरक्षित अपलोड के लिए path और thumb कम समय तक चलने वाले साइन किए गए लिंक होते हैं)। अभी "एक अपलोड लाने" का कोई अलग एंडपॉइंट नहीं है, इसलिए बाद में किसी फ़ाइल का id खोजने का तरीका भी यही लिस्ट है।

DELETE /api/{id} - अपलोड डिलीट करें

ऑथेंटिकेट किए गए खाते का एक अपलोड हमेशा के लिए डिलीट करता है। इसे API से वापस नहीं किया जा सकता। {id} वही मान है जो अपलोड या लिस्ट एंडपॉइंट id के रूप में लौटाते हैं।

रिस्पॉन्स - 200 OK:

{ "type": "success", "msg": "Deleted." }

आपके खाते में उस id का कोई अपलोड न हो तो 404 (या तो वह कभी आपका था ही नहीं, या पहले ही डिलीट हो चुका है)।

रेट लिमिट

हर API की के अपने अलग प्रति-मिनट और प्रति-दिन कोटा हैं, साथ में प्रति-IP एक बड़ी दैनिक सीमा भी है, ताकि एक IP कई कीज़ घुमाकर इस्तेमाल न कर सके। अपलोड, लिस्ट और डिलीट की सीमाएं साझा हैं।

अवधिडिफ़ॉल्ट सीमादायरा
प्रति मिनट20 रिक्वेस्टप्रति API की
प्रति दिन500 रिक्वेस्टप्रति पूरी API की
प्रति दिन2,000 रिक्वेस्टप्रति Upload-only की (वे प्लगइन जो पूरी मीडिया लाइब्रेरी ऑफ़लोड करते हैं)
प्रति दिन2,000 रिक्वेस्टप्रति IP एड्रेस
प्रति मिनट300 टुकड़ेप्रति API की, सिर्फ़ POST /api/chunk

ये सीमाएं बदल सकती हैं। हर रिस्पॉन्स में मानक रेट-लिमिट हेडर होते हैं:

X-RateLimit-Limit: 20
X-RateLimit-Remaining: 14

सीमा पार होने पर 429 लौटता है, साथ में Retry-After हेडर बताता है कि कितने सेकंड रुकना है।

एरर

हर एरर रिस्पॉन्स का ढाँचा एक जैसा होता है, चाहे एंडपॉइंट या कारण कुछ भी हो:

{ "type": "error", "errors": "A human-readable description of what went wrong." }
स्टेटसमतलब
401API की नहीं दी गई या अमान्य है।
403खाते या आपके मौजूदा IP को अपलोड करने से बैन किया गया है।
404इस खाते में उस id का कोई अपलोड नहीं मिला (देखना, बदलना, डिलीट करना)।
413रिक्वेस्ट 100MB से बड़ी है। फ़ाइल को टुकड़ों में भेजें (POST /api/chunk) या उसका लिंक url में दें ( 200MB तक)।
422वैलिडेशन विफल - कोई फ़ाइल या लिंक नहीं दिया गया, असमर्थित फ़ाइल प्रकार, न पढ़ा जा सकने वाला इमेज डेटा, 30000x30000px की सीमा से बड़े आयाम, 200MB से बड़ी फ़ाइल, अधूरा या एक्सपायर हो चुका upload_id, या ऐसा url जो डाउनलोड नहीं हो सका (संदेश में कारण बताया जाता है)।
429रेट लिमिट पार हो गई - ऊपर रेट लिमिट देखें।
500सर्वर साइड पर कुछ अनपेक्षित रूप से विफल हुआ। दोबारा कोशिश करना सुरक्षित है।

क्लाइंट लाइब्रेरी

आधिकारिक SDK जो ऊपर के एंडपॉइंट को टाइप्ड नतीजों के साथ लपेटते हैं और कच्चे HTTP की जगह API एरर पर एरर उठाते हैं।

JavaScript / TypeScript

कोई डिपेंडेंसी नहीं, Node.js और ब्राउज़र दोनों में चलता है। JSR पर भी @yourimageshare/yourimageshare नाम से - npx jsr add @yourimageshare/yourimageshare - वही सोर्स, सीधे TypeScript में प्रकाशित।

npm install yourimageshare

Python

एक डिपेंडेंसी (requests), Python 3.8+।

pip install yourimageshare

PHP

कोई Composer डिपेंडेंसी नहीं (PHP का अपना curl एक्सटेंशन इस्तेमाल करता है), PHP 7.4+। सोर्स GitHub पर।

composer require yourimageshare/yourimageshare-php

Go

कोई डिपेंडेंसी नहीं (सिर्फ़ स्टैंडर्ड लाइब्रेरी), Go 1.18+। पूरे रेफ़रेंस दस्तावेज़ के लिए pkg.go.dev देखें।

go get github.com/yourimageshare/yourimageshare/go

Rust

दो डिपेंडेंसी (ब्लॉकिंग HTTP के लिए ureq - कोई async रनटाइम नहीं जुड़ता - और serde), Rust 1.70+। सोर्स GitHub पर।

cargo add yourimageshare

Ruby

कोई gem डिपेंडेंसी नहीं (stdlib Net::HTTP + json), Ruby 2.7+। सोर्स GitHub पर।

gem install yourimageshare

.NET

एक डिपेंडेंसी (Microsoft का अपना System.Text.Json), netstandard2.0 को टारगेट करता है, इसलिए .NET Framework और आधुनिक .NET दोनों में चलता है। सोर्स GitHub पर। इस लाइव API के विरुद्ध बनाया और जाँचा गया; NuGet पर जल्द प्रकाशित होगा।

dotnet add package YourImageShare

Dart / Flutter

एक डिपेंडेंसी (http, Dart टीम का अपना पैकेज), Dart 2.17+। सोर्स GitHub पर। इस लाइव API के विरुद्ध बनाया और जाँचा गया; pub.dev पर जल्द प्रकाशित होगा।

dart pub add yourimageshare

Elixir

एक डिपेंडेंसी (Req), Elixir 1.14+। {:ok, result}| {:error, reason} टैग्ड ट्यूपल लौटाता है - बाकी सभी SDK में इस API की एरर हैंडलिंग का सीधा समकक्ष - साथ में bang वैरिएंट जो एरर उठाते हैं। सोर्स GitHub पर, दस्तावेज़ HexDocs पर।

{:yourimageshare, "~> 1.1"}

MCP Server

AI कोडिंग एजेंट के लिए (Claude Code, Cursor और अन्य MCP-संगत टूल) - स्क्रीनशॉट को बग रिपोर्ट, PR विवरण या सपोर्ट थ्रेड में base64 ब्लॉब या मैनुअल अपलोड की जगह असली URL के रूप में डालें। Claude Desktop और किसी भी अन्य MCP क्लाइंट के साथ भी इसी तरह काम करता है। इंस्टॉल किए बिना सीधे npx से चलाएं:

npx yourimageshare-mcp

टूल: upload_image (लोकल फ़ाइल, इनलाइन कंटेंट या लिंक, 200MB तक, वैकल्पिक visibility, title और ऑटो-डिलीट के साथ), list_uploads, get_upload, update_upload और delete_upload।

यह आधिकारिक MCP Registry में (io.github.yourimageshare/yourimageshare नाम से) और Smithery व Glama पर भी लिस्टेड है, अगर आपका MCP क्लाइंट इनमें से किसी से इंस्टॉल करता है।

MCP आपके लिए नया है? पूरी सेटअप गाइड के लिए MCP के ज़रिए Claude और ChatGPT को इस API से कैसे जोड़ें देखें।

ये सभी दस MIT लाइसेंस के तहत हैं। आपकी भाषा के लिए कोई आधिकारिक लाइब्रेरी नहीं है? नीचे दिए कोड उदाहरण में API को सीधे कॉल करना दिखाया गया है।

कोड उदाहरण

curl

# Upload a file
curl "https://yourimageshare.com/api" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "uploads=@/path/to/photo.jpg"

# Upload from a link (files up to 200MB; one direct upload request stops at 100MB -
# bigger files go in pieces, see Large Files above)
curl "https://yourimageshare.com/api" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "url=https://example.com/video.mp4"

# Upload a file that auto-deletes after 1 hour
curl "https://yourimageshare.com/api" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "uploads=@/path/to/photo.jpg" \
  -F "expires_in=3600"

# List uploads
curl "https://yourimageshare.com/api" -H "X-API-Key: YOUR_API_KEY"

# Upload a file without a page of its own (file only) and give it a title
curl "https://yourimageshare.com/api" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "uploads=@/path/to/photo.jpg" \
  -F "visibility=private" \
  -F "title=Sunset"

# Look up one upload, then make it public
curl "https://yourimageshare.com/api/aB3xY9qRz1" -H "X-API-Key: YOUR_API_KEY"
curl -X PATCH "https://yourimageshare.com/api/aB3xY9qRz1" \
  -H "X-API-Key: YOUR_API_KEY" -d "visibility=public"

# Delete an upload
curl -X DELETE "https://yourimageshare.com/api/aB3xY9qRz1" -H "X-API-Key: YOUR_API_KEY"

JavaScript (fetch)

const API_KEY = 'YOUR_API_KEY';
const BASE = 'https://yourimageshare.com/api';

async function uploadFile(file) {
  const form = new FormData();
  form.append('uploads', file);

  const res = await fetch(BASE, {
    method: 'POST',
    headers: { 'X-API-Key': API_KEY },
    body: form,
  });
  const json = await res.json();
  if (json.type !== 'success') throw new Error(json.errors);
  return json.data;
}

async function listUploads(page = 1) {
  const res = await fetch(`${BASE}?page=${page}`, {
    headers: { 'X-API-Key': API_KEY },
  });
  return res.json();
}

async function deleteUpload(id) {
  const res = await fetch(`${BASE}/${id}`, {
    method: 'DELETE',
    headers: { 'X-API-Key': API_KEY },
  });
  return res.json();
}

Python (requests)

import requests

API_KEY = "YOUR_API_KEY"
BASE = "https://yourimageshare.com/api"

HEADERS = {"X-API-Key": API_KEY}

# Upload a file
with open("/path/to/photo.jpg", "rb") as f:
    res = requests.post(BASE, headers=HEADERS, files={"uploads": f})
res.raise_for_status()
upload = res.json()["data"]

# List uploads
res = requests.get(BASE, headers=HEADERS, params={"page": 1})
uploads = res.json()

# Delete an upload
res = requests.delete(f"{BASE}/{upload['id']}", headers=HEADERS)

PHP (curl)

<?php

$apiKey = 'YOUR_API_KEY';
$base = 'https://yourimageshare.com/api';

// Upload a file
$curl = curl_init($base);
curl_setopt_array($curl, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ["X-API-Key: $apiKey"],
    CURLOPT_POSTFIELDS => ['uploads' => new CURLFile('/path/to/photo.jpg')],
    CURLOPT_RETURNTRANSFER => true,
]);
$upload = json_decode(curl_exec($curl), true)['data'];
curl_close($curl);

// List uploads
$curl = curl_init("$base?page=1");
curl_setopt($curl, CURLOPT_HTTPHEADER, ["X-API-Key: $apiKey"]);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$uploads = json_decode(curl_exec($curl), true);
curl_close($curl);

Go (net/http)

ऊपर दिया गया आधिकारिक Go SDK यह सब आपके लिए संभाल लेता है - यह कच्चा वर्शन उनके लिए है जो डिपेंडेंसी नहीं जोड़ना चाहते।

package main

import (
    "bytes"
    "encoding/json"
    "io"
    "mime/multipart"
    "net/http"
    "os"
)

const apiKey = "YOUR_API_KEY"
const base = "https://yourimageshare.com/api"

func uploadFile(path string) (map[string]any, error) {
    file, err := os.Open(path)
    if err != nil {
        return nil, err
    }
    defer file.Close()

    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)
    part, _ := writer.CreateFormFile("uploads", path)
    io.Copy(part, file)
    writer.Close()

    req, _ := http.NewRequest("POST", base, body)
    req.Header.Set("Content-Type", writer.FormDataContentType())
    req.Header.Set("X-API-Key", apiKey)

    res, err := http.DefaultClient.Do(req)
    if err != nil {
        return nil, err
    }
    defer res.Body.Close()

    var result map[string]any
    json.NewDecoder(res.Body).Decode(&result)
    return result, nil
}

स्क्रीनशॉट टूल

एक ब्राउज़र एक्सटेंशन के साथ तैयार कॉन्फ़िग और स्क्रिप्ट, जो स्क्रीनशॉट सीधे YourImageShare पर भेजते हैं, मैनुअल अपलोड की ज़रूरत नहीं। हर एक ऊपर बताए गए उसी /api एंडपॉइंट से अपलोड करता है।

ब्राउज़र एक्सटेंशन (Chrome और Firefox)

Chrome और Firefox के लिए YourImageShare Capture एक्सटेंशन स्क्रिप्ट और कॉन्फ़िग फ़ाइलों की झंझट से बचाता है। यह दिखने वाले हिस्से, ड्रैग करके चुने गए क्षेत्र, या पूरे स्क्रॉल होने वाले पेज को कैप्चर करता है, तीर, टेक्स्ट, ब्लर/रिडैक्ट और अन्य एनोटेशन के लिए बिल्ट-इन एडिटर खोलता है, फिर नतीजा डाउनलोड करता है, आपके क्लिपबोर्ड पर कॉपी करता है, या एक क्लिक में सीधे YourImageShare पर पब्लिश करता है। पब्लिश करने में ऊपर बताया वही /api एंडपॉइंट इस्तेमाल होता है - एक्सटेंशन की Settings में अपनी API की एक बार जोड़ दें, फिर हर पब्लिश पर तुरंत शेयर करने लायक लिंक मिलता है। डेस्कटॉप Chrome (और अन्य Chromium ब्राउज़र), डेस्कटॉप Firefox और Android के लिए Firefox में काम करता है।

Firefox के लिए YourImageShare Capture पाएं Chrome के लिए YourImageShare Capture पाएं

ShareX

नीचे दिया कस्टम अपलोडर डाउनलोड करें, फिर ShareX में Destinations > Custom uploader settings > Import > from file पर जाएं, डाउनलोड की गई .sxcu फ़ाइल खोलें, और Headers फ़ील्ड में YOUR_API_KEY की जगह अपनी असली की डालें। इसे अपनी इमेज/फ़ाइल डेस्टिनेशन बनाएं और कैप्चर अपने आप अपलोड होंगे।

YourImageShare.sxcu डाउनलोड करें

डिलीट करना: ShareX में हर अपलोड का "Delete" लिंक हमारा डिलीट पेज आपके ब्राउज़र में खोलता है (अपलोड का एक बार वाला delete_url), इसलिए आप ShareX की हिस्ट्री से ही कैप्चर हटा सकते हैं। अपलोड मेरा खाता से भी डिलीट कर सकते हैं। कॉन्फ़िग अक्टूबर 2026 से पहले डाउनलोड किया था? यह सुविधा पाने के लिए इसे दोबारा डाउनलोड करें।

Flameshot (Linux)

एक छोटी शेल स्क्रिप्ट जो flameshot gui चलाती है, कैप्चर अपलोड करती है और लिंक आपके क्लिपबोर्ड पर कॉपी कर देती है। इसे अपने डेस्कटॉप एनवायरनमेंट में Flameshot के डिफ़ॉल्ट शॉर्टकट की जगह किसी कीबोर्ड शॉर्टकट से जोड़ें।

yis-flameshot-upload.sh डाउनलोड करें

# One-time setup
chmod +x yis-flameshot-upload.sh
export YIS_API_KEY="YOUR_API_KEY"   # or add to ~/.config/yourimageshare/api_key

# Then bind this to a hotkey instead of calling flameshot directly:
/path/to/yis-flameshot-upload.sh

Greenshot (Windows)

Greenshot के बिल्ट-इन External command डेस्टिनेशन के लिए एक PowerShell स्क्रिप्ट। Windows के साथ आने वाले Windows PowerShell 5.1 के साथ संगत, किसी अतिरिक्त इंस्टॉल की ज़रूरत नहीं।

yis-greenshot-upload.ps1 डाउनलोड करें

# One-time setup
setx YIS_API_KEY "YOUR_API_KEY"

# In Greenshot: Preferences > Destinations > External command > Settings
#   Command:   powershell.exe
#   Arguments: -ExecutionPolicy Bypass -File "C:\path\to\yis-greenshot-upload.ps1" "%1"

फ़ोरम प्लगइन

अपने फ़ोरम के पोस्ट एडिटर के पास एक असली "Upload Image" बटन जोड़ें। हर प्लगइन ऊपर बताए उसी /api एंडपॉइंट से अपलोड करता है और आपके कर्सर की जगह BBCode डाल देता है - अलग टैब या मैनुअल कॉपी-पेस्ट की ज़रूरत नहीं।

नीचे अपनी API की नहीं, Upload-only की इस्तेमाल करें। हर प्लगइन की को हर विज़िटर के पेज सोर्स में दिखाता है, और upload-only की (मेरा खाता > API टैब) सिर्फ़ अपलोड कर सकती है - अगर कोई उसे पेज से निकाल भी ले, तो वह आपके अपलोड की लिस्ट नहीं देख सकता और न ही उन्हें डिलीट कर सकता है।

फ़ोरम अपलोड डिफ़ॉल्ट रूप से private होते हैं: इमेज पोस्ट में काम करती है, पर YourImageShare उसका अपना कोई पेज नहीं बनाता (कोई कमेंट, रिएक्शन या विज़ापन नहीं)। हर प्लगइन में unlisted पर स्विच करने की सेटिंग है, अगर आप लिंक वाले किसी भी व्यक्ति के लिए पेज भी चाहते हैं।

phpBB

असली phpBB 3.2/3.3 एक्सटेंशन। इसे ext/ में अनज़िप करें, Customise > Manage extensions में चालू करें, फिर एक्सटेंशन की टेम्पलेट इवेंट फ़ाइल में YOUR_UPLOAD_ONLY_KEY की जगह अपनी असली upload-only की डालें।

phpBB के लिए डाउनलोड करें

SMF (Simple Machines Forum)

असली SMF पैकेज - Admin > Package Manager से इंस्टॉल करें, फिर Sources/yis_forumupload.php में YOUR_UPLOAD_ONLY_KEY की जगह अपनी असली upload-only की डालें।

SMF के लिए डाउनलोड करें

MyBB

असली MyBB 1.8 प्लगइन। इसे inc/plugins/ में कॉपी करें, Configuration > Plugins में एक्टिवेट करें, फिर प्लगइन फ़ाइल में YOUR_UPLOAD_ONLY_KEY की जगह अपनी असली upload-only की डालें।

MyBB के लिए डाउनलोड करें

FluxBB, PunBB और ZetaBoards

इनमें कोई औपचारिक प्लगइन सिस्टम नहीं है, इसलिए यह एक छोटा स्निपेट है जिसे सीधे आपके टेम्पलेट (FluxBB/PunBB) या Admin CP (ZetaBoards) में पेस्ट करना होता है - हर एक के लिए पूरे कॉपी-पेस्ट निर्देश:

FluxBB निर्देश PunBB निर्देश ZetaBoards निर्देश

WordPress प्लगइन

अपनी मीडिया लाइब्रेरी को लोकल डिस्क की जगह YourImageShare पर ऑफ़लोड करें। नई इमेज/वीडियो अपलोड अपने आप ऊपर बताए उसी /api एंडपॉइंट से जाते हैं, अपलोड कन्फ़र्म होते ही लोकल फ़ाइल (और बनाए गए हर थंबनेल साइज़) डिलीट हो जाती है, और हर WordPress अटैचमेंट URL - ब्लॉक एडिटर, फ़ीचर्ड इमेज, गैलरी, REST API - YourImageShare पर होस्ट की गई फ़ाइल पर पहुँचता है। कोई शॉर्टकोड नहीं, वर्कफ़्लो में कोई बदलाव नहीं।

  • मौजूदा मीडिया लाइब्रेरी को बैकग्राउंड में (या wp yis offload --all से) बल्क में ऑफ़लोड करें, सिर्फ़ नए अपलोड नहीं
  • पोस्ट में पहले से लगी इमेज और वीडियो, लोकल फ़ाइलें हटने के बाद भी काम करते रहते हैं
  • थंबनेल और srcset हमारे 280px थंबनेल का इस्तेमाल करते हैं, इसलिए छोटी इमेज जगहों पर पूरे साइज़ की फ़ाइलें लोड नहीं होतीं
  • 200MB तक की फ़ाइलें, टुकड़ों में भेजी जाती हैं ताकि बड़े वीडियो शेयर्ड होस्ट पर बोझ न बनें
  • ऑफ़लोड की गई किसी भी फ़ाइल को कभी भी वापस लोकल स्टोरेज में रिस्टोर करें
  • मीडिया लाइब्रेरी का एक कॉलम दिखाता है कि क्या ऑफ़लोड हो चुका है और क्या अभी लोकल है
  • ऑफ़लोड की गई फ़ाइलें private के रूप में सेव होती हैं: वे आपकी साइट पर जहाँ भी इस्तेमाल हों वहाँ लोड होती हैं, पर YourImageShare पर उनका अपना कोई पेज नहीं बनता

आपकी API की नहीं, Upload-only की इस्तेमाल होती है। वैकल्पिक पूरी API की तभी चाहिए जब आप चाहें कि WordPress में डिलीट करने पर ऑफ़लोड की गई फ़ाइलें YourImageShare से भी डिलीट हो जाएं।

WordPress.org पर पाएं ZIP डाउनलोड करें

WordPress में: Plugins > Add New पर जाएं, YourImageShare Media Offload खोजें, फिर Install और Activate करें।

ब्लॉग से

आज़माने के लिए तैयार हैं?

अपनी API की पाएं →