API Docs
Upscale images to print-ready TIFF, PNG and JPG from your own apps. Calls are paid from your dollar balance — add funds in the app, spend them via the API or the dashboard.
Authentication
Create a key at Dashboard → API keys and send it as a Bearer token. Base URL: https://printscale.app.
Authorization: Bearer psk_live_xxxxxxxxQuickstart
1. Get an upload URL
curl -X POST https://printscale.app/api/v1/uploads \
-H "Authorization: Bearer psk_live_xxx" \
-H "Content-Type: application/json" \
-d '{"filename":"photo.jpg","contentType":"image/jpeg"}'
# → { "upload_url": "...", "image_url": "...", "content_type": "image/jpeg" }2. Upload the file, then start the upscale
# upload the bytes to the presigned URL
curl -X PUT "<upload_url>" -H "Content-Type: image/jpeg" --data-binary @photo.jpg
# start the upscale (this is where the price is charged)
curl -X POST https://printscale.app/api/v1/upscale \
-H "Authorization: Bearer psk_live_xxx" \
-H "Content-Type: application/json" \
-d '{"image_url":"<image_url>","target":{"mode":"print","cm":60,"dpi":300}}'
# → { "id":"...", "status":"processing", "price_cents":499, "price_usd":"4.99" }3. Poll for the result
curl https://printscale.app/api/v1/jobs/<id> \
-H "Authorization: Bearer psk_live_xxx"
# → { "status":"done", "width":5315, "height":7087,
# "outputs": { "tiff":"...", "png":"...", "jpg":"..." } }Endpoints
POST /api/v1/uploads
Returns a presigned upload_url (PUT your file there) and the image_url to use for the upscale. You can skip this and pass any public https image URL directly.
POST /api/v1/upscale
Body: image_url (required) and target:
{"mode":"factor","factor":"auto"} // auto (3x small / 2x large)
{"mode":"factor","factor":2} // or 3
{"mode":"print","cm":60,"dpi":300} // exact print size (dpi 150/300/600)Returns { id, status, price_cents, price_usd } and processes asynchronously. On failure the price is returned to your balance automatically.
GET /api/v1/jobs/{id}
Returns status (processing / done / failed / expired), dimensions, price_cents and price_usd, and download outputs when done.
GET /api/v1/balance
Returns { balance_cents, balance_usd, currency }. /api/v1/credits remains as an alias for older clients.
Prices
Charged from your balance by output long side, shown in the response:
- • up to3,508 px (A5, A4 at 300 DPI) — $2.49
- • 3,509–4,961 px (A3 at 300 DPI) — $3.49
- • 4,962–7,016 px (A2 at 300 DPI) — $4.99
- • 7,017–12,000 px (A1 at 300 DPI) — $6.99
- • 600 DPI print targets cost at least $3.49.
Notes
- • Outputs are kept for 3 days, then deleted — download within the window.
- • Start from a sharp source: the API enlarges detail, it doesn't repair blurry images.
- • Errors return JSON
{ error }with the proper HTTP status (401 invalid key, 402 insufficient balance, 400 bad input).
Use it from AI agents (MCP)
PrintScale ships an MCP server, so AI agents (Claude Desktop, Cursor, Claude Code) can upscale images as a tool — e.g. “upscale this photo to 60 cm for print.”
{
"mcpServers": {
"printscale": {
"command": "npx",
"args": ["-y", "printscale-mcp"],
"env": { "PRINTSCALE_API_KEY": "psk_live_xxx" }
}
}
}Tools: printscale_upscale, printscale_job, printscale_balance. Works with a local file path or an image URL.
Ready to build?
Create an API key