Recraft
Recraft Creative Upscale
recraft/creative-upscale
Generative image upscaling that increases resolution while redrawing and supplementing textures, details, and facial features—ideal for turning low-resolution assets into high-resolution finished products
Pricing
recraft/creative-upscale per image
| Unit Price | $0.3575 |
|---|
Positioning Overview
recraft/creative-upscale is a generative image upscaling model in the Recraft Creative Upscale series. While increasing the resolution of an input image, it redraws textures, fine details, and facial features in a generative manner rather than merely interpolating. It accepts public PNG image URLs and supports source images from 256 to 4096 pixels per side and up to 16 MP, making it suitable for developers who need to upscale low-resolution assets or older images into high-resolution final outputs.
Core Highlights
- Upscaling with generative detail enhancement—unlike pure interpolation, which only adds pixels, it supplements textures and fine elements during upscaling, producing outputs ready for high-definition display.
- Improvement and sharpening of facial features—blurry faces in AI-generated images or older assets are processed during upscaling, reducing the need for separate post-processing face retouching.
- Wide input size range—source images support 256 to 4096 pixels per side and up to 16 MP, so everything from thumbnails to larger assets can be used as input.
Capability Description
Generative image upscaling: simply pass a PNG image URL to obtain an upscaled and enhanced result, eliminating the engineering cost of deploying super-resolution models locally.
Texture and detail supplementation: for complex textures and fine elements, it redraws and fills them in during upscaling, producing image assets with more complete details.
Facial feature enhancement: for portrait-type inputs, the upscaling process improves and sharpens facial features, making it suitable for batch enhancement of portrait assets.
Direct URL input: only a publicly accessible image link is required, with no file upload needed, making integration with existing image hosting and automated pipelines easy.
Use Cases
- Designers upscaling low-resolution assets—input low-resolution design drafts or third-party image URLs to obtain high-resolution final images suitable for HD display or print.
- Repair of AI-generated images and older assets—input blurry portraits or old images to output versions with clearer faces and details for republishing or asset reuse.
- Automated image processing pipelines—call in batches on the server side using image URLs, incorporating upscaling and enhancement as one step in the pipeline to produce standardized high-definition images.
Limitations and Selection Advice
Generative redrawing may alter the original image content, so it is not suitable for scenarios requiring pixel-level fidelity or strict restoration of original details. It is designed for upscaling enhancement rather than content generation, and is also not suitable as a general-purpose image-to-image editing tool. Source images must be publicly accessible PNG links and are subject to the limits of 256 to 4096 pixels per side and 16 MP. If you only need to increase resolution while keeping the image content unchanged, a non-generative upscaling method should be used instead.
Frequently asked questions
View all FAQs →-
What does Recraft Creative Upscale do?
It enlarges an image to a higher resolution and redraws texture and detail along the way. There is no prompt; you send a single image URL.
-
How is it different from Recraft Crisp Upscale?
Crisp Upscale stays close to the original, which suits text and product shots that must not change. Creative Upscale redraws detail for a richer image, but local structure can differ from the original.
-
Will it change the content?
Overall composition, subject and colors are largely kept, but detail is redrawn. In the example on this page, the cabin's logs, stone wall and railing come back cleaner, the small tree beside the porch is gone, and the stones are arranged differently. Check images with strict detail requirements in the Playground first.
-
What are the input requirements?
One publicly accessible http(s) image URL, up to 20 MB, each side 256–4096 pixels and at most 16 MP in total. The example on this page uses a PNG image, and PNG is the recommended input for now.
Create a generation task
https://api.hiapi.ai/v1/tasks Headers
AuthorizationstringRequiredAccount API key. Required on every request. Example: Bearer YOUR_HIAPI_API_KEY. Get your API key
Content-TypestringOptionalThe request body is always parsed as JSON; when sent, only application/json (optionally with charset) is accepted — any other value returns 415. Example: application/json.
Idempotency-KeystringOptionalIdempotency key, up to 255 bytes. Retries with the same key from the same account create the task only once; replays return the original taskId.
On network timeouts or client retries, the same key creates the task only once — no double charges (scope: the API key's account). Use a business-unique identifier as the key (e.g. "order-42"); replays return the original taskId, and keys expire 24 hours after the first request. See the Unified Async API overview for the full scenario matrix.
Body
modelstringRequiredCurrent fixed value: recraft/creative-upscale
routestringOptionalCurrent fixed value: default
inputobjectRequired
Business parameters for recraft/creative-upscale and route default — see the parameter table below.
image_urlstringRequiredminLength 1pattern ^https?://Public URL of the PNG image to upscale. Up to 20 MB, each side 256–4096 px, at most 16 MP.
callbackobjectOptional
Terminal-state notification config. When omitted, no callback is delivered — poll the task yourself. See the callback note below.
Provide callback.url when creating a task and HiAPI POSTs to your service once the task reaches a terminal state — no polling needed. The callback payload mirrors the task detail structure; signature verification, delivery retries and idempotency are documented on the Unified Async API overview page.
urlstringRequiredRequired when callback is present. A POST is sent to this URL once the task reaches a terminal state; must be a valid http(s) URL.
whenstringOptionalDefault: "final"Only final is supported today — notified on both success and fail.
finalstoragestringOptionalDefault: "temp"Artifact storage tier: temp (default, retained about 7 days) or persistent (long-term, billed by size). Insufficient balance or exceeding the storage cap silently downgrades to temp; the effective tier is shown in the task detail response.
temppersistentRequest examples
# Submit an async task; returns a taskId immediately (no waiting for generation)
curl -X POST "https://api.hiapi.ai/v1/tasks" \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "recraft/creative-upscale",
"input": {
"image_url": "…"
}
}' const res = await fetch("https://api.hiapi.ai/v1/tasks", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.HIAPI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "recraft/creative-upscale",
input: {
"image_url": "…"
}
}),
});
const task = await res.json();
// { code: 200, message: "success", data: { taskId } } import os, requests
res = requests.post(
"https://api.hiapi.ai/v1/tasks",
headers={"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"},
json={
"model": "recraft/creative-upscale",
"input": {
"image_url": "…"
}
},
)
print(res.json()) # { code, message, data: { taskId } } 200 OK
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-01HZTQ8BX2N3GM3YFK4Z9D7VQR"
}
} 400 Bad Request
{
"code": 400,
"message": "invalid request",
"data": null,
"error_code": "INVALID_REQUEST"
} Get task detail
https://api.hiapi.ai/v1/tasks/:id Response fields
taskIdstringRequiredTask ID, always prefixed with tk-hiapi-.
modelstringRequiredResolved full model name. Tasks submitted with the route parameter return base@route (e.g. gpt-image-2/text-to-image@ext); otherwise identical to the name passed at creation.
routestringOptionalPresent only when the task was submitted with an explicit route parameter; echoes the submitted value.
statusstringRequiredTask status.
queued Queued, not started yet.
handling Being processed.
archiving Processing finished, artifacts being prepared.
success Terminal: completed, artifacts available (output returned).
fail Terminal: failed (error returned).
After submission, check status: success and fail are terminal, everything else is non-terminal. Poll every 1–3 seconds until terminal. On success, download artifacts from output[].url and transfer them before expireAt; pass storage: "persistent" at creation time when long-term retention is needed.
creatednumberRequiredTask creation time (Unix seconds).
completednumberRequiredUnix seconds when the task reached a terminal state; fixed to 0 while not terminal.
outputarrayOptional
Present only when status == success. Artifact list — always an array; a single task may return multiple types at once (e.g. video + first_frame).
Array [ object ]
Array items
urlstringRequiredArtifact URL, directly downloadable.
typestringRequiredCurrent possible values: video, image, audio, first_frame, last_frame, thumbnail; more may be added later.
expireAtnumberRequiredUnix seconds until which the artifact remains accessible; download or transfer before it expires.
errorobjectOptional
Present only when status == fail.
codestringRequiredBusiness error code.
messagestringRequiredError description.
Response examples
Success
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-01HZTQ8BX2N3GM3YFK4Z9D7VQR",
"model": "happyhorse-1-0",
"status": "success",
"created": 1777282033,
"completed": 1777282099,
"output": [
{
"url": "https://cdn.hiapi.ai/tasks/.../video.mp4",
"type": "video",
"expireAt": 1777886899
}
]
}
} Processing (non-terminal)
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-...",
"model": "happyhorse-1-0",
"status": "archiving",
"created": 1777282033,
"completed": 0
}
} Failed
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-...",
"model": "happyhorse-1-0",
"status": "fail",
"created": 1777282033,
"completed": 1777282099,
"error": {
"code": "TASK_FAILED",
"message": "task failed"
}
}
} Articles
View all articles →Related Models
View all models →Same Type
-
Recraft Crisp Upscale Recraft $0.004 /image -
Google Virtual Try-On Google $0.107 /image -
FLUX.1 Fill Pro Black Forest Labs $0.071 /image -
GPT Image 2 OpenAI $0.007 /image -
GPT Image 2.5 OpenAI $0.017 /image -
Qwen Image 2.0 Alibaba $0.042 /image -
Ideogram V4.5 Ideogram $0.011 /image -
Grok Imagine Quality xAI $0.070 /image -
FASHN Tryon v1.6 FASHN $0.107 /image -
BRIA Product Shot Bria $0.058 /image -
Muse Image 1.0 Meta $0.015 per task -
FLUX 3 Image Black Forest Labs $0.041 /image