Quick Start

Your image is a URL — direct, embeddable, and transformable. Upload a file (or import a URL), get that url back, and resize or convert it with query params. Everything else is optional.

Base URL https://api.img.pro/v1 · no key needed to try it · url, sizes, and page_url are included on every plan.

Upload

Request
bash
curl -X POST "https://api.img.pro/v1/images" \
  -F "file=@photo.jpg"
Response
json
{
  "id": "abc12345",
  "url": "https://src.img.pro/4j2/abc12345.jpg",
  "page_url": "https://img.pro/abc12345",
  "sizes": {
    "small":  { "url": "https://src.img.pro/4j2/abc12345.jpg?size=s", "width": 426,  "height": 320 },
    "medium": { "url": "https://src.img.pro/4j2/abc12345.jpg?size=m", "width": 853,  "height": 640 },
    "large":  { "url": "https://src.img.pro/4j2/abc12345.jpg?size=l", "width": 1440, "height": 1080 }
  },
  "width": 4000,
  "height": 3000,
  "status": "ready"
}

url is the image itself — a direct CDN URL you can drop into an <img> tag. page_url is the viewer page you send to a human. That's the short version — full shape in the Image object reference.

text
https://src.img.pro/4j2/abc12345.jpg?size=m

The sizes object gives three responsive variants — small / medium / large, included on every plan. A fixed social/OG card is one request away too (?size=social, 1200×630), though it isn’t part of sizes. Need exact dimensions, format, or effects? See Transforms.

Prefer to import from a URL? Send JSON instead of a file — same Image object back:

Request
bash
curl -X POST "https://api.img.pro/v1/images" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/photo.jpg"}'
Anonymous uploads expire after 30 days, max 20 MB, and are rate-limited. Sign up at img.pro for permanent storage, larger files, and higher limits.

Sign up & get a key

Create an account with your email, then create an API key from the dashboard. Use it on every request:

Request
bash
curl -X POST "https://api.img.pro/v1/images" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@photo.jpg" \
  -F "caption=Hero shot from launch day"

Same Image object — but expires_at is null (permanent) and you can attach a caption.

Tiers

Anonymous
Uploads
Rate-limited
Storage
Shared
Retention
30 days
Max file
20 MB
Free
Uploads
100/mo
Storage
1 GB
Retention
Permanent
Max file
70 MB
Pro ($19/mo)
Uploads
1,000/mo
Storage
10 GB
Retention
Permanent
Max file
70 MB

Need more? See all plans — up to 100,000 uploads/mo and 1 TB storage. See the Error Reference for every error code and action.