Recraft
Recraft Crisp Upscale
recraft/crisp-upscale
A lightweight AI image upscaler that balances denoising with detail preservation while upscaling, at low per-use cost, making it ideal as a final sharpening step in design workflows
Try recraft/crisp-upscale
Input
Showcases
View all showcasesOutput
imagePricing
recraft/crisp-upscale per image
| Unit Price | $0.004 |
|---|
Positioning Overview
recraft/crisp-upscale is an image upscaling and enhancement model released by Recraft. It performs super-resolution and sharpness enhancement on existing images in an image-to-image manner, preserving details and suppressing noise during upscaling. It is intended for developers who need to improve image resolution and is well suited as a post-processing step for design drafts, marketing assets, or generated images; integration only requires passing in the public URL of an image, and the output is the enhanced image.
Key Highlights
- Balances upscaling and denoising, not simple interpolation — the model analyzes the image to improve resolution and sharpness rather than directly stretching pixels.
- Low integration barrier — only a public image URL is needed, with support for common formats such as JPEG, PNG, and WEBP.
- Focused on post-processing rather than generation — positioned as a lightweight image enhancement step that can be chained and reused with generation workflows.
Capability Description
AI image super-resolution enhancement: improves the resolution and sharpness of the input image, producing a high-definition version that is ready to use.
Detail preservation and denoising: balances detail preservation and noise suppression during upscaling, reducing the blurriness of low-resolution assets.
Handling of faces and small details: applies targeted enhancement to small-scale details and face regions in the image, improving the local visual quality.
Invocation requires only an image URL: the request body only needs to provide the public URL of the image; supported formats are JPEG, PNG, and WEBP, and each file must not exceed 10MB.
Use Cases
- Designers: low-resolution design drafts and small marketing images — input blurry or small-size assets and output high-definition usable images for direct use in layouts and advertising materials.
- Developers: post-processing of generated images — send images output by design-oriented models into the upscaling step to obtain clearer final products for downstream display.
- Content teams: clarifying low-resolution old photos and legacy assets — enhance existing low-resolution images for use on websites, in documents, or in preparation for printing.
- Engineering side: batch image preprocessing — uniformly improve image resolution and sharpness in the pipeline for downstream services or printing.
Limitations and Selection Advice
This model only performs image upscaling and sharpness enhancement and does not have generation capabilities such as text-to-image; an existing image must be provided. The official documentation does not promise complete removal of all noise, so if the results do not meet requirements, additional processing must be handled separately; the input file limit is 10MB. If the goal is to generate new images or vector design drafts, a generation-oriented model should be chosen instead of this model; if the focus is on refining small details and faces, other enhancement-focused versions from the same family may be considered. Billing is per image, and the specific price is subject to the platform's pricing panel.
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/crisp-upscale
routestringOptionalCurrent fixed value: default
inputobjectRequired
Business parameters for recraft/crisp-upscale and route default — see the parameter table below.
image_urlstringRequiredminLength 1pattern ^https?://Publicly accessible URL of the image to upscale, supporting JPEG, PNG, or WEBP format, with a maximum file size of 10 MB.
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/crisp-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/crisp-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/crisp-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
-
Ideogram V3 Character Ideogram $0.090 /image -
FLUX.1 Kontext Max Black Forest Labs $0.071 /image -
FLUX.1 Schnell Black Forest Labs $0.005 /image -
FLUX.1 Fill Pro Black Forest Labs $0.071 /image -
Muse Image 1.0 Meta $0.015 per task -
FLUX.2 Klein 4B Black Forest Labs $0.0004 /image -
Qwen Image 3.0 Alibaba $0.036 /image -
Qwen Image 2.1 Alibaba $0.020 /image -
FLUX 3 Image Black Forest Labs $0.041 /image -
Google Virtual Try-On Google $0.107 /image -
Nano Banana Pro Google $0.057 /image -
Krea 3 Krea $0.036 /image







