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

পুরোনো ইন্টিগ্রেশন ও দ্রুত এককালীন curl কমান্ডের সুবিধার জন্য ?key= কুয়েরি প্যারামিটারও কাজ করে। দুটোই থাকলে হেডার প্রাধান্য পায়।

?key=YOUR_API_KEY

টিপ: কীটিকে পাসওয়ার্ডের মতো গোপন রাখুন - এটি যার কাছে আছে সে আপনার অ্যাকাউন্টে আপলোড, তালিকা দেখা, পরিবর্তন ও মুছে ফেলা করতে পারবে। প্রতিটি সফল অনুরোধ লগ হয় এবং আপনার অ্যাকাউন্ট পেজের API ট্যাবে দিন ও অনুরোধের ধরন অনুযায়ী চার্টে দেখা যায়। কীটি যদি এমন কোথাও রাখতে হয় যেখানে অন্যরা দেখতে পারে - যেমন ফোরাম প্লাগইন বা পাবলিক কনফিগ ফাইল - তাহলে একই ট্যাবের Upload-only key ব্যবহার করুন: এটি দিয়ে শুধু আপলোড করা যায় - তালিকা দেখা, খুঁজে বের করা, পরিবর্তন ও মুছে ফেলা সবই 401 দিয়ে প্রত্যাখ্যাত হয়।

এন্ডপয়েন্ট

আপলোড, তালিকা ও মুছে ফেলার অথেনটিকেশন এবং রেট লিমিট একই; বড় ফাইল আগে টুকরো করে পাঠানো যায়।

POST /api - ফাইল আপলোড

অথেনটিকেটেড অ্যাকাউন্টের জন্য একটি ফাইল আপলোড করে।

ফিল্ডটাইপআবশ্যকবিবরণ
uploadsfileএই তিনটির একটিআপলোড করার ফাইল, ১০০MB পর্যন্ত (আমাদের নেটওয়ার্কের মধ্য দিয়ে একটি অনুরোধের সীমা)। প্রতি অনুরোধে একটি ফাইল - এই এন্ডপয়েন্টে একসঙ্গে একাধিক ফাইল আপলোড হয় না।
urlstringকোনো ছবি বা ভিডিওর পাবলিক http(s) লিংক। আমরা নিজেরাই ডাউনলোড করি, তাই 200MB পর্যন্ত ফাইল চলে।
upload_idstringআগে POST /api/chunk-এ টুকরো করে পাঠানো ফাইল, 200MB পর্যন্ত।
filenamestringনাupload_id-এর সঙ্গে: ফাইলের আসল নাম।
expires_inintegerনাএতগুলো সেকেন্ড পরে এই আপলোড নিজে থেকে মুছে যাবে (৬০ থেকে ৩১,৫৩৬,০০০, অর্থাৎ ১ মিনিট থেকে ১ বছর)। সাধারণ স্থায়ী আপলোডের জন্য বাদ দিন।
allow_duplicatebooleanনাআপনার অ্যাকাউন্ট একই ফাইল আগেই আপলোড করে থাকলেও নতুন কপি সংরক্ষণ করুন (নিচে duplicate দেখুন)।
keep_originalbooleanনাছবি যেমন আপলোড করেছেন ঠিক তেমনই রাখুন। এটি না দিলে ১ MB-এর বড় JPG/PNG ফাইল WebP-তে অপ্টিমাইজ হয়। GPS-এর মতো মেটাডেটা দুই ক্ষেত্রেই মুছে ফেলা হয়।
visibilitystringনাunlisted (ডিফল্ট): লিংক থাকলে যে কেউ ফাইল ও এর পেজ দেখতে পারবে, কিন্তু কোথাও তালিকাভুক্ত হবে না। private: শুধু ফাইল - পেজের লিংকে গেলে আপনি ছাড়া সবাই সরাসরি ফাইলে চলে যাবে (কমেন্ট, রিঅ্যাকশন বা বিজ্ঞাপন নেই)। public: সাইটে তালিকাভুক্ত এবং সার্চ ইঞ্জিনে ইনডেক্সযোগ্য।
titlestringনা৯০ অক্ষর পর্যন্ত, আপলোডের পেজে দেখানো হয়।
descriptionstringনা৫০০ অক্ষর পর্যন্ত।

গ্রহণযোগ্য ধরন: ছবি: 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-এ ফাইলের পেজ (শিরোনাম, বিবরণ, কমেন্ট, শেয়ার অপশন)।
thumb২৮০px চওড়া WebP থাম্বনেইল (ভিডিওর ক্ষেত্রে প্রথম ফ্রেম), অথবা null।
width, heightপিক্সেলে প্রদর্শনের আকার (সোজা করা; ভিডিওর ফ্রেমের আকার), অজানা হলে null।
sizeসংরক্ষিত ফাইলের আকার, বাইটে।
lockedআপলোড পাসওয়ার্ড-সুরক্ষিত হলে true।
visibilityprivate, unlisted বা public (উপরের অনুরোধ ফিল্ড দেখুন)।
title, descriptionযেভাবে সেট করা হয়েছে, অথবা null। লেখা ওয়েবসাইটের মতোই মডারেশনের মধ্য দিয়ে যায়।
delete_urlশুধু নতুন আপলোডের জন্য: একটি ব্যক্তিগত লিংক, যা API কী ছাড়াই এই আপলোড মুছে দেয়। একবারই দেখানো হয় (শুধু হ্যাশ সংরক্ষিত থাকে) - দরকার হলে রেখে দিন।
expires_atISO 8601 টাইমস্ট্যাম্প, যখন এই আপলোড নিজে থেকে মুছে যাবে; মেয়াদ না থাকলে null।
duplicateআপনার অ্যাকাউন্ট একই ফাইল আগেই আপলোড করে থাকলে true: সেই আপলোডটিই ফেরত আসে, নতুন কিছু সংরক্ষিত হয় না। মেয়াদি আপলোডে বা allow_duplicate=1 দিলে এটি প্রযোজ্য নয়।

মেয়াদি আপলোড: expires_at পার হলে ফাইল স্টোরেজ থেকে মুছে যায় এবং আপলোডের পেজ প্রায় ৫ মিনিটের মধ্যে 410 Gone দিতে শুরু করে। এটি পরে ফেরানো বা বাড়ানো যায় না - আগে সরাতে চাইলে DELETE এন্ডপয়েন্ট দিয়ে আগেই মুছে ফেলুন, আর বেশি সময় রাখতে চাইলে নতুন expires_in দিয়ে আবার আপলোড করুন।

POST /api/chunk - বড় ফাইল

একটি অনুরোধে সর্বোচ্চ ১০০MB পাঠানো যায়। এর চেয়ে বড় ফাইলের জন্য ( 200MB পর্যন্ত), অথবা ধীর কানেকশনে প্রতিটি অনুরোধ ছোট রাখতে, ফাইলটি সর্বোচ্চ ৫MB-এর টুকরোয় পাঠান, তারপর POST /api দিয়ে শেষ করুন:

  1. একটি আপলোড আইডি বেছে নিন: ৩২টি র‍্যান্ডম হেক্স অক্ষর।
  2. প্রতিটি টুকরোর জন্য POST /api/chunk (multipart/form-data) করুন, সঙ্গে upload_id, index (০ থেকে শুরু), total (মোট টুকরোর সংখ্যা) এবং chunk-এ বাইটগুলো। উত্তর আসবে {"type": "success", "chunk_size": 5242880}।
  3. uploads-এর বদলে upload_id ও filename দিয়ে POST /api করুন, সঙ্গে অন্য যেকোনো আপলোড ফিল্ড। উত্তর হবে সাধারণ আপলোড উত্তর।

শেষ না হওয়া আপলোডের টুকরো ২ ঘণ্টা পরে মুছে ফেলা হয়। শুধু শেষের POST /api অনুরোধটি আপলোড রেট লিমিটে গণনা হয়।

GET /api/{id} ও PATCH /api/{id} - একটি আপলোড

GET আপনার একটি আপলোড ফেরত দেয়, নিচের তালিকার মতো একই ফিল্ডসহ। PATCH এর visibility, title বা description বদলায় (ফর্ম ফিল্ড বা JSON; খালি শিরোনাম বা বিবরণ দিলে তা মুছে যায়) এবং হালনাগাদ আপলোড ফেরত দেয়। দুটোতেই পূর্ণ 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 - ফাইল বদলানো

আপনার একটি আপলোডের ফাইল বদলে দেয়, কিন্তু এর আইডি, পেজ ও সব লিংক একই থাকে। যেকোনো অনুমোদিত ধরন চলে, এমনকি ভিন্ন ধরনও (ছবি থেকে ভিডিও হতে পারে)। নতুন ফাইলটি 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, ওয়েবসাইট বা এডিটর - যেকোনো উৎস থেকে), নতুনটি আগে, প্রতি পেজে ৫০টি।

প্যারামিটারকোথায়আবশ্যকবিবরণ
pagequeryনাপেজ নম্বর, ডিফল্ট ১।

উত্তর - 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." }

ওই আইডির কোনো আপলোড আপনার অ্যাকাউন্টে না থাকলে 404 (হয় সেটি কখনো আপনার ছিল না, নয়তো আগেই মুছে ফেলা হয়েছে)।

রেট লিমিট

প্রতিটি API কীর আলাদা প্রতি-মিনিট ও প্রতি-দিনের কোটা আছে, সঙ্গে একটি আইপি থেকে একাধিক কী ঘুরিয়ে ব্যবহার ঠেকাতে আইপি-ভিত্তিক মোটা দৈনিক সীমা। আপলোড, তালিকা ও মুছে ফেলা একই সীমা ভাগ করে।

সময়কালডিফল্ট সীমাপ্রযোজ্য
প্রতি মিনিট২০টি অনুরোধপ্রতি API কী
প্রতি দিন৫০০টি অনুরোধপ্রতি পূর্ণ API কী
প্রতি দিন২,০০০টি অনুরোধপ্রতি Upload-only কী (যেসব প্লাগইন পুরো মিডিয়া লাইব্রেরি সরিয়ে নেয়)
প্রতি দিন২,০০০টি অনুরোধপ্রতি আইপি অ্যাড্রেস
প্রতি মিনিট৩০০টি টুকরোপ্রতি 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অ্যাকাউন্ট বা আপনার বর্তমান আইপি আপলোড করা থেকে নিষিদ্ধ।
404এই অ্যাকাউন্টে ওই আইডির কোনো আপলোড পাওয়া যায়নি (দেখা, পরিবর্তন, মুছে ফেলা)।
413অনুরোধ ১০০MB ছাড়িয়েছে। ফাইলটি টুকরো করে পাঠান (POST /api/chunk) অথবা এর বদলে url-এ লিংক দিন (200MB পর্যন্ত)।
422যাচাই ব্যর্থ - ফাইল বা লিংক দেওয়া হয়নি, অসমর্থিত ফাইলের ধরন, পড়া যায় না এমন ছবির ডেটা, ৩০০০০x৩০০০০px সীমা ছাড়ানো মাত্রা, 200MB-এর বড় ফাইল, অসমাপ্ত বা মেয়াদোত্তীর্ণ upload_id, অথবা ডাউনলোড করা যায়নি এমন url (বার্তায় কারণ বলা থাকে)।
429রেট লিমিট ছাড়িয়েছে - উপরের রেট লিমিট দেখুন।
500সার্ভার-পক্ষে অপ্রত্যাশিত কিছু ব্যর্থ হয়েছে। আবার চেষ্টা করা নিরাপদ।

ক্লায়েন্ট লাইব্রেরি

অফিশিয়াল SDK, যা উপরের এন্ডপয়েন্টগুলো টাইপড ফলাফলসহ মুড়ে দেয় এবং সরাসরি HTTP সামলানোর বদলে API এরর হলে exception ছোড়ে।

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-র এরর হ্যান্ডলিংয়ের সরাসরি সমতুল্য - সঙ্গে exception ছোড়া 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 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-এর হিস্ট্রি থেকেই ক্যাপচার মুছে ফেলতে পারবেন। আমার অ্যাকাউন্ট থেকেও আপলোড মুছতে পারেন। অক্টোবর ২০২৬-এর আগে কনফিগ ডাউনলোড করে থাকলে এটি পেতে আবার ডাউনলোড করুন।

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) বা অ্যাডমিন CP-তে (ZetaBoards) পেস্ট করতে হয় - প্রতিটির সম্পূর্ণ কপি-পেস্ট নির্দেশনা:

FluxBB নির্দেশনা PunBB নির্দেশনা ZetaBoards নির্দেশনা

WordPress প্লাগইন

লোকাল ডিস্কের বদলে আপনার মিডিয়া লাইব্রেরি YourImageShare-এ সরিয়ে নিন। নতুন ছবি/ভিডিও আপলোড নিজে থেকেই উপরে বর্ণিত একই /api এন্ডপয়েন্ট দিয়ে যায়, আপলোড নিশ্চিত হলে লোকাল ফাইল (এবং তৈরি হওয়া প্রতিটি থাম্বনেইল সাইজ) মুছে ফেলা হয়, আর ব্লক এডিটর, ফিচার্ড ইমেজ, গ্যালারি, REST API - প্রতিটি WordPress অ্যাটাচমেন্ট URL YourImageShare-এ হোস্ট করা ফাইলে পৌঁছায়। কোনো শর্টকোড নেই, কাজের ধরনে কোনো পরিবর্তন নেই।

  • শুধু নতুন আপলোড নয়, বিদ্যমান মিডিয়া লাইব্রেরিও ব্যাকগ্রাউন্ডে (বা wp yis offload --all দিয়ে) একসঙ্গে সরিয়ে নিন
  • পোস্টে বসানো ছবি ও ভিডিও লোকাল ফাইল সরানোর পরেও কাজ করে
  • থাম্বনেইল ও srcset আমাদের ২৮০px থাম্বনেইল ব্যবহার করে, তাই ছোট ছবির জায়গায় পূর্ণ আকারের ফাইল লোড হয় না
  • 200MB পর্যন্ত ফাইল, টুকরো করে পাঠানো হয় যাতে বড় ভিডিও শেয়ার্ড হোস্টের ওপর চাপ না ফেলে
  • সরিয়ে নেওয়া যেকোনো ফাইল যেকোনো সময় লোকাল স্টোরেজে ফিরিয়ে আনুন
  • মিডিয়া লাইব্রেরির একটি কলামে দেখা যায় কোনটি সরানো হয়েছে আর কোনটি এখনো লোকাল
  • সরানো ফাইল private হিসেবে সংরক্ষিত হয়: আপনার সাইট যেখানে ব্যবহার করে সেখানে লোড হয়, কিন্তু YourImageShare-এ এর নিজস্ব কোনো পেজ থাকে না

আপনার API কী নয়, Upload-only কী ব্যবহার করে। ঐচ্ছিক পূর্ণ API কী শুধু তখনই লাগে, যখন WordPress-এ মুছলে সরানো ফাইল YourImageShare থেকেও মুছে ফেলতে চান।

WordPress.org থেকে নিন ZIP ডাউনলোড করুন

WordPress-এ: Plugins > Add New, YourImageShare Media Offload সার্চ করুন, তারপর Install ও Activate করুন।

ব্লগ থেকে

চেষ্টা করতে প্রস্তুত?

আপনার API কী নিন →