Recraft AI Recraft V4 Text To Vector API Documentation
Playground
Try it on WaveSpeedAI!Recraft V4 generates native SVG vector graphics from text prompts, ideal for logos, icons, and design assets. Ready-to-use REST inference API, best performance, no cold starts, affordable pricing.
Features
Recraft V4 Text-to-Vector generates scalable vector graphics (SVG) from text descriptions. Perfect for logos, icons, illustrations, and design assets that need to scale infinitely without losing quality.
Why Choose This?
-
True vector output Generates scalable SVG files that remain crisp at any size — no pixelation.
-
Design-ready assets Output is immediately usable in design tools like Figma, Illustrator, and Sketch.
-
Flexible aspect ratios Multiple options including 1:1, 16:9, 9:16, 4:3, and 3:4 for various use cases.
-
Flat color styles Ideal for 3D flat color designs, character illustrations, and modern graphic styles.
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: 3:4) |
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.
- Run — submit and download your generated SVG.
Pricing
| Output | Cost |
|---|---|
| Per image | $0.08 |
Best Use Cases
- Logo Design — Generate scalable logo concepts and brand marks.
- Icon Creation — Create app icons, UI icons, and pictograms.
- Character Design — Flat color character illustrations for branding and media.
- Marketing Assets — Scalable graphics for print and digital campaigns.
- Stickers & Merchandise — Design assets that scale to any size without quality loss.
Pro Tips
- Use clear, design-focused prompts — specify “flat color”, “vector style”, or “minimalist” for best results.
- Vector output works best with simpler compositions and solid color areas.
- Match aspect ratio to your final use: 1:1 for icons, 3:4 for character designs, 16:9 for banners.
- Generated SVGs can be further edited in vector design tools.
Notes
- Prompt is the only required field.
- Output is scalable vector format (SVG).
- Best suited for flat color, illustrative styles rather than photorealistic imagery.
Related Models
- Recraft V4 Pro Text-to-Vector — Pro tier with enhanced quality.
- 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/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 |