Consistency from a single image
It generates unlimited variations of a character from just one reference photo, skipping the traditional LoRA training that needs many images and setup time.
Ideogram's character-consistency model (Jul 2025) that keeps the same person or character recognizable across scenes, poses, and styles, all from a single reference image.
Integrate Ideogram Character with a single API call — one key, one unified endpoint, and shared billing across every model on Apiframe.
model: "ideogram-character" It generates unlimited variations of a character from just one reference photo, skipping the traditional LoRA training that needs many images and setup time.
It detects facial features and hair to build a core identity map, then preserves that identity across new environments, poses, and contexts.
The same approach handles real people and invented characters, and can move them between scenes and art styles.
Auto picks intelligently, Realistic targets photographic output for portraits and fashion, and Fiction leans into stylized and artistic looks.
A character mask controls hair, clothing, and accessories, while Magic Fill drops the character into an existing scene, and Remix and Face Swap extend the workflow.
It supports many aspect ratios and resolutions and runs on the web, on iOS, and via the Character API, with a free tier to start.
Example prompts you can run through the Ideogram Character API on Apiframe.
Place this character in a cozy coffee shop reading a book, natural window light, keep their face and hair.
Show this character as an astronaut floating in space, keep their identity, cinematic lighting.
Generate this character in three outfits, a business suit, casual weekend wear, and athletic gear, same face.
Turn this character into an anime-style illustration, keeping their recognizable features.
A children's book scene of this character planting a garden, soft watercolor style.
A professional headshot of this person against a neutral grey background, realistic style.
Send a single POST /v2/images/generate request with your API key to
generate with Ideogram Character. The call returns a jobId you can poll or
receive via webhook.
curl -X POST https://api.apiframe.ai/v2/images/generate \
-H "X-API-Key: afk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"prompt": "a sleek silver sports car on a coastal highway at sunset, hyper-realistic",
"model": "ideogram-character",
"ideogramParams": {
"character_reference_image": "https://example.com/input.jpg",
"style_type": "AUTO",
"magic_prompt_option": "Auto",
"negative_prompt": "What you do NOT want to see…"
}
}'import requests
response = requests.post(
"https://api.apiframe.ai/v2/images/generate",
headers={
"X-API-Key": "afk_your_api_key_here",
"Content-Type": "application/json",
},
json={
"prompt": "a sleek silver sports car on a coastal highway at sunset, hyper-realistic",
"model": "ideogram-character",
"ideogramParams": {
"character_reference_image": "https://example.com/input.jpg",
"style_type": "AUTO",
"magic_prompt_option": "Auto",
"negative_prompt": "What you do NOT want to see…"
}
},
)
print(response.json()) # { "jobId": "...", "status": "QUEUED" }const response = await fetch("https://api.apiframe.ai/v2/images/generate", {
method: "POST",
headers: {
"X-API-Key": "afk_your_api_key_here",
"Content-Type": "application/json",
},
body: JSON.stringify({
"prompt": "a sleek silver sports car on a coastal highway at sunset, hyper-realistic",
"model": "ideogram-character",
"ideogramParams": {
"character_reference_image": "https://example.com/input.jpg",
"style_type": "AUTO",
"magic_prompt_option": "Auto",
"negative_prompt": "What you do NOT want to see…"
}
}),
});
const { jobId } = await response.json();
console.log(jobId);Generation is asynchronous. A successful submission returns 202 Accepted with a jobId. Poll GET /v2/jobs/{id} (or supply a webhook_url) until the status is COMPLETED; the result field then holds the output URL(s).
{
"jobId": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
"status": "QUEUED"
}curl https://api.apiframe.ai/v2/jobs/JOB_ID \
-H "X-API-Key: afk_your_api_key_here"import requests, time
while True:
job = requests.get(
"https://api.apiframe.ai/v2/jobs/JOB_ID",
headers={"X-API-Key": "afk_your_api_key_here"},
).json()
if job["status"] in ("COMPLETED", "FAILED"):
break
time.sleep(2)
print(job["result"])let job;
do {
await new Promise((r) => setTimeout(r, 2000));
job = await fetch("https://api.apiframe.ai/v2/jobs/JOB_ID", {
headers: { "X-API-Key": "afk_your_api_key_here" },
}).then((r) => r.json());
} while (job.status !== "COMPLETED" && job.status !== "FAILED");
console.log(job.result);Request parameters accepted by the Ideogram Character endpoint. Model-specific options are nested under the params object shown below.
| Parameter | Type | Required | Default | Allowed / range | Description |
|---|---|---|---|---|---|
| prompt | string | required | — | — | Text description of what to generate. |
| model | string | required | "ideogram-character" | "ideogram-character" | The model identifier for this endpoint. |
| ideogramParams.character_reference_image | string (URL) | optional | — | — | Required — the character to keep consistent across generations. |
| ideogramParams.style_type | string | optional | "AUTO" | "AUTO", "GENERAL", "REALISTIC", "DESIGN" | Style |
| ideogramParams.magic_prompt_option | string | optional | "Auto" | "Auto", "On", "Off" | Let Ideogram rewrite your prompt for better results. |
| ideogramParams.negative_prompt | string | optional | — | — | Negative prompt |
| ideogramParams.rendering_speed | string | optional | "default" | "default", "turbo", "quality" | Rendering speed |
| ideogramParams.seed | number | optional | — | step 1 | Reuse a number to reproduce the same result. |
Common questions about the Ideogram Character API.
A specialized model that keeps a character visually consistent across many generated images, using a single reference photo.
Just one. It avoids the multi-image LoRA training that older consistency methods required.
Yes. It handles both real people and invented characters across scenes and styles.
A clear, high-quality reference with visible facial features, plus a prompt that states both what to change and what to keep.
It is free to use on ideogram.ai and the iOS app, with Plus and Pro tiers adding unlimited generations, private creation, and more credits.
Through Apiframe, as well as ideogram.ai, the iOS app, and the Character API.
Still have questions?
Get your API key and integrate Ideogram Character in minutes — Pay-as-you-go.
Questions? Join our Discord or contact sales.