Recraft AI Recraft V4 Pro Text To Vector API Documentation
Playground
Try it on WaveSpeedAI!Recraft V4 Pro generates premium-quality SVG vector graphics from text prompts, designed for professional design and branding. Ready-to-use REST inference API, best performance, no cold starts, affordable pricing.
Features
Recraft V4 Pro Text-to-Vector is the premium tier for vector graphic generation, delivering the highest quality scalable SVG output from text descriptions. Ideal for professional logo design, detailed character illustrations, and premium design assets that require maximum fidelity.
Why Choose This?
-
Pro-tier vector quality Maximum detail, cleaner paths, and superior rendering in the Recraft vector family.
-
True vector output Generates scalable SVG files that remain crisp at any size — no pixelation.
-
Enhanced detail handling Better at complex compositions and fine details compared to standard V4.
-
Flexible aspect ratios Multiple options including 1:1, 16:9, 9:16, 4:3, and 3:4 for various use cases.
-
Prompt Enhancer Built-in tool to automatically improve your descriptions for better results.
Parameters
| Parameter | Required | Description |
|---|---|---|
| prompt | Yes | Text description of the desired vector graphic |
| image_size | No | Aspect ratio: 1:1, 16:9, 9:16, 4:3, 3:4 (default: 1:1) |
How to Use
- Write your prompt — describe the vector graphic, including style and composition.
- Choose aspect ratio — select the format that fits your design needs.
- Use Prompt Enhancer (optional) — click to automatically refine your description.
- Run — submit and download your generated SVG.
Pricing
| Output | Cost |
|---|---|
| Per image | $0.30 |
Best Use Cases
- Professional Logo Design — Premium quality scalable logos and brand marks.
- Detailed Character Design — High-fidelity flat color character illustrations.
- Premium Brand Assets — Professional-grade graphics for corporate identity.
- Print Production — Scalable assets for large-format printing.
- App & Game Assets — Detailed icons and illustrations for digital products.
Pro Tips
- Use detailed, design-focused prompts — specify “3d flat color”, “vector style”, or artistic direction.
- Pro tier handles more complex compositions and finer details than standard V4.
- Try the Prompt Enhancer to automatically improve your descriptions.
- Match aspect ratio to your final use: 1:1 for icons and avatars, 3:4 for character designs.
- Generated SVGs can be further refined in vector design tools like Figma or Illustrator.
Notes
- Prompt is the only required field.
- Output is scalable vector format (SVG).
- Pro tier recommended for professional and commercial design work.
Related Models
- Recraft V4 Text-to-Vector — Standard tier at lower cost.
- Recraft V4 Text-to-Image — Generate raster images from text.
- Recraft V4 Pro Text-to-Image — Pro tier image generation.
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",
"size": "1024*1024"
}
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/text-to-vector" \
-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 description of the vector image to generate (max 10,000 characters). | |
| size | string | No | 1024*1024 | - | The size of the generated media in pixels (width*height). |
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 |