Ideogram AI Ideogram Vector Text To Vector API Documentation

Ideogram AI Ideogram Vector Text To Vector API Documentation

Playground

Try it on WaveSpeedAI!

Ideogram Vector Text-to-Vector creates editable SVG graphics from text prompts and optional reference images, with flexible aspect ratios and three quality levels. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Ideogram Vector Text-to-Vector generates editable SVG graphics from text descriptions, with optional reference images for additional visual guidance. Create logos, icons, illustrations, lettering, and other scalable artwork that stays sharp at any size.


Why Choose This?

  • Editable SVG output — Continue refining the result in a vector editor.
  • Reference image support — Add up to 5 images to guide the design.
  • Flexible framing — Choose from a wide range of aspect ratios.
  • Three quality levels — Select low, medium, or high depending on your quality needs.
  • Scalable graphics — Generate artwork suitable for digital, print, branding, and interface workflows.

Parameters

ParameterRequiredDescription
promptYesDescribe the artwork to generate. Supports 1–9500 characters.
imagesNoUp to 5 reference images, each up to 10 MB. The first image acts as the primary reference.
aspect_ratioNoOutput aspect ratio. Default: 1:1.
qualityNoGeneration quality: low, medium, or high. Default: medium.

How to Use

  1. Write a prompt — Describe the subject, shapes, colors, composition, style, and any text.
  2. Add references optional — Upload up to 5 images when visual guidance is needed.
  3. Choose framing — Select the desired aspect ratio.
  4. Choose quality — Use low, medium, or high.
  5. Submit — Generate and retrieve the SVG.

Pricing

QualityWithout Reference ImagesWith Reference Images
Low$0.145$0.145
Medium$0.180$0.180
High$0.220$0.360

Reference images affect pricing only when quality=high.

The number of reference images does not add additional charges within the supported limit.


Best Use Cases

  • Logos and brand marks — Create scalable branding concepts and symbols.
  • Icons and interface graphics — Generate clean vector assets for digital products.
  • Posters and lettering — Produce graphic layouts with scalable text and shapes.
  • Illustrations — Create vector artwork for editorial, marketing, and creative projects.
  • Print assets — Generate graphics that remain sharp at different output sizes.

Pro Tips

  • Describe the desired shapes, colors, composition, and visual style clearly.
  • Put text that should appear in the artwork inside quotation marks.
  • Use reference images that clearly show the visual elements you want to retain.
  • Place the most important reference image first.
  • Use high quality when greater detail is needed.

Notes

  • Each request generates one SVG.
  • Reference images are optional.
  • Up to 5 reference images are supported.
  • Each reference image can be up to 10 MB.
  • Supported aspect ratios are 1:1, 1:4, 1:3, 1:2, 9:16, 10:16, 2:3, 3:4, 4:5, 5:4, 4:3, 3:2, 16:10, 16:9, 2:1, 3:1, and 4:1.
  • Review text and fine details before using the generated artwork in production.

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",
  "aspect_ratio": "1:1",
  "quality": "medium"
}
JSON
)

# 1. Submit the prediction once. Never retry this request automatically:
# a retry after an unclear failure can create a second, billed task.
CHECK='The task may already exist. Check History or the predictions list before submitting again.'
if ! SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  --connect-timeout 10 --max-time 60 \
  -X POST "https://api.wavespeed.ai/api/v3/ideogram-ai/ideogram-vector/text-to-vector" \
  -H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}"); then
  printf 'Submit failed. %s\n' "${CHECK}" >&2
  exit 1
fi

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. %s\n' "${CHECK}" >&2
  exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"

# 2. Poll until the prediction reaches a final status.
BODY_FILE=$(mktemp)
trap 'rm -f "${BODY_FILE}"' EXIT
while true; do
  # Transient errors (429, 5xx) are retried, honoring Retry-After.
  HTTP_CODE=$(curl --silent --show-error --fail-with-body \
    --connect-timeout 10 --max-time 60 --retry 5 --retry-delay 2 \
    --output "${BODY_FILE}" --write-out '%{http_code}' \
    "${RESULT_URL}" \
    -H "Authorization: Bearer ${WAVESPEED_API_KEY}" || true)
  case "${HTTP_CODE}" in
    2??) ;;
    000|429|5??)  # dropped connection or temporary error: keep polling
      printf 'Task %s: HTTP %s, polling again in 10s\n' "${PREDICTION_ID}" "${HTTP_CODE}" >&2
      sleep 10; continue ;;
    *) printf 'Task %s: HTTP %s\n' "${PREDICTION_ID}" "${HTTP_CODE}" >&2
      cat "${BODY_FILE}" >&2; exit 1 ;;
  esac
  RESULT=$(jq 'if type == "object" and has("data") then .data else . end' "${BODY_FILE}")
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  case "${STATUS}" in
    completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
    failed|cancelled|timeout|deleted)
      printf 'Task %s ended with status %s\n' "${PREDICTION_ID}" "${STATUS}" >&2
      printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    *) sleep 2 ;;
  esac
done

Retry temporary errors only while polling, never the submit request. Errors, retries and timeouts

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringYes1 ~ 9500 charactersDescribe the SVG artwork to generate.
imagesarray<string>No-0 ~ 5 items · each item: 1 ~ unlimited characters · pattern: ^https?://Optional reference images, up to five and 10 MB each. The first is the primary source.
aspect_ratiostringNo1:11:1, 1:4, 1:3, 1:2, 9:16, 10:16, 2:3, 3:4, 4:5, 5:4, 4:3, 3:2, 16:10, 16:9, 2:1, 3:1, 4:1Output SVG aspect ratio.
qualitystringNomediumlow, medium, highGeneration quality and price tier.

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.