[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"api-page:image-hosting-api":3},{"status":4,"api":5,"seo":154},"success",{"blocked":6,"description":7,"about":8,"stats":9,"name":11,"title":12,"slug":13,"logo":14,"created_at":15,"user":16,"endpoint_groups":19,"faqs":61,"periodic_plans":62,"payasyougo_plans":125},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.98","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",{"nick":17,"name":18},"dishis-tech","Dishant Singh",[20],{"endpoints":21,"name":60,"description":30,"ungrouped":41,"open":6},[22],{"blocked":6,"credits":23,"flexible_credits_description":24,"consumptions":25,"description":31,"method":32,"name":33,"url_path":34,"root_url":35,"parameters":36,"responses":59,"result_stats":24},1,null,[26],{"name":27,"slug":28,"cost":29,"label":30,"avg":24},"Credits","credits","1","","Upload image file with its name and expiration","POST","Upload Image","/upload","https://gkapi.jojapi.net",{"url":37,"header":38,"post":46,"body":57,"path":58},[],[39],{"key":40,"is_auth":41,"example":42,"example_disabled":41,"example_type":43,"name":44,"description":42,"required":41,"always_error":45},"X-JoJAPI-Key",true,"You must log in to get API key","string","JoJ API Key","Please log in to get API key",[47,51,54],{"key":48,"example":49,"example_disabled":6,"example_type":43,"value_type":43,"enum_values":24,"default_value":30,"required":6,"name":48,"description":50},"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":52,"example":30,"example_disabled":6,"example_type":43,"value_type":43,"enum_values":24,"default_value":30,"required":6,"name":52,"description":53},"name","Put the file name you want in the url.",{"key":55,"example":56,"example_disabled":6,"example_type":43,"value_type":43,"enum_values":24,"default_value":30,"required":6,"name":30,"description":30},"expiration","0",[],[],[],"Ungrouped Endpoints",[],[63,78,88,98,107,116],{"type":64,"slug":65,"blocked":6,"period":66,"currency":67,"pricing":68,"rate_limit":73,"objects":74,"name":77},"periodic","5knnxurfceu8qteei3lyi181","1 WEEK","usd",{"price":69,"credits":70,"past_due_timeout_num":71,"past_due_timeout_type":72},0,100,3,"DAY",{"max_requests":23,"time_window":23},[75],{"id":76,"name":27,"slug":28,"quota":70,"tiers":24},"n2963bd2f","100 Credits",{"type":64,"slug":79,"blocked":6,"period":80,"currency":67,"pricing":81,"rate_limit":84,"objects":85,"name":87},"71spvagupxa6rfvpdvx2knad","1 MONTH",{"price":82,"credits":83,"past_due_timeout_num":71,"past_due_timeout_type":72},11.99,5000,{"max_requests":71,"time_window":23},[86],{"id":76,"name":27,"slug":28,"quota":83,"tiers":24},"5,000 Credits",{"type":64,"slug":89,"blocked":6,"period":80,"currency":67,"pricing":90,"rate_limit":93,"objects":95,"name":97},"xvo0913ooooyy52opd6z1gj5",{"price":91,"credits":92,"past_due_timeout_num":71,"past_due_timeout_type":72},39.99,50000,{"max_requests":94,"time_window":23},5,[96],{"id":76,"name":27,"slug":28,"quota":92,"tiers":24},"50,000 Credits",{"type":64,"slug":99,"blocked":6,"period":80,"currency":67,"pricing":100,"rate_limit":103,"objects":104,"name":106},"aas95dq0pwcwf8orhf2kyvx2",{"price":101,"credits":102,"past_due_timeout_num":71,"past_due_timeout_type":72},119.99,500000,{"max_requests":24,"time_window":24},[105],{"id":76,"name":27,"slug":28,"quota":102,"tiers":24},"500,000 Credits",{"type":64,"slug":108,"blocked":6,"period":80,"currency":67,"pricing":109,"rate_limit":112,"objects":113,"name":115},"lcmt4kjhnm2djekmq5d7rk0h",{"price":110,"credits":111,"past_due_timeout_num":71,"past_due_timeout_type":72},199.99,1000000,{"max_requests":24,"time_window":24},[114],{"id":76,"name":27,"slug":28,"quota":111,"tiers":24},"1,000,000 Credits",{"type":64,"slug":117,"blocked":6,"period":80,"currency":67,"pricing":118,"rate_limit":121,"objects":122,"name":124},"6lym3ptq4d7qdr0xdke6v4hx",{"price":119,"credits":120,"past_due_timeout_num":71,"past_due_timeout_type":72},699.99,10000000,{"max_requests":24,"time_window":24},[123],{"id":76,"name":27,"slug":28,"quota":120,"tiers":24},"10,000,000 Credits",[126],{"type":127,"slug":128,"blocked":6,"period":66,"currency":67,"pricing":129,"rate_limit":144,"objects":145,"name":153},"payasyougo","iwg7tlzkmz9eocqdhegk5gjd",[130,132,135,138,141],{"start":69,"unit_price":131,"start_text":56},0.05,{"start":83,"unit_price":133,"start_text":134},0.02,"5K",{"start":92,"unit_price":136,"start_text":137},0.01,"50K",{"start":102,"unit_price":139,"start_text":140},0.005,"500K",{"start":111,"unit_price":142,"start_text":143},0.001,"1M",{"max_requests":24,"time_window":24},[146],{"id":76,"name":27,"slug":28,"quota":24,"tiers":147},[148,149,150,151,152],{"start":69,"unit_price":131,"start_text":56},{"start":83,"unit_price":133,"start_text":134},{"start":92,"unit_price":136,"start_text":137},{"start":102,"unit_price":139,"start_text":140},{"start":111,"unit_price":142,"start_text":143},"Pay as you go",{"canonical":155,"page_title":156,"meta":157},"https://jojapi.com/hub/api/image-hosting-api","Image Hosting API API Documentation & Playground - JoJ API",{"description":7,"keywords":158},"API,API Documentation,API Playground,Plans & Pricing,Image Hosting API,dishis-tech"]