Quick start
Upload an image, get a URL. The URL always serves your image from a global CDN, and query params resize, crop, or convert it on the fly.
On this page
Base URL https://api.img.pro/v1
Upload
Open Apps, create an App, then open its API Keys page and choose New key. Save the key shown once. Send a file to POST /v1/images:
$el.scrollLeft + $el.clientWidth)" @resize.window="$el.toggleAttribute('data-overflow', $el.scrollWidth - 1 > $el.scrollLeft + $el.clientWidth)">curl -X POST "https://api.img.pro/v1/images" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@photo.jpg"
$el.scrollLeft + $el.clientWidth)" @resize.window="$el.toggleAttribute('data-overflow', $el.scrollWidth - 1 > $el.scrollLeft + $el.clientWidth)">{
"id": "abc12345",
"url": "https://src.img.pro/4j2/abc12345.jpg",
"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 or send to a person. Anyone with it can load the image. That’s the short version; the full shape is in The Image object.
Prefer to import from a URL? Send JSON instead of a file and the same Image object comes back:
$el.scrollLeft + $el.clientWidth)" @resize.window="$el.toggleAttribute('data-overflow', $el.scrollWidth - 1 > $el.scrollLeft + $el.clientWidth)">curl -X POST "https://api.img.pro/v1/images" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/photo.jpg"}'
Keep your key server-side. Your first key’s reach is App storage only. To access connected users, turn sign-in on from your App’s Connect page and create a separate App-wide key from API Keys, then use X-Img-User to select a connected user. See Authentication.
Transform
Add query params to the image’s url. A named size is the quickest:
https://src.img.pro/4j2/abc12345.jpg?size=m
The sizes object gives you three ready-made variants: small, medium, and large. A social/OG card is one request away too (?size=social, 1200×630). For exact dimensions, formats, or background removal, see Transformations.
Next steps
That’s the whole loop. Where to go from here:
- Authentication: App-wide and App-storage keys, and optional connected-user selection.
- Build an App: let users sign in with img.pro and work with their own images in your App.
- API reference: every endpoint (list, get, update, delete, batch, usage).
- Usage and limits: what counts toward an App’s limits, and what happens at them.
- Transformations: the full set of URL parameters.
- OpenAPI spec: every endpoint with schemas, for typed clients and agents.
Every App starts on Free. Free: up to 5,000 images and 50 users per App. Pro: up to 50,000 images and 500 users per App, $20 a month. Unlimited: no limits, $100 a month.