[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"api-page:image-hosting-api":3},{"status":4,"api":5,"seo":172},"success",{"blocked":6,"description":7,"about":8,"stats":9,"name":11,"title":12,"slug":13,"logo":14,"created_at":15,"agent":16,"user":28,"endpoint_groups":31,"faqs":71,"features":72,"periodic_plans":73,"payasyougo_plans":142},false,"Simple image hosting API. Flat pricing. No bandwidth limits. 5–10x cheaper than Cloudinary. Most APIs limit to 10–20 MB. We give you 35 MB per image. Perfect for high-res photos and design workflows. Upload Any binary file, base64 data, or a URL for an image. No autodelete.","# Documentations\n\nYour go-to ultra-fast image hosting API. Upload, fetch, and delete images via a single endpoint.\n\n**Base URL:**\n\n```\nhttps://gkapi.jojapi.net\n```\n\nTo authenticate, users must include:\n\n```\nX-JoJAPI-Key: YOUR_API_KEY\n```\n\n* * *\n\n## 📸 What This API Can Do\n\n*   **Single Upload:** File, base64, remote URL, data URI.\n*   **Bulk Upload:** Upload up to 100 images at once.\n*   **Retrieve:** Direct image URLs.\n*   **Delete:** Secure delete links.\n*   **Caching:** Automatic CDN caching for super-fast delivery.\n*   **Expiration:** Optional auto-delete timer.\n\n* * *\n\n## 🛠️ Uploading Images (Single)\n\n**Endpoint:** `POST /upload`\n\nSend a request with **any** of the supported input types:\n\n### **Input Field:**\n\n```\nimage\n```\n\n### **Optional Fields:**\n\n*   **name**: Custom filename (no extension needed)\n*   **expiration**: Unix timestamp in seconds. `0` means never.\n\n### **Supported Content Types**\n\n*   `multipart/form-data`\n*   `application/json`\n*   `application/x-www-form-urlencoded`\n\n* * *\n\n## 🚀 Bulk Uploading Images (New)\n\n**Endpoint:** `POST /bulk-upload`\n\nUpload multiple images in a single request. This process is asynchronous: you will receive a `batchId` to poll for status.\n\n### **Input Field:**\n\n```\nfiles[]\n```\n\n*Send multiple items with the same key `files[]`.*\n\n### **Optional Fields:**\n\n*   **expiration**: Unix timestamp in seconds. Applies to **all** images in the batch.\n\n### **Requirements:**\n\n*   **Content-Type:** `multipart/form-data`\n*   **Max Files:** 100 per request.\n\n### **Example Request (Bulk)**\n```http\nPOST /bulk-upload\nHost: https://gkapi.jojapi.net\nX-JoJAPI-Key: YOUR_KEY_HERE\nContent-Type: multipart/form-data; boundary=---boundary\n\n-----boundary\nContent-Disposition: form-data; name=\"files[]\"; filename=\"cat.jpg\"\nContent-Type: image/jpeg\n\n[...binary data...]\n-----boundary\nContent-Disposition: form-data; name=\"files[]\"; filename=\"dog.png\"\nContent-Type: image/png\n\n[...binary data...]\n-----boundary\nContent-Disposition: form-data; name=\"expiration\"\n\n1763659661\n-----boundary--\n```\n\n### **Response (Immediate)**\n```json\n{\n  \"success\": true,\n  \"batchId\": \"BX72Fk0912\",\n  \"total\": 2,\n  \"message\": \"Batch queued\"\n}\n```\n\n---\n\n## 📊 Check Bulk Status\n**Endpoint:** `GET /bulk-status/{batchId}`\n\nPoll this endpoint to track the progress of your bulk upload and retrieve the final URLs.\n\n### **Example Request**\n```http\nGET /bulk-status/BX72Fk0912\nHost: https://gkapi.jojapi.net\nX-JoJAPI-Key: YOUR_KEY_HERE\n```\n\n### **Response (In Progress)**\n```json\n{\n  \"batchId\": \"BX72Fk0912\",\n  \"total\": 10,\n  \"completed\": 4,\n  \"failed\": 0,\n  \"percent\": 40,\n  \"done\": false,\n  \"items\": [\n    { \"id\": \"abc1\", \"url\": \"https://i.api.dishis.tech/i/abc1\", \"done\": true },\n    { \"id\": \"abc2\", \"url\": \"https://i.api.dishis.tech/i/abc2\", \"done\": true },\n    { \"done\": false },\n    { \"done\": false }\n  ]\n}\n```\n\n### **Response (Completed)**\n```json\n{\n  \"batchId\": \"BX72Fk0912\",\n  \"total\": 10,\n  \"completed\": 9,\n  \"failed\": 1,\n  \"percent\": 100,\n  \"done\": true,\n  \"items\": [\n    { \n      \"id\": \"abc1\", \n      \"url\": \"https://i.api.dishis.tech/i/abc1\", \n      \"done\": true \n    },\n    { \n      \"id\": \"err1\", \n      \"error\": \"too large\", \n      \"done\": true \n    }\n    // ... all other items\n  ]\n}\n```\n\n---\n\n## 🧩 Supported Image Formats (Single Upload)\nYou can send the `image` field as:\n\n### **1. File Upload (multipart)**\n```\nimage: &lt;file&gt;\n```\nAny normal PNG, JPEG, WEBP, GIF.\n\n### **2. Base64 String**\n```\niVBORw0KGgoAAAANSUhEUgAA...\n```\n\n### **3. Base64 Data URI**\n```\ndata:image/png;base64,iVBORw0KG...\n```\n\n### **4. Remote Image URL**\n```\nhttps://example.com/cat.png\n```\n\n### **5. Self-URL (Re-upload)**\n```\nhttps://i.api.dishis.tech/i/abc123\n```\n\n---\n\n## 🎯 Successful Response (Single Upload)\n```json\n{\n  \"data\": {\n    \"id\": \"Pl5ng\",\n    \"title\": \"Pl5ng\",\n    \"url_viewer\": \"https://i.api.dishis.tech/i/Pl5ng\",\n    \"url\": \"https://i.dishis.tech/i/Pl5ng\",\n    \"display_url\": \"https://i.api.dishis.tech/i/Pl5ng\",\n    \"width\": \"4000\",\n    \"height\": \"6000\",\n    \"size\": \"8668552\",\n    \"time\": \"1763659661\",\n    \"expiration\": \"0\",\n    \"image\": {\n      \"filename\": \"Pl5ng.jpeg\",\n      \"name\": \"Pl5ng\",\n      \"mime\": \"image/jpeg\",\n      \"extension\": \"jpeg\",\n      \"url\": \"https://i.api.dishis.tech/i/Pl5ng\"\n    },\n    \"delete_url\": \"https://i.api.dishis.tech/delete/Pl5ng/207C8HPRKMwLHYJd\",\n    \"plan\": \"free\"\n  },\n  \"success\": true,\n  \"status\": 200\n}\n```\n\n---\n\n## ❌ Error Responses\n\n### Missing image/files\n```json\n{\n  \"success\": false,\n  \"status\": 400,\n  \"message\": \"image required\" // or \"no files\"\n}\n```\n\n### Invalid Batch ID\n```json\n{\n  \"success\": false,\n  \"status\": 404,\n  \"message\": \"Batch not found\"\n}\n```\n\n### Too Large (&gt;35MB default)\n```json\n{\n  \"success\": false,\n  \"status\": 413,\n  \"message\": \"too large\"\n}\n```\n\n### Expired image\n```json\n{\n  \"success\": false,\n  \"status\": 410,\n  \"message\": \"This file has expired.\"\n}\n```\n\n---\n\n## 🗑️ Deleting an Image\nUse the `delete_url` returned in the upload response.\n\n### Step 1: Open delete URL in browser\nYou will see a confirmation prompt.\n\n### Step 2: Click **Delete**\nThe file is permanently removed from storage + cache.",{"score":10},"1.99","Image Hosting API","Image Hosting API API","image-hosting-api","https://cdn.jojapi.com/api/8fd3ce96-26d8-4297-8ba4-10015469c2b8","2025-09-14 08:07:27",{"enabled":17,"closed":18,"request_enabled":6,"catalog_url":19,"discovery_url":20,"directory_url":21,"rails":22,"networks":25,"docs":27},true,null,"https://gkapi.jojapi.net/_jojapi/agent/plans","https://gkapi.jojapi.net/.well-known/x402","https://agents.jojapi.net/apis/image-hosting-api",[23,24],"x402","mpp",[26],"eip155:8453","https://docs.jojapi.com/consumers/agents",{"nick":29,"name":30,"verified":6,"website":18},"dishis-tech","Dishant Singh",[32],{"endpoints":33,"name":70,"description":41,"ungrouped":17,"open":6},[34],{"blocked":6,"hidden":6,"agent_price":18,"credits":35,"flexible_credits_description":18,"consumptions":36,"description":42,"method":43,"name":44,"url_path":45,"root_url":46,"parameters":47,"responses":69,"result_stats":18},1,[37],{"name":38,"slug":39,"cost":40,"label":41,"avg":18},"Credits","credits","1","","Upload image file with its name and expiration","POST","Upload Image","/upload","https://gkapi.jojapi.net",{"url":48,"header":49,"post":56,"body":67,"path":68},[],[50],{"key":51,"is_auth":17,"example":52,"example_disabled":17,"example_type":53,"name":54,"description":52,"required":17,"always_error":55},"X-JoJAPI-Key","You must log in to get API key","string","JoJ API Key","Please log in to get API key",[57,61,64],{"key":58,"example":59,"schema":18,"example_disabled":6,"example_type":53,"value_type":53,"enum_values":18,"default_value":41,"required":6,"name":58,"description":60},"image","https://i.api.dishis.tech/i/312fh","The image to be uploaded. Can be a file, base64 string, or URL. Max limit 35MB.",{"key":62,"example":41,"schema":18,"example_disabled":6,"example_type":53,"value_type":53,"enum_values":18,"default_value":41,"required":6,"name":62,"description":63},"name","Put the file name you want in the url.",{"key":65,"example":66,"schema":18,"example_disabled":6,"example_type":53,"value_type":53,"enum_values":18,"default_value":41,"required":6,"name":41,"description":41},"expiration","0",[],[],[],"Ungrouped Endpoints",[],[],[74,90,101,112,122,132],{"type":75,"slug":76,"blocked":6,"period":77,"currency":78,"pricing":79,"rate_limit":84,"objects":85,"name":88,"display_name":18,"features":89},"periodic","5knnxurfceu8qteei3lyi181","1 WEEK","usd",{"price":80,"credits":81,"past_due_timeout_num":82,"past_due_timeout_type":83},0,100,3,"DAY",{"max_requests":35,"time_window":35},[86],{"id":87,"name":38,"slug":39,"quota":81,"tiers":18},"n2963bd2f","100 Credits",[],{"type":75,"slug":91,"blocked":6,"period":92,"currency":78,"pricing":93,"rate_limit":96,"objects":97,"name":99,"display_name":18,"features":100},"71spvagupxa6rfvpdvx2knad","1 MONTH",{"price":94,"credits":95,"past_due_timeout_num":82,"past_due_timeout_type":83},11.99,5000,{"max_requests":82,"time_window":35},[98],{"id":87,"name":38,"slug":39,"quota":95,"tiers":18},"5,000 Credits",[],{"type":75,"slug":102,"blocked":6,"period":92,"currency":78,"pricing":103,"rate_limit":106,"objects":108,"name":110,"display_name":18,"features":111},"xvo0913ooooyy52opd6z1gj5",{"price":104,"credits":105,"past_due_timeout_num":82,"past_due_timeout_type":83},39.99,50000,{"max_requests":107,"time_window":35},5,[109],{"id":87,"name":38,"slug":39,"quota":105,"tiers":18},"50,000 Credits",[],{"type":75,"slug":113,"blocked":6,"period":92,"currency":78,"pricing":114,"rate_limit":117,"objects":118,"name":120,"display_name":18,"features":121},"aas95dq0pwcwf8orhf2kyvx2",{"price":115,"credits":116,"past_due_timeout_num":82,"past_due_timeout_type":83},119.99,500000,{"max_requests":18,"time_window":18},[119],{"id":87,"name":38,"slug":39,"quota":116,"tiers":18},"500,000 Credits",[],{"type":75,"slug":123,"blocked":6,"period":92,"currency":78,"pricing":124,"rate_limit":127,"objects":128,"name":130,"display_name":18,"features":131},"lcmt4kjhnm2djekmq5d7rk0h",{"price":125,"credits":126,"past_due_timeout_num":82,"past_due_timeout_type":83},199.99,1000000,{"max_requests":18,"time_window":18},[129],{"id":87,"name":38,"slug":39,"quota":126,"tiers":18},"1,000,000 Credits",[],{"type":75,"slug":133,"blocked":6,"period":92,"currency":78,"pricing":134,"rate_limit":137,"objects":138,"name":140,"display_name":18,"features":141},"6lym3ptq4d7qdr0xdke6v4hx",{"price":135,"credits":136,"past_due_timeout_num":82,"past_due_timeout_type":83},699.99,10000000,{"max_requests":18,"time_window":18},[139],{"id":87,"name":38,"slug":39,"quota":136,"tiers":18},"10,000,000 Credits",[],[143],{"type":144,"slug":145,"blocked":6,"period":77,"currency":78,"pricing":146,"rate_limit":161,"objects":162,"name":170,"display_name":18,"features":171},"payasyougo","iwg7tlzkmz9eocqdhegk5gjd",[147,149,152,155,158],{"start":80,"unit_price":148,"start_text":66},0.05,{"start":95,"unit_price":150,"start_text":151},0.02,"5K",{"start":105,"unit_price":153,"start_text":154},0.01,"50K",{"start":116,"unit_price":156,"start_text":157},0.005,"500K",{"start":126,"unit_price":159,"start_text":160},0.001,"1M",{"max_requests":18,"time_window":18},[163],{"id":87,"name":38,"slug":39,"quota":18,"tiers":164},[165,166,167,168,169],{"start":80,"unit_price":148,"start_text":66},{"start":95,"unit_price":150,"start_text":151},{"start":105,"unit_price":153,"start_text":154},{"start":116,"unit_price":156,"start_text":157},{"start":126,"unit_price":159,"start_text":160},"Pay as you go",[],{"canonical":173,"page_title":174,"meta":175},"https://jojapi.com/hub/api/image-hosting-api","Image Hosting API API Documentation & Playground - JoJ API",{"description":7,"keywords":176},"API,API Documentation,API Playground,Plans & Pricing,Image Hosting API,dishis-tech"]