Ideogram AI Ideogram Character API Documentation

Ideogram AI Ideogram Character API Documentation

Playground

Try it on WaveSpeedAI!

Ideogram Character creates consistent characters from one reference image, in many styles, and supports inpainting to place the character into existing images. Ready-to-use REST API, no coldstarts, affordable pricing.

Features

Edit a single character image with text instructions. Ideogram Character is designed for changing outfits, appearance details, and visual styles based on the uploaded source image while keeping the character recognizable.


Why It Looks Great

  • Character-focused editing
    Modify a character directly from a single source image while retaining key visual traits.

  • Style modes
    Choose from Auto, Fiction, or Realistic styles to match your creative direction.

  • Rendering speed options
    Balance speed and quality with Turbo, Default, or Quality modes.

  • Flexible aspect ratios
    Choose from five output formats for different layouts.


Parameters

ParameterRequiredDescription
promptYesText instruction describing the edit you want to make.
imageYesSingle source image to edit. Upload an image or provide a public URL.
styleNoOutput style: Auto, Fiction, or Realistic. Default: Auto.
rendering_speedNoProcessing mode: Turbo, Default, or Quality. Default: Default.
aspect_ratioNoOutput format: 1:1, 16:9, 9:16, 4:3, or 3:4. Default: 1:1.

How to Use

  1. Write your edit instruction — Describe the changes you want, such as outfit, appearance, or style.
  2. Use Prompt Enhancer optional — Refine your instruction for clearer editing direction.
  3. Upload one source image — Provide the character image you want to edit.
  4. Choose style — Select Auto, Fiction, or Realistic based on the desired look.
  5. Select rendering speed — Choose Turbo for speed, Quality for final detail, or Default for balance.
  6. Set aspect ratio — Pick the output format that fits your use case.
  7. Run — Generate the edited character image.
  8. Download — Preview and save your result.

Pricing

Pricing varies by rendering speed.

Rendering SpeedCostBest For
Turbo$0.10Quick previews, rapid iteration, testing concepts
Default$0.15General use, balanced quality and speed
Quality$0.20Final deliverables, maximum detail and refinement

Examples

Rendering Speed5 Images10 Images50 Images
Turbo$0.50$1.00$5.00
Default$0.75$1.50$7.50
Quality$1.00$2.00$10.00

Best Use Cases

  • Fashion and outfit changes — Swap clothing, change colors, or modify accessories.
  • Character design — Create variations of a character with different looks.
  • Portrait editing — Adjust appearance details based on the uploaded source image.
  • Style exploration — Transform a character between realistic and fictional aesthetics.
  • Content creation — Generate outfit, look, or character variations for creative projects.

Example Prompts

  • “Change her outfit to a red dress while keeping the lighting natural.”
  • “Change the shirt to a blue business suit.”
  • “Add sunglasses and a leather jacket.”
  • “Transform the character into a fantasy warrior with armor.”
  • “Change the hair color to blonde and keep everything else the same.”
  • “Dress the character in a casual summer outfit with a white t-shirt and jeans.”

Style Guide

StyleDescriptionBest For
AutoAutomatically determines the best styleGeneral use
FictionStylized, artistic, or illustrative lookFantasy, anime-inspired, and creative content
RealisticPhotorealistic and natural appearanceFashion, portraits, and professional use

Pro Tips for Best Results

  • Be specific about what to change and what to preserve.
  • Use Realistic style for fashion and portrait edits.
  • Use Fiction style for fantasy, stylized, or creative character looks.
  • Start with Turbo mode to test the prompt, then switch to Quality for final output.
  • Describe outfit changes clearly, including color, style, material, and accessories.
  • For better consistency, use a clear source image and keep the requested changes focused.
  • Match aspect ratio to your intended platform: 1:1 for profiles, 9:16 for stories, and 16:9 for banners.

Notes

  • This endpoint uses a single source image for character editing. Separate character-reference and target-image inputs are not supported.
  • If using a URL for the image, ensure it is publicly accessible.
  • enable_base64_output is only available through the API.
  • Processing time varies by rendering speed selection.
  • Enable Safety Checker for content that will be publicly shared.

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",
  "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
  "style": "Auto",
  "rendering_speed": "Default",
  "aspect_ratio": "1:1"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/ideogram-ai/ideogram-character" \
  -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
promptstringYes-The positive prompt for the generation.
imagestringYes-An image to use as a character reference.
stylestringNoAutoAuto, Fiction, RealisticThe character style type. Auto, Fiction, or Realistic.
rendering_speedstringNoDefaultDefault, Turbo, QualityRendering speed. Turbo for faster and cheaper generation, quality for higher quality and more expensive generation, default for balanced.
aspect_ratiostringNo1:11:1, 16:9, 9:16, 4:3, 3:4The aspect ratio of the generated media.
enable_base64_outputbooleanNofalse-If set to `true`, the prediction's `output` strings are returned as **naked base64** (no `data:<mime>;base64,` prefix). When `false` (default), outputs are returned as URLs pointing to our CDN.

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.