BasePic
从 URL 或 base64 上传图片并获取分享链接,然后旋转、裁剪、调整大小、压缩或转换图片。托管远程服务器,无需账户或 API 密钥。
托管 MCP 服务器
npx add-mcp 'https://basepic.com/mcp'可安装到 Claude Code、Codex、Cursor 等客户端
文档
Upload an image with one command
Send the image in a form field named image — free, no API key and no sign-up:
curl -F "image=@photo.jpg" https://basepic.com/api/v1/images
The answer (status 201, JSON) has image_url, the direct link to the image, and page_url, a page to share. The field can also hold a link to an image (-F "image=https://…") or base64. Optional fields: filename and expires_in_days (1, 7, 30 or 365). A form upload takes images up to 16 MB; for up to 50 MB send the image itself as the request body (REST API).
Connect an AI assistant (MCP)
BasePic is an MCP server. Add this address as a remote MCP server (custom connector) in Claude or any MCP client — no key needed:
https://basepic.com/mcp
The assistant gets four tools:
- upload_image — from a public
urlorimage_base64; returns links, anidand adelete_key. - edit_image —
id+operations(and optionalformat,quality,max_kb); returns a new image with its own links. - get_image — links and details of an image.
- delete_image — with the
delete_key.
A file on your computer: BasePic cannot open a local path or a file:// link, so an assistant that can run commands uploads the file with the form above — curl -F "image=@photo.jpg" https://basepic.com/api/v1/images — and gives the returned id to edit_image.
Ask it, for example: “Upload this photo to BasePic, rotate it 90 degrees, make it black and white under 200 KB and give me the link.”
ChatGPT (custom GPT Actions)
In a custom GPT, add an Action and import the OpenAPI schema from:
https://basepic.com/openapi.json
REST API
Upload from a link:
curl -X POST https://basepic.com/api/v1/images \
-H 'Content-Type: application/json' \
-d '{"url": "https://example.com/photo.jpg"}'
Or send the image itself as the request body (up to 50 MB):
curl -X POST 'https://basepic.com/api/v1/images?filename=photo.jpg' \
-H 'Content-Type: image/jpeg' --data-binary @photo.jpg
The answer (status 201):
{
"id": "vqSvesFU",
"name": "photo.jpg",
"width": 4032, "height": 3024, "size_bytes": 2232999,
"page_url": "https://basepic.com/vqSvesFU",
"image_url": "https://basepic.com/vqSvesFU/photo.jpg",
"download_url": "https://basepic.com/vqSvesFU/photo.jpg?download=1",
"delete_key": "9f2c…"
}
Edit it — rotate, resize to 1080 px wide, sepia, at most 200 KB. The result is a new image; the original stays:
curl -X POST https://basepic.com/api/v1/images/vqSvesFU/edit \
-H 'Content-Type: application/json' \
-d '{"operations": [{"op": "rotate", "degrees": 90},
{"op": "resize", "width": 1080},
{"op": "sepia"}],
"format": "jpeg", "max_kb": 200}'
Screenshots: a ready ShareX custom uploader uploads every screenshot through this API and copies the link.
Firefox: the BasePic add-on puts “Upload to BasePic” in the right-click menu of every image; it uploads the image through this API and copies the short link.
Get details, download, delete:
curl https://basepic.com/api/v1/images/vqSvesFU
curl -L -o edited.jpg 'https://basepic.com/vqSvesFU/photo.jpg?download=1'
curl -X DELETE https://basepic.com/api/v1/images/vqSvesFU -H 'X-Delete-Key: 9f2c…'
n8n, Make, Zapier and post schedulers
Any tool with an HTTP request step can upload the same way as curl -F: method POST, address https://basepic.com/api/v1/images, body multipart/form-data with the file in a field named image. No key and no sign-up. The answer (status 201) is JSON, and the direct link is image_url.
In n8n: an HTTP Request node with Method POST, Send Body on, Body Content Type Form-Data and one body parameter of type n8n Binary File, with Name image and Input Data Field Name data (the file from the previous node). The next node reads the link as {{ $json.image_url }}.
If a step gives you a public link instead of a file, as often happens in Make and Zapier, send JSON {"url": "https://…"} with Content-Type: application/json (see REST API), and BasePic downloads the image from that link.
Post schedulers and the Instagram API take an image from a link: give them image_url. It is the file itself, with no page and no redirect in between, sent with its image type (image/jpeg for a JPEG). The Instagram API accepts only JPEG and fetches the image from a public link (Meta, Instagram content publishing, checked on 29 October 2026). To turn a PNG or WebP into a JPEG, edit it with "format": "jpeg". The result is a new image with its own image_url, and transparent areas become white:
curl -X POST https://basepic.com/api/v1/images/vqSvesFU/edit \
-H 'Content-Type: application/json' \
-d '{"format": "jpeg"}'
Crop and resize operations, for example {"op": "crop", "aspect": "4:5"}, can go in the same edit.
Edit operations
| op | Parameters | What it does |
|---|---|---|
rotate | "degrees": 90 | 180 | 270 | -90 | Turn clockwise (-90 = counter-clockwise) |
flip | "direction": "horizontal" | "vertical" | Mirror the image |
crop | "aspect": "1:1" or "x", "y", "width", "height" | Centered crop to a ratio, or an exact area in pixels |
resize | "width" and/or "height", or "percent", or "megapixels" | Keeps proportions; fits inside width × height |
grayscale | — | Black & white |
sepia | — | Warm brown, old-photo look |
brightness | "value": -100 … 100 | Darker or lighter |
contrast | "value": -100 … 100 | Less or more contrast |
warm / cool | — | Warmer (yellow) or cooler (blue) colors |
invert | — | Negative |
blur | "radius": 1 … 10 | Soften |
sharpen | — | Crisper edges |
Up to 20 operations, applied in order. Options: format (jpeg, png, webp), quality (1–100), max_kb (1 KB = 1,000 bytes; best quality that fits; smaller dimensions if needed). Errors come back as {"error": "…"} with an HTTP status.
Plans
| Plan | Price | Limits | Authentication |
|---|---|---|---|
| Free — website, website plugin, Windows app, ShareX, REST API | $0 | 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. Files up to 2 GB; images for the API up to 50 MB (a form upload up to 16 MB). | None |
| Free account — REST API with your API key; uploads appear in My uploads | $0 | Same as Free: per IP address. | Authorization: Bearer with your API key (optional) |
| AI connectors — Claude, ChatGPT (MCP, GPT Actions) | $0 | One shared 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. | None — recognised by the service's addresses |
Every plan is free, and the same limits apply to every way of uploading. Auto-delete: add expires_in_days (1, 7, 30 or 365) to an upload and the answer carries expires_at; without it the image stays until it is deleted.
curl -X POST 'https://basepic.com/api/v1/images?filename=photo.jpg&expires_in_days=7' \
-H 'Content-Type: image/jpeg' --data-binary @photo.jpg
API key (optional): with a free account, open My uploads, choose API key → Create API key and send it in the Authorization header. Uploads and edits made with it appear in My uploads. The key is shown once; Regenerate key replaces it. A wrong or deleted key gets status 401.
curl -X POST 'https://basepic.com/api/v1/images?filename=photo.jpg' \
-H 'Authorization: Bearer bp_…' \
-H 'Content-Type: image/jpeg' --data-binary @photo.jpg
Limits and rules
- Free, no sign-up and no key needed (an API key from a free account is optional). 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. Images up to 50 MB; a form upload (
curl -F) up to 16 MB. - Claude and ChatGPT (connectors and GPT Actions) call BasePic from their own servers, so all their users 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.
- CORS: only for pages on the same device — localhost, 127.0.0.1 or [::1] (any port), capacitor://localhost and ionic://localhost. Other websites cannot call the API from JavaScript; use a server, a script, an MCP client or an app’s native HTTP client.
- Uploads are private: not listed anywhere and hidden from search engines. Only people with a link can see them.
- GPS location is removed from photos. Edited images carry no camera data.
- Upload only images you have the right to share.
API questions
Do I need an API key?
No. The API is free and works without a key. Limits are 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. An optional API key from a free BasePic account adds your API uploads to My uploads; the limits stay the same. Claude and ChatGPT call BasePic from their own servers, so all their users 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.
Coming from the imgbb or freeimage.host API?
Send the same form to https://basepic.com/api/v1/images: the field image (imgbb) or source (freeimage.host) works, with a file, a link or base64, and name sets the file name. No key is needed; a key field or parameter is ignored. The answer is BasePic’s own JSON, not theirs: the direct link is image_url (data.url at imgbb), the page to share is page_url, and delete_key deletes the image. Auto-delete is expires_in_days (1, 7, 30 or 365), not expiration in seconds. A form upload takes images up to 16 MB; send the image itself as the request body for up to 50 MB.
Can I call the API from JavaScript in a web page?
Only from a page on the same device. CORS is allowed for pages served from localhost, 127.0.0.1 or [::1] (any port) and for Capacitor and Ionic apps, so a local web app can call the API with fetch. Pages on other websites cannot: the browser blocks their calls, and a form sent from another website gets status 415. In a mobile app, use the app’s native HTTP client, or load the WebView page from localhost; a page opened from a file (Origin null) is blocked. Servers, scripts and MCP clients need no CORS. Only https://basepic.com/openapi.json can be read from any website.
How do I connect Claude?
Add a custom connector in Claude with the address https://basepic.com/mcp. Claude then gets the tools upload_image, edit_image, get_image and delete_image.
How do I use it from ChatGPT?
In a custom GPT, add an Action and import the schema from https://basepic.com/openapi.json. ChatGPTs that support MCP connectors can use https://basepic.com/mcp instead.
Does editing change the original image?
No. Every edit creates a new image with its own links. The original stays exactly as it was.
Which formats can be edited?
JPG, PNG, WebP and GIF (the first frame). HEIC, AVIF, TIFF and RAW images can be uploaded and shared, but not edited by the API.
Can n8n, Make or a post scheduler use the links?
Yes. image_url is a public direct link to the file, with no sign-in, page or redirect in between, so a tool that fetches an image from a link gets the file. The Instagram API accepts only JPEG: turn other formats into JPEG with edit and "format": "jpeg". Limits are per IP address of the server that sends the upload.