Recraft AI Recraft V4 Create Style API Documentation

Recraft AI Recraft V4 Create Style API Documentation

Playground

Try it on WaveSpeedAI!

Recraft V4 Create Style creates a reusable 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 Create Style creates a reusable visual style from reference images. Upload 1 to 10 images, choose a base style, and control how strictly the generated style should match the references.


Why Choose This?

  • Reference-based style creation
    Create a reusable style from uploaded reference images.

  • Multi-image style input
    Use 1 to 10 images to define the visual direction more clearly.

  • Style match control
    Choose between precise matching and more flexible interpretation.

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

  • Simple style workflow
    Upload references, choose style settings, and generate a reusable style result.


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 the reusable style result.

Pricing

Pricing is fixed at $0.0055 per request.

OutputCost
One style creation request$0.0055

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


Best Use Cases

  • Brand style creation — Build a reusable style from brand visuals or campaign references.
  • Illustration style matching — Capture the look of vector or illustrated reference images.
  • Creative consistency — Reuse a generated style across later image generation workflows.
  • Visual direction testing — Create style presets from multiple references for design exploration.
  • Production workflows — Standardize image style before generating larger creative batches.

Pro Tips

  • Use visually consistent reference images for stronger style extraction.
  • Provide multiple images when the style is complex or needs better definition.
  • Use precise when the output should closely follow the reference style.
  • 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 standard Recraft V4 style_id only with recraft-v4-style models.
  • Use a Recraft V4 Style Pro style_id only with recraft-v4-style-pro 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/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.