Upload Images
Web interface
Log in and drag files to upload, or click to browse. The web UI supports batch upload and automatically copies share links on completion.
curl
# Authenticated upload
curl -X POST http://localhost:18080/api/v1/images \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "file=@image.png"
# With expiry (24 hours)
curl -X POST http://localhost:18080/api/v1/images \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "file=@image.png" \
-F "expires_in=24h"
# Guest upload (if enabled)
curl -X POST http://localhost:18080/api/v1/upload \
-F "file=@image.png" ShareX
PicFast provides a built-in ShareX config endpoint. See the ShareX Integration page for full setup instructions.
Other tools
PicFast also supports PicGo, PicList, uPic, Dropshare, and any tool compatible with a standard REST upload endpoint. The built-in Connections page in the admin console provides step-by-step setup instructions for each tool, including Obsidian (via Image auto upload + PicGo).
MCP (AI agents)
AI assistants can upload images through PicFast's MCP server. See the MCP Integration page for setup and the full tool reference.
Python
import requests
url = "https://pics.example.com/api/v1/images"
headers = {"Authorization": "Bearer YOUR_TOKEN"}
with open("image.png", "rb") as f:
files = {"file": f}
r = requests.post(url, headers=headers, files=files)
print(r.json()["links"]["url"]) JavaScript
const form = new FormData();
const file = await fs.openAsBlob("image.png");
form.append("file", file);
const res = await fetch("https://pics.example.com/api/v1/images", {
method: "POST",
headers: { "Authorization": "Bearer YOUR_TOKEN" },
body: form,
});
const data = await res.json();
console.log(data.links.markdown); Response
A successful upload returns:
{"id": 1,"key": "abc123","origin_name": "image.png",
"size_bytes": 204800,"mimetype": "image/png","extension": "png",
"width": 1920,"height": 1080,
"links": {"url": "https://pics.example.com/i/abc123.png",
"html": "<img src=\"https://pics.example.com/i/abc123.png\" />",
"markdown": "",
"bbcode": "[img]https://pics.example.com/i/abc123.png[/img]",
"thumbnail_url": "https://pics.example.com/t/abc123.png"},
"created_at": "2026-05-02T00:00:00Z"} Formats & limits
Accepted formats: jpg, png, gif, webp, svg, bmp, ico.
Maximum file size is configured per group. Default is 50 MB per file.
Guest upload TTL can be configured separately via app.guest_image_ttl — useful for giving guest uploads a shorter lifespan than authenticated ones. See Configuration for details.