API Documentation
Integrate AI image upscaling into your app with a single API call.
Overview
The API lets you upscale images programmatically. Submit a URL and we return a high-resolution version powered by SeedVR2.
Base URL
https://keenimg.com/api/v1API access is included with the Ultra plan ($29/mo). Your 800 monthly images work via both the web app and API. Need more than 800? Contact us about enterprise pricing.
Authentication
All requests require a Bearer token. Generate your API key from the Settings page.
Authorization: Bearer kn_live_your_api_key_hereUpscale an Image
POST /api/v1/upscaleSubmit an image URL for upscaling. Processing takes 5-15 seconds.
Request body
urlPublic URL of the image. Max 25MB. JPG, PNG, WebP.
scale2 or 4. Default: 2.
webhookOptional callback URL for completion.
Example
curl -X POST https://keenimg.com/api/v1/upscale \
-H "Authorization: Bearer kn_live_abc..." \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/photo.jpg","scale":4}'Response
{
"id": "cm2abc123",
"status": "processing",
"scale": 4,
"poll_url": "/api/v1/upscale/cm2abc123"
}Upload & Upscale
POST /api/v1/uploadUpload an image file directly instead of providing a URL. Accepts multipart/form-data.
Form fields
fileImage file. Max 25MB. JPG, PNG, WebP.
scale2 or 4. Default: 2.
formatOutput format: jpeg, png, or webp. Default: jpeg.
webhookOptional callback URL for completion.
Example
curl -X POST https://keenimg.com/api/v1/upload \
-H "Authorization: Bearer kn_live_abc..." \
-F "file=@photo.jpg" \
-F "scale=4" \
-F "format=png"Response
{
"id": "cm2abc123",
"status": "processing",
"scale": 4,
"format": "png",
"poll_url": "/api/v1/upscale/cm2abc123"
}Check Job Status
GET /api/v1/upscale/:idPoll a job. When complete, output_url has your image.
{
"id": "cm2abc123",
"status": "complete",
"output_url": "https://cdn.example.com/results/cm2abc123.png",
"dimensions": {"width": 4096, "height": 4096},
"processing_ms": 8432
}Statuses
pendingQueued, waiting.
processingCurrently upscaling.
completeDone. output_url ready.
failedError. Check error field.
Errors
| Code | Meaning |
|---|---|
| 400 | Bad request |
| 401 | Invalid API key |
| 403 | Plan lacks API access |
| 413 | Image too large (25MB max) |
| 429 | Monthly limit reached |
| 500 | Server error |
Rate Limits
| Plan | Images/mo | API | Overage |
|---|---|---|---|
| Free | 5 | No | No |
| Pro | 100 | No | No |
| Ultra | 800 | Yes | No |
| Enterprise | Custom | Yes | Contact us |
Usage resets monthly for paid plans. Free tier is 5 images total.