{"openapi":"3.1.0","info":{"title":"BasePic API","version":"1.0.0","description":"Upload an image, edit it (rotate, flip, crop, resize, resize to a file size in KB, grayscale, sepia, brightness, contrast and more) and get a shareable link or a download link. Free, no API key. Edits create a new image; the original stays unchanged. Limits per IP address: 60 uploads or edits per hour, 300 per day and 2 GB per day; 20 uploads from a link per hour and 100 per day. Claude and ChatGPT share one limit per service: 300 uploads or edits per hour, 1,500 per day and 2 GB per day; 100 uploads from a link per hour and 500 per day. Images up to 50 MB. CORS: not supported — call from a server or a script. An MCP server with the same tools is at https://basepic.com/mcp."},"servers":[{"url":"https://basepic.com"}],"paths":{"/api/v1/images":{"post":{"operationId":"uploadImage","summary":"Upload an image from a URL, base64 data or the request body","parameters":[{"name":"filename","in":"query","required":false,"schema":{"type":"string"},"description":"File name when the body is the image itself."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Public link to an image (or to a post on X, Instagram or Facebook)."},"image_base64":{"type":"string","description":"The image as base64 (a data: URL works too)."},"filename":{"type":"string","description":"Optional file name, e.g. \"beach.jpg\"."},"expires_in_days":{"type":"integer","enum":[1,7,30,365],"description":"Delete the image automatically after this many days. Omit to keep it until deleted."}}}},"image/*":{"schema":{"type":"string","format":"binary"}}}},"responses":{"201":{"description":"The uploaded image, with links and its delete_key","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Image id (6 or 8 characters).","example":"vqSvesFU"},"name":{"type":"string","example":"beach.jpg"},"type":{"type":"string","enum":["image","video","file"]},"mime":{"type":"string","example":"image/jpeg"},"width":{"type":["integer","null"]},"height":{"type":["integer","null"]},"size_bytes":{"type":"integer"},"page_url":{"type":"string","format":"uri","description":"Short link: a page with the image and a preview card in chats. Best for sharing."},"image_url":{"type":"string","format":"uri","description":"Direct link to the image file (for <img>, Markdown, embedding)."},"download_url":{"type":"string","format":"uri","description":"Same file, sent as a download (attachment)."},"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","nullable":true,"description":"When the image will be deleted automatically (ISO 8601), or null if it stays."},"delete_key":{"type":"string","description":"Returned only when the image is created. Keep it to delete the image later."},"source_id":{"type":"string","description":"Edits only: id of the original image (it stays unchanged)."}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"413":{"description":"Too large","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"415":{"description":"Unsupported type","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Rate limit reached","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/v1/images/{id}":{"get":{"operationId":"getImage","summary":"Get an image’s links and details","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The image","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Image id (6 or 8 characters).","example":"vqSvesFU"},"name":{"type":"string","example":"beach.jpg"},"type":{"type":"string","enum":["image","video","file"]},"mime":{"type":"string","example":"image/jpeg"},"width":{"type":["integer","null"]},"height":{"type":["integer","null"]},"size_bytes":{"type":"integer"},"page_url":{"type":"string","format":"uri","description":"Short link: a page with the image and a preview card in chats. Best for sharing."},"image_url":{"type":"string","format":"uri","description":"Direct link to the image file (for <img>, Markdown, embedding)."},"download_url":{"type":"string","format":"uri","description":"Same file, sent as a download (attachment)."},"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","nullable":true,"description":"When the image will be deleted automatically (ISO 8601), or null if it stays."},"delete_key":{"type":"string","description":"Returned only when the image is created. Keep it to delete the image later."},"source_id":{"type":"string","description":"Edits only: id of the original image (it stays unchanged)."}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"413":{"description":"Too large","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"415":{"description":"Unsupported type","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Rate limit reached","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}},"delete":{"operationId":"deleteImage","summary":"Delete an image (needs its delete_key)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Delete-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean"},"id":{"type":"string"}}}}}},"403":{"description":"Wrong delete_key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"413":{"description":"Too large","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"415":{"description":"Unsupported type","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Rate limit reached","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/v1/images/{id}/edit":{"post":{"operationId":"editImage","summary":"Edit an image and get a NEW image with its own links (the original stays unchanged)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operations":{"type":"array","maxItems":20,"items":{"type":"object","required":["op"],"properties":{"op":{"type":"string","enum":["rotate","flip","crop","resize","grayscale","sepia","brightness","contrast","warm","cool","invert","blur","sharpen"]},"degrees":{"type":"integer","enum":[90,180,270,-90,-180,-270],"description":"rotate: clockwise degrees."},"direction":{"type":"string","enum":["horizontal","vertical"],"description":"flip."},"aspect":{"type":"string","description":"crop: centered crop to an aspect ratio such as \"1:1\", \"4:5\" or \"16:9\"."},"x":{"type":"integer"},"y":{"type":"integer"},"width":{"type":"integer","description":"crop: width in pixels; resize: target width (keeps proportions)."},"height":{"type":"integer","description":"crop: height in pixels; resize: target height (keeps proportions)."},"percent":{"type":"number","description":"resize: 1–400."},"megapixels":{"type":"number","description":"resize: target size in megapixels."},"value":{"type":"number","description":"brightness / contrast: -100 to 100."},"radius":{"type":"integer","description":"blur: 1–10."}}},"description":"Applied in order, e.g. [{\"op\":\"rotate\",\"degrees\":90},{\"op\":\"grayscale\"}]."},"format":{"type":"string","enum":["jpeg","png","webp"],"description":"Output format (default: same as the original; GIF becomes PNG)."},"quality":{"type":"integer","minimum":1,"maximum":100,"description":"JPEG/WebP quality, default 90."},"max_kb":{"type":"integer","minimum":5,"description":"Make the file at most this many KB, counting 1 KB as 1,000 bytes (JPEG/WebP): best quality that fits, smaller dimensions if needed."},"filename":{"type":"string"}}},"example":{"operations":[{"op":"rotate","degrees":90},{"op":"resize","width":1080},{"op":"sepia"}],"format":"jpeg","max_kb":200}}}},"responses":{"201":{"description":"The new, edited image","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Image id (6 or 8 characters).","example":"vqSvesFU"},"name":{"type":"string","example":"beach.jpg"},"type":{"type":"string","enum":["image","video","file"]},"mime":{"type":"string","example":"image/jpeg"},"width":{"type":["integer","null"]},"height":{"type":["integer","null"]},"size_bytes":{"type":"integer"},"page_url":{"type":"string","format":"uri","description":"Short link: a page with the image and a preview card in chats. Best for sharing."},"image_url":{"type":"string","format":"uri","description":"Direct link to the image file (for <img>, Markdown, embedding)."},"download_url":{"type":"string","format":"uri","description":"Same file, sent as a download (attachment)."},"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","nullable":true,"description":"When the image will be deleted automatically (ISO 8601), or null if it stays."},"delete_key":{"type":"string","description":"Returned only when the image is created. Keep it to delete the image later."},"source_id":{"type":"string","description":"Edits only: id of the original image (it stays unchanged)."}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"413":{"description":"Too large","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"415":{"description":"Unsupported type","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Rate limit reached","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}}}}