BasePicUpload

Image API for AI agents.
Upload, edit, share.

Let ChatGPT, Claude or your own agent upload a photo, rotate, crop, resize or filter it, and hand back a link or a download — free, no API key.

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:

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"}'

Upload a file from disk:

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}'

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…'

Edit operations

opParametersWhat it does
rotate"degrees": 90 | 180 | 270 | -90Turn 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 … 100Darker or lighter
contrast"value": -100 … 100Less or more contrast
warm / cool—Warmer (yellow) or cooler (blue) colors
invert—Negative
blur"radius": 1 … 10Soften
sharpen—Crisper edges

Up to 20 operations, applied in order. Options: format (jpeg, png, webp), quality (1–100), max_kb (best quality that fits; smaller dimensions if needed). Errors come back as {"error": "…"} with an HTTP status.

Limits and rules

API questions

Do I need an API key?

No. The API is free and has no keys. Limits are per IP address: 60 uploads per hour, 300 per day and 2 GB per day.

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 link should my agent share?

Share page_url — it opens a page with the image and shows a preview in chats. Use image_url to embed the image (HTML, Markdown) and download_url when the user wants to save the file.

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.