Sign in to img.pro, create an App, and issue an App storage only key from its API Keys page. Give the key the permissions your backend needs.
Keep the API key on your server. Your users don’t need img.pro accounts for you to use App storage.
What is an App?
Your project’s container in img.pro: its own storage, API keys, members, users, and Free, Pro, or Unlimited plan. You still build and host your application.
02 / Store
Upload your first image.
Send a supported image as multipart form data. An accepted upload returns an image URL and optimized Small, Medium, and Large URLs in the sizes object. Use sizes.small.url, sizes.medium.url, and sizes.large.url directly.
Replace YOUR_API_KEY with your key and cobalt-ceramic.jpg with a local image. Run this from your server or terminal.
03 / Deliver
Put the URL to work.
Use the complete image URL returned by the API, including its storage path. Add parameters to create the size and crop you need; the address below is illustrative.
Turn on sign-in in the Sign-in tab of your App’s Connect page: add your App URL and exact callback URLs, then create an App-wide key. After that, each connection follows the hosted flow.
Send the user to img.pro’s hosted sign-in with your App ID, callback, and state.
Let them sign in. Typing the email code connects them, and someone already signed in to img.pro confirms the connection instead.
Validate state on your backend and exchange the one-time code for the user ID.
Use the App-wide key and X-Img-User to select that user’s storage.
Only select the img.pro user ID associated with your signed-in user. Keep the App-wide key on your backend.
Useful boundaries
Explicit by design.
Public image URLs
Anyone with the URL can load an image. API metadata reads still require a read key for its App.
One storage per request
With an App-wide key, no selector means App storage. A valid connected-user selector means that user’s storage. An invalid selector never falls back to App storage.
Accepted input
JPEG, PNG, GIF, WebP, AVIF, and supported HEIC / HEIF. Maximum 20 MB (20,000,000 bytes) per file.
Free limits
5,000 images and 50 users per App. Existing images and connections keep working at the limit.
Go deeper.
Explore the full API, supported transforms, and the details of connecting users to your App.