Recraft AI Recraft V4 Pro Create Style API Documentation

Recraft AI Recraft V4 Pro Create Style API Documentation

Playground

Try it on WaveSpeedAI!

Recraft V4 Pro Create Style creates a reusable Recraft style ID from reference images, enabling consistent visual style control for image generation, brand assets, design systems, marketing visuals, and creative production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Recraft V4 Pro Create Style creates a reusable Pro style from reference images. Upload 1 to 10 images, choose a base style, and control how closely the generated style should match the references.


Why Choose This?

  • Reusable Pro style creation
    Create a reusable style ID for Recraft V4 Style Pro generation workflows.

  • Reference-based style capture
    Use uploaded images to define the visual style, mood, composition, and design language.

  • Multi-image input
    Upload 1 to 10 reference images for stronger and more consistent style extraction.

  • Style match control
    Choose precise for closer reference matching or flexible for broader interpretation.

  • Base style selection
    Use any for general styles or vector_illustration for vector-style references.


Parameters

ParameterRequiredDescription
imagesYesReference images used to create the reusable style. Supports 1 to 10 image URLs.
base_styleNoBase style type: any or vector_illustration. Default: any.
matchNoStyle match mode: precise or flexible. Default: precise.

How to Use

  1. Upload reference images — Provide 1 to 10 images that represent the style you want to capture.
  2. Choose base style — Use any for general style creation or vector_illustration for vector-style output.
  3. Set match mode — Use precise for closer style matching or flexible for broader interpretation.
  4. Submit — Generate a reusable Pro style result.

Pricing

Pricing is fixed at $0.0055 per request.

OutputCost
One Pro style creation request$0.0055

images, base_style, and match do not add separate charges.


Best Use Cases

  • Pro style creation — Create reusable style IDs for Recraft V4 Style Pro workflows.
  • Brand visual systems — Capture brand visuals, campaign looks, or design directions from references.
  • Illustration style matching — Build reusable styles from vector or illustration references.
  • Creative consistency — Reuse the same style across later image or vector generation tasks.
  • Production workflows — Standardize style before generating larger creative batches.

Pro Tips

  • Use visually consistent reference images for stronger style extraction.
  • Provide multiple references when the style is complex or needs better definition.
  • Use precise when the generated style should closely follow the references.
  • Use flexible when you want the model to generalize the style more broadly.
  • Use vector_illustration when the references are clearly vector-style or flat illustration assets.

Notes

  • The generated style_id must be used with the matching model version.
  • Use a Recraft V4 Style Pro style_id only with recraft-v4-style-pro models.
  • Use a standard Recraft V4 style_id only with recraft-v4-style models.
  • Do not mix standard and Pro style IDs across model versions.

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'
{
  "images": [
    "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg"
  ],
  "base_style": "any",
  "match": "precise"
}
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-pro/create-style" \
  -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="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"

# 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|deleted) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    *) sleep 2 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
imagesarray<string>Yes-1 ~ 10 itemsUpload 1 to 10 images used to create the reusable style.
base_stylestringNoanyany, vector_illustration-
matchstringNopreciseprecise, flexible-

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.statusstringTask status. completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses.
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<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.urlsobjectObject containing related API endpoints
data.statusstringStatus: completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.