Recraft AI Recraft V4.1 Pro Text To Image Utility API Documentation
Playground
Try it on WaveSpeedAI!Recraft V4.1 Utility Pro is a fast AI raster image generation model that combines premium V4.1 Pro output quality with a faster utility runtime for high-volume image creation. Ready-to-use REST inference API for marketing visuals, product mockups, brand assets, social media content, creative design, and scalable text-to-image workflows with simple integration, no coldstarts, and affordable pricing.
Features
Recraft V4.1 Pro Text-to-Image Utility combines premium Recraft V4.1 Pro image quality with a faster utility-oriented runtime for high-volume raster generation. It is designed for workflows that need polished visual output while keeping generation practical for larger-scale content production.
Why Choose This?
-
Premium raster quality Generate polished high-resolution raster images with the visual quality of Recraft V4.1 Pro.
-
Utility-focused runtime Better suited for faster, higher-volume generation workflows than the standard premium path.
-
Simple prompt-based workflow Turn natural-language descriptions into finished images with minimal setup.
-
Preset image sizing Use
image_sizepresets for predictable output framing and composition. -
Production-ready generation Suitable for content production, marketing assets, design workflows, and creative ideation at scale.
Parameters
| Parameter | Required | Description |
|---|---|---|
| prompt | Yes | Text prompt describing the image you want to generate. |
| image_size | No | Output image size preset. Default: square_hd. |
How to Use
- Write your prompt — describe the subject, style, composition, lighting, and mood you want.
- Choose image size (optional) — select the preset that best fits your intended layout.
- Submit — run the model and download the generated image.
Example Prompt
A premium modern product photo of a skincare bottle on clean stone, soft natural lighting, refined shadows, elegant editorial style, minimal luxury branding aesthetic
Output
Returns one raster image URL in the standard WaveSpeed prediction response.
Pricing
Recraft official API pricing is a flat rate per image.
| Output | Cost |
|---|---|
| Per image | $0.25 |
Billing Rules
- Each generated image costs $0.25
- Pricing is fixed per image
image_sizedoes not affect pricing
Best Use Cases
- High-volume content generation — Produce many polished raster images efficiently.
- Marketing creatives — Generate campaign visuals, banners, and branded assets.
- Product imagery — Create clean commercial-style product visuals from prompts.
- Design workflows — Generate raster assets for presentations, ads, and publishing.
- Creative ideation — Explore multiple visual directions with premium output quality.
Pro Tips
- Be specific in your prompt about subject, style, lighting, and composition.
- Use concise but descriptive prompts for more controllable results.
- Start with the default size preset unless you need a specific layout.
- Use this utility variant when you want premium-looking outputs in a more throughput-friendly workflow.
Notes
promptis required.image_sizedefaults tosquare_hd.- The model returns a single raster image per request.
- Pricing is fixed at $0.25 per image.
Related Models
- Recraft V4.1 Text-to-Image — Standard raster image generation at a lower price point.
- Recraft V4.1 Pro Text-to-Image — Premium raster generation without the utility-oriented runtime focus.
- Recraft V4.1 Text-to-Vector — Generate editable SVG-style vector images from text prompts.
- Recraft V4.1 Pro Text-to-Vector — Premium vector generation for higher-end editable SVG outputs.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
set -euo pipefail
export WAVESPEED_API_KEY="your-api-key"
REQUEST_BODY=$(cat <<'JSON'
{
"prompt": "A cinematic ocean wave at sunrise, highly detailed",
"image_size": "1:1"
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/recraft-ai/recraft-v4.1-pro/text-to-image-utility" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
-H "Content-Type: application/json" \
-d "${REQUEST_BODY}")
TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
printf 'Submission response did not contain a prediction id
' >&2
exit 1
fi
RESULT_URL=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi
# 2. Poll until the prediction finishes.
while true; do
RESPONSE=$(curl --silent --show-error --fail-with-body \
"${RESULT_URL}" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}")
RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')
case "${STATUS}" in
completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
failed|cancelled|timeout) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
created|processing) sleep 2 ;;
*) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
esac
doneParameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| prompt | string | Yes | - | Text prompt for the generated image. | |
| image_size | string | No | 1:1 | 1:1, 16:9, 9:16, 4:3, 3:4 | Output image size preset. |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Output values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction |
| data.model | string | Model ID used for the prediction |
| data.outputs | array<string | object> | Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model. |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to poll for the prediction result |
| data.status | string | Status: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |