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 - فائل اپ لوڈ کریں
تصدیق شدہ اکاؤنٹ کے لیے ایک فائل اپ لوڈ کرتا ہے۔
| فیلڈ | قسم | ضروری | تفصیل |
|---|---|---|---|
uploads | file | ان تینوں میں سے ایک | اپ لوڈ کی جانے والی فائل، 100MB تک (ہمارے نیٹ ورک سے ایک ریکویسٹ کی حد)۔ ہر ریکویسٹ میں ایک فائل - یہ اینڈ پوائنٹ ایک ساتھ کئی فائلیں اپ لوڈ نہیں کرتا۔ |
url | string | کسی تصویر یا ویڈیو کا پبلک http(s) لنک۔ ہم اسے خود ڈاؤن لوڈ کرتے ہیں، اس لیے 200MB تک کی فائلیں چلتی ہیں۔ | |
upload_id | string | وہ فائل جو پہلے POST /api/chunk پر حصوں میں بھیجی گئی ہو، 200MB تک۔ | |
filename | string | نہیں | upload_id کے ساتھ: فائل کا اصل نام۔ |
expires_in | integer | نہیں | اتنے سیکنڈ بعد یہ اپ لوڈ خود بخود ڈیلیٹ ہو جائے گا (60 سے 31,536,000، یعنی 1 منٹ سے 1 سال)۔ عام، مستقل اپ لوڈ کے لیے چھوڑ دیں۔ |
allow_duplicate | boolean | نہیں | نئی کاپی محفوظ کریں چاہے آپ کا اکاؤنٹ بالکل یہی فائل پہلے اپ لوڈ کر چکا ہو (نیچے duplicate دیکھیں)۔ |
keep_original | boolean | نہیں | تصویر کو بالکل ویسا ہی رکھیں جیسی اپ لوڈ کی گئی۔ اس کے بغیر 1 MB سے بڑی JPG/PNG فائلیں WebP میں آپٹمائز ہو جاتی ہیں۔ GPS جیسا میٹا ڈیٹا دونوں صورتوں میں ہٹا دیا جاتا ہے۔ |
visibility | string | نہیں | unlisted (ڈیفالٹ): فائل اور اس کا صفحہ لنک رکھنے والے ہر شخص کے لیے کام کرتے ہیں، لیکن کہیں لسٹ نہیں ہوتے۔ private: صرف فائل - صفحے کا لنک آپ کے سوا سب کو سیدھا فائل پر بھیج دیتا ہے (کوئی تبصرے، ری ایکشنز یا اشتہارات نہیں)۔ public: سائٹ پر لسٹ ہوتا ہے اور انڈیکس ہو سکتا ہے۔ |
title | string | نہیں | 90 حروف تک، اپ لوڈ کے صفحے پر دکھایا جاتا ہے۔ |
description | string | نہیں | 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 | فائل کی منفرد شناخت۔ |
type | image یا video۔ |
path | فائل کا اسٹوریج URL جیسا اپ لوڈ ہوا۔ فائل کے تبدیل (WebP/MP4) ہونے پر یہ جلد بدل سکتا ہے، اس لیے path نہیں، src محفوظ کریں۔ |
src | مستقل ڈائریکٹ فائل URL - ہمیشہ موجودہ فائل کھولتا ہے، <img>/<video> کے src اور محفوظ کرنے کے لیے موزوں۔ |
direct | YourImageShare پر فائل کا صفحہ (عنوان، تفصیل، تبصرے، شیئر آپشنز)۔ |
thumb | 280px چوڑا WebP تھمب نیل (ویڈیو کے لیے اس کا پہلا فریم)، یا null۔ |
width, height | پکسلز میں ڈسپلے سائز (سیدھا؛ ویڈیو کا فریم سائز)، یا نامعلوم ہو تو null۔ |
size | محفوظ شدہ فائل کا سائز بائٹس میں۔ |
locked | اپ لوڈ پاس ورڈ سے محفوظ ہو تو true۔ |
visibility | private، unlisted یا public (اوپر ریکویسٹ فیلڈ دیکھیں)۔ |
title, description | جیسا سیٹ کیا گیا، یا null۔ متن ویب سائٹ کی طرح ہی ماڈریشن سے گزرتا ہے۔ |
delete_url | صرف نئے اپ لوڈز کے لیے: ایک نجی لنک جو API key کے بغیر یہ اپ لوڈ ڈیلیٹ کر دیتا ہے۔ صرف ایک بار دکھایا جاتا ہے (صرف ہیش محفوظ ہوتا ہے) - ضرورت ہو تو سنبھال کر رکھیں۔ |
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 سے مکمل کریں:
- ایک اپ لوڈ id چنیں: 32 بے ترتیب hex حروف۔
- ہر حصے کے لیے
POST /api/chunk(multipart/form-data) کریں جس میںupload_id،index(0 سے شروع)،total(حصوں کی تعداد) اورchunkمیں بائٹس ہوں۔ جواب{"type": "success", "chunk_size": 5242880}ہوتا ہے۔ 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۔
| پیرامیٹر | کہاں | ضروری | تفصیل |
|---|---|---|---|
page | query | نہیں | صفحہ نمبر، ڈیفالٹ 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." }
| اسٹیٹس | مطلب |
|---|---|
| 401 | API 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 ڈالیں۔
SMF (Simple Machines Forum)
ایک اصلی SMF پیکج - Admin > Package Manager سے انسٹال کریں،
پھر Sources/yis_forumupload.php میں YOUR_UPLOAD_ONLY_KEY کی جگہ
اپنی اصل صرف اپ لوڈ والی key ڈالیں۔
MyBB
ایک اصلی MyBB 1.8 پلگ ان۔ inc/plugins/ میں کاپی کریں، Configuration > Plugins کے تحت فعال کریں، پھر پلگ ان فائل میں YOUR_UPLOAD_ONLY_KEY کی جگہ اپنی اصل صرف اپ لوڈ والی
key ڈالیں۔
FluxBB، PunBB اور ZetaBoards
ان میں باقاعدہ پلگ ان سسٹم نہیں ہے، اس لیے یہ ایک چھوٹا اسنیپٹ ہے جو سیدھا آپ کی ٹیمپلیٹ (FluxBB/PunBB) یا ایڈمن CP (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 کریں۔
بلاگ سے
ڈویلپرز کے لیے گائیڈز اور واک تھروز
- ShareX، Flameshot یا Greenshot سے اسکرین شاٹس فوراً اپ لوڈ کریں
- اپنے phpBB، SMF یا MyBB فورم میں اصلی تصویر اپ لوڈ بٹن شامل کریں
- MCP کیسے استعمال کریں: Claude، ChatGPT اور AI ایجنٹس کو YourImageShare سے جوڑیں
- YourImageShare Capture: Chrome اور Firefox کے لیے اسکرین شاٹ ایکسٹینشن
- اپنی WordPress میڈیا لائبریری کو مفت امیج ہوسٹنگ پر منتقل کریں
آزمانے کے لیے تیار ہیں؟
اپنی API key حاصل کریں ←