API دستاویزات

YourImageShare API کے ذریعے آپ پروگرام کے ذریعے فائلیں اپ لوڈ، لسٹ اور ڈیلیٹ کر سکتے ہیں۔ یہ ایک چھوٹی JSON/REST API ہے - کسی SDK کی ضرورت نہیں، بس ایک HTTP کلائنٹ اور API key چاہیے - سرکاری JavaScript، Python اور MCP لائبریریاں بھی دستیاب ہیں۔

تمام کلائنٹ لائبریریاں اور نیچے دیے گئے ٹولز اوپن سورس ہیں۔ ہماری سرکاری GitHub ریپوزٹری github.com/yourimageshare/yourimageshare پر کوڈ دیکھیں، مسائل رپورٹ کریں یا حصہ ڈالیں۔

بیس URL: https://yourimageshare.com/api · فارمیٹ: آنے اور جانے والا ڈیٹا JSON، سوائے اپ لوڈز کے جو multipart/form-data ہوتے ہیں · تصدیق: ہر ریکویسٹ پر API key۔ · مشین کے پڑھنے کے قابل اسپیک: /openapi.json (OpenAPI 3.1)، ان ایجنٹس اور کوڈ جنریشن ٹولز کے لیے جو اس صفحے کو پارس نہیں کرنا چاہتے۔

API key حاصل کرنا

سائن ان کریں، میرا اکاؤنٹ پر جائیں اور API ٹیب کھولیں۔ آپ کی key وہاں Regenerate بٹن کے ساتھ نظر آئے گی۔ key دوبارہ بنانے سے پرانی key فوراً ختم ہو جاتی ہے، اس لیے بٹن دبانے سے پہلے جہاں جہاں وہ استعمال ہو رہی ہے وہاں اپ ڈیٹ کر لیں۔

اسی ٹیب میں ایک دوسری، الگ صرف اپ لوڈ والی key بھی ہے - اسے کب استعمال کرنا ہے، اس کے لیے نیچے دی گئی ٹپ اور فورم پلگ انز دیکھیں۔

تصدیق

اپنی key ہیڈر کے طور پر بھیجیں - یہی بہتر ہے، کیونکہ کوئری اسٹرنگز اکثر ایکسیس لاگز، پراکسی لاگز اور Referer ہیڈرز میں پہنچ جاتی ہیں:

X-API-Key: YOUR_API_KEY

?key= کوئری پیرامیٹر بھی کام کرتا ہے، جو پرانے انٹیگریشنز اور فوری curl کمانڈز کے لیے رکھا گیا ہے۔ اگر دونوں موجود ہوں تو ہیڈر کو ترجیح ملتی ہے۔

?key=YOUR_API_KEY

ٹپ: اپنی key کو پاس ورڈ کی طرح رکھیں - جس کے پاس بھی ہو وہ آپ کے اکاؤنٹ پر اپ لوڈ، لسٹ، تبدیلی اور ڈیلیٹ کر سکتا ہے۔ ہر کامیاب ریکویسٹ لاگ ہوتی ہے اور آپ کے اکاؤنٹ پیج کے API ٹیب پر دن اور ریکویسٹ کی قسم کے لحاظ سے چارٹ میں نظر آتی ہے۔ اگر key کو ایسی جگہ رکھنا ہو جہاں دوسرے لوگ دیکھ سکیں - جیسے فورم پلگ ان یا پبلک کنفیگ فائل - تو اسی ٹیب سے صرف اپ لوڈ والی 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 key کے بغیر یہ اپ لوڈ ڈیلیٹ کر دیتا ہے۔ صرف ایک بار دکھایا جاتا ہے (صرف ہیش محفوظ ہوتا ہے) - ضرورت ہو تو سنبھال کر رکھیں۔
expires_atISO 8601 ٹائم اسٹیمپ جب یہ اپ لوڈ خود بخود ڈیلیٹ ہو جائے گا، یا ختم نہ ہونے کی صورت میں null۔
duplicatetrue اگر آپ کا اکاؤنٹ بالکل یہی فائل پہلے اپ لوڈ کر چکا تھا: وہی اپ لوڈ واپس کیا جاتا ہے اور کچھ نیا محفوظ نہیں ہوتا۔ ختم ہونے والے اپ لوڈز پر یا allow_duplicate=1 کے ساتھ لاگو نہیں ہوتا۔

ختم ہونے والے اپ لوڈز: expires_at گزرنے کے بعد فائل اسٹوریج سے ڈیلیٹ ہو جاتی ہے اور اپ لوڈ کا صفحہ تقریباً 5 منٹ کے اندر 410 Gone دینے لگتا ہے۔ اسے بعد میں واپس یا بڑھایا نہیں جا سکتا - جلد ہٹانا ہو تو DELETE اینڈ پوائنٹ سے پہلے ہی ڈیلیٹ کر دیں، یا زیادہ دیر رکھنا ہو تو نئے expires_in کے ساتھ دوبارہ اپ لوڈ کریں۔

POST /api/chunk - بڑی فائلیں

ایک ریکویسٹ زیادہ سے زیادہ 100MB لے جا سکتی ہے۔ بڑی فائلوں ( 200MB تک) کے لیے، یا سست کنکشن پر ہر ریکویسٹ چھوٹی رکھنے کے لیے، فائل کو زیادہ سے زیادہ 5MB کے حصوں میں بھیجیں، پھر POST /api سے مکمل کریں:

  1. ایک اپ لوڈ id چنیں: 32 بے ترتیب hex حروف۔
  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؛ خالی عنوان یا تفصیل اسے صاف کر دیتی ہے) اور اپ ڈیٹ شدہ اپ لوڈ واپس کرتا ہے۔ دونوں کے لیے مکمل API key ضروری ہے؛ آپ کے اکاؤنٹ پر ایسا اپ لوڈ نہ ہو تو 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 key ضروری ہے؛ آپ کے اکاؤنٹ پر ایسا اپ لوڈ نہ ہو تو 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 key کا فی منٹ اور فی دن کا الگ کوٹا ہوتا ہے، اس کے علاوہ فی IP روزانہ کی ایک موٹی حد بھی ہے تاکہ ایک IP کئی keys استعمال نہ کر سکے۔ اپ لوڈز، لسٹس اور ڈیلیٹس ایک ہی لمٹس شیئر کرتے ہیں۔

مدتڈیفالٹ حددائرہ
فی منٹ20 ریکویسٹسفی API key
فی دن500 ریکویسٹسفی مکمل API key
فی دن2,000 ریکویسٹسفی صرف اپ لوڈ والی key (وہ پلگ انز جو پوری میڈیا لائبریریاں منتقل کرتے ہیں)
فی دن2,000 ریکویسٹسفی IP ایڈریس
فی منٹ300 حصےفی API key، صرف 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 key غائب یا غلط ہے۔
403اکاؤنٹ یا آپ کا موجودہ IP اپ لوڈ کرنے سے بین ہے۔
404اس اکاؤنٹ پر اس id کا کوئی اپ لوڈ نہیں ملا (تلاش، تبدیلی، ڈیلیٹ)۔
413ریکویسٹ 100MB سے بڑی ہے۔ فائل حصوں میں بھیجیں (POST /api/chunk) یا اس کی جگہ url میں اس کا لنک دیں (200MB تک)۔
422ویلیڈیشن ناکام - کوئی فائل یا لنک نہیں دیا گیا، غیر معاون فائل کی قسم، ناقابلِ مطالعہ تصویری ڈیٹا، 30000x30000px کی حد سے زیادہ ڈائمینشنز، 200MB سے بڑی فائل، نامکمل یا ختم شدہ upload_id، یا ایسا url جو ڈاؤن لوڈ نہ ہو سکا (پیغام وجہ بتاتا ہے)۔
429ریٹ لمٹ پار ہو گئی - اوپر ریٹ لمٹس دیکھیں۔
500سرور کی طرف سے کچھ غیر متوقع طور پر ناکام ہوا۔ دوبارہ کوشش کرنا محفوظ ہے۔

کلائنٹ لائبریریاں

سرکاری SDKs جو اوپر کے اینڈ پوائنٹس کو ٹائپڈ نتائج کے ساتھ لپیٹتے ہیں اور خام 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 سرور

AI کوڈنگ ایجنٹس (Claude Code، Cursor اور دوسرے MCP-مطابقت والے ٹولز) کے لیے - بگ رپورٹ، PR کی تفصیل یا سپورٹ تھریڈ میں اسکرین شاٹ base64 بلاب یا دستی اپ لوڈ کی بجائے اصل URL کے طور پر لگائیں۔ Claude Desktop اور کسی بھی دوسرے MCP کلائنٹ کے ساتھ بھی اسی طرح کام کرتا ہے۔ npx سے براہِ راست چلائیں، انسٹال کا کوئی مرحلہ نہیں:

npx yourimageshare-mcp

ٹولز: upload_image (لوکل فائل، ان لائن مواد یا لنک، 200MB تک، اختیاری visibility، عنوان اور خودکار ڈیلیٹ کے ساتھ)، list_uploads، get_upload، update_upload اور delete_upload۔

سرکاری MCP رجسٹری میں بھی (بطور io.github.yourimageshare/yourimageshare) اور Smithery اور Glama پر لسٹ ہے، اگر آپ کا MCP کلائنٹ انہی میں سے کسی سے انسٹال کرتا ہے۔

MCP میں نئے ہیں؟ مکمل سیٹ اپ گائیڈ کے لیے Claude اور ChatGPT کو MCP کے ذریعے اس 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 اینڈ پوائنٹ سے ہوتا ہے - ایکسٹینشن کی سیٹنگز میں ایک بار اپنی API key ڈالیں اور اس کے بعد ہر پبلش فوراً شیئر کرنے کے قابل لنک واپس کرتا ہے۔ ڈیسک ٹاپ 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 کی جگہ اپنی اصل 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"

فورم پلگ انز

اپنے فورم کے پوسٹ ایڈیٹر کے ساتھ ایک اصلی "تصویر اپ لوڈ" بٹن شامل کریں۔ ہر ایک اوپر بیان کیے گئے اسی /api اینڈ پوائنٹ سے اپ لوڈ کرتا ہے اور آپ کے کرسر پر BBCode ڈال دیتا ہے - الگ ٹیب نہیں، دستی کاپی پیسٹ نہیں۔

نیچے اپنی API key نہیں، اپنی صرف اپ لوڈ والی key استعمال کریں۔ ہر پلگ ان key کو ہر وزیٹر کے صفحے کے سورس میں دکھاتا ہے، اور صرف اپ لوڈ والی key (میرا اکاؤنٹ > API ٹیب) صرف اپ لوڈ کر سکتی ہے - اگر کوئی اسے صفحے سے نکال بھی لے تو وہ آپ کے اپ لوڈز کی لسٹ نہیں دیکھ سکتا اور انہیں ڈیلیٹ نہیں کر سکتا۔

فورم اپ لوڈز ڈیفالٹ طور پر private ہوتے ہیں: تصویر پوسٹ میں کام کرتی ہے، لیکن YourImageShare اسے اپنا کوئی صفحہ نہیں دیتا (کوئی تبصرے، ری ایکشنز یا اشتہارات نہیں)۔ ہر پلگ ان میں unlisted پر جانے کی سیٹنگ ہے اگر آپ لنک رکھنے والے ہر شخص کے لیے صفحہ بھی چاہتے ہیں۔

phpBB

ایک اصلی phpBB 3.2/3.3 ایکسٹینشن۔ ext/ میں ان زپ کریں، Customise > Manage extensions کے تحت اسے فعال کریں، پھر ایکسٹینشن کی ٹیمپلیٹ ایونٹ فائل میں YOUR_UPLOAD_ONLY_KEY کی جگہ اپنی اصل صرف اپ لوڈ والی key ڈالیں۔

phpBB کے لیے ڈاؤن لوڈ کریں

SMF (Simple Machines Forum)

ایک اصلی SMF پیکج - Admin > Package Manager سے انسٹال کریں، پھر Sources/yis_forumupload.php میں YOUR_UPLOAD_ONLY_KEY کی جگہ اپنی اصل صرف اپ لوڈ والی key ڈالیں۔

SMF کے لیے ڈاؤن لوڈ کریں

MyBB

ایک اصلی MyBB 1.8 پلگ ان۔ inc/plugins/ میں کاپی کریں، Configuration > Plugins کے تحت فعال کریں، پھر پلگ ان فائل میں YOUR_UPLOAD_ONLY_KEY کی جگہ اپنی اصل صرف اپ لوڈ والی key ڈالیں۔

MyBB کے لیے ڈاؤن لوڈ کریں

FluxBB، PunBB اور ZetaBoards

ان میں باقاعدہ پلگ ان سسٹم نہیں ہے، اس لیے یہ ایک چھوٹا اسنیپٹ ہے جو سیدھا آپ کی ٹیمپلیٹ (FluxBB/PunBB) یا ایڈمن CP (ZetaBoards) میں پیسٹ کیا جاتا ہے - ہر ایک کے لیے مکمل کاپی پیسٹ ہدایات:

FluxBB ہدایات PunBB ہدایات ZetaBoards ہدایات

WordPress پلگ ان

اپنی میڈیا لائبریری کو لوکل ڈسک کی بجائے YourImageShare پر منتقل کریں۔ نئی تصویر/ویڈیو اپ لوڈز خود بخود اوپر بیان کیے گئے اسی /api اینڈ پوائنٹ سے جاتی ہیں، اپ لوڈ کی تصدیق ہوتے ہی لوکل فائل (اور ہر بنایا گیا تھمب نیل سائز) ڈیلیٹ ہو جاتا ہے، اور WordPress کا ہر اٹیچمنٹ URL - بلاک ایڈیٹر، فیچرڈ امیجز، گیلریز، REST API - YourImageShare پر ہوسٹ کی گئی فائل پر پہنچتا ہے۔ کوئی شارٹ کوڈ نہیں، ورک فلو میں کوئی تبدیلی نہیں۔

  • موجودہ میڈیا لائبریری کو بیک گراؤنڈ میں (یا wp yis offload --all سے) بلک میں منتقل کریں، صرف نئے اپ لوڈز ہی نہیں
  • پوسٹس میں پہلے سے لگی تصاویر اور ویڈیوز لوکل فائلیں ہٹنے کے بعد بھی کام کرتی رہتی ہیں
  • تھمب نیلز اور srcset ہمارا 280px تھمب نیل استعمال کرتے ہیں، تاکہ چھوٹی تصویری جگہوں پر پورے سائز کی فائلیں لوڈ نہ ہوں
  • 200MB تک کی فائلیں، حصوں میں بھیجی جاتی ہیں تاکہ بڑی ویڈیوز شیئرڈ ہوسٹ پر بوجھ نہ بنیں
  • کسی بھی منتقل شدہ فائل کو کسی بھی وقت واپس لوکل اسٹوریج میں بحال کریں
  • میڈیا لائبریری کا ایک کالم دکھاتا ہے کہ کیا منتقل ہو چکا ہے اور کیا ابھی لوکل ہے
  • منتقل شدہ فائلیں private کے طور پر محفوظ ہوتی ہیں: وہ آپ کی سائٹ پر جہاں بھی استعمال ہوں لوڈ ہوتی ہیں، لیکن YourImageShare پر ان کا اپنا کوئی صفحہ نہیں ہوتا

آپ کی صرف اپ لوڈ والی key استعمال کرتا ہے، API key نہیں۔ اختیاری مکمل API key صرف تب چاہیے جب آپ چاہتے ہوں کہ WordPress میں ڈیلیٹ کرنے پر منتقل شدہ فائلیں YourImageShare سے بھی ڈیلیٹ ہوں۔

WordPress.org سے حاصل کریں ZIP ڈاؤن لوڈ کریں

WordPress میں: Plugins > Add New پر جائیں، YourImageShare Media Offload تلاش کریں، پھر Install اور Activate کریں۔

بلاگ سے

آزمانے کے لیے تیار ہیں؟

اپنی API key حاصل کریں ←