ideogram-mcp
ideogram-mcp is an MCP server that lets you generate, edit, remix, reframe, background-replace, upscale, and describe images through Ideogram's v1 API from any MCP client over stdio.
Generate images from text prompts with Ideogram 3.0 or 4.0, including aspect ratio/resolution, rendering speed, style type, seed, negative prompt, and copyright detection.
Edit images with mask-based inpainting (black = edit, white = keep).
Remix/transform an image with a new prompt and adjustable image weight (0-100).
Reframe/outpaint an image to one of 69 target resolutions.
Replace an image background while preserving the foreground subject.
Upscale images with guided enhancement and resemblance/detail controls.
Describe an image as text using V_2 or V_3 describe models.
Apply style controls: up to 3 style reference images, a character reference image with optional mask, style codes, style presets, and preset/custom color palettes.
Use local .png/.jpg/.jpeg/.webp inputs up to 25 MB each (50 MB total per multi-file request) and save outputs to a configured directory with guarded downloads and validation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ideogram-mcpGenerate a realistic image of an astronaut holding a flower"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@qmediat.io/ideogram-mcp
MCP server for the Ideogram platform through its v2 API: every image and video model Ideogram sells through one API key — Ideogram 4.5, 4.0, 3.0, 2a and 2.0, GPT Image, Nano Banana, P-Image, Z-Image, the Topaz upscalers; Seedance 2.5 and 2, Kling 3, MiniMax H3 for video — for generate, precise edit, inpaint, remix, reframe, replace background, remove background, remove object, upscale, describe, layerize and video (from a prompt, an image or references), the commercial tools (ad localizer, resizer and variations, colorways, ghost mannequin, material swap, model pose variants, sketch to render), the utilities (magic prompt, layerize logos, provenance, snap mask), plus the account's usage, invoices and keys and custom-model training, from Claude Code, Claude Desktop or any MCP client over stdio. Every call can be priced first (the API's own dry run), long jobs are returned by id and collected later, and any other operation the release serves is one validated raw call away. Built from Ideogram's OpenAPI specification (ADR-0001).
Why this server?
The platform, not one model —
modelon every tool, with each model's own fields (a field the model does not take is refused, naming the models that do). The model lists and fields come from Ideogram's specification, so a new model is a reviewed snapshot update, not a rewritePrice before you pay —
ideogram_quoteasks the API what exactly this call would cost (USD and credits; nothing generated or billed)Private by default — every curated tool whose model takes
privatesends it astrueunless you set it (on remove background, replace background and theautomodels the API's own default is your plan's setting); a model without the field (reframe with Ideogram 3.0, remove object) follows the API's own behaviour, andideogram_apisends what you give itNever billed twice — a job is returned the moment Ideogram accepts it; the tool waits up to
wait_sand otherwise hands back thegeneration_idforideogram_generation. A request is resent only when it never left the machine or got a 429Everything else, validated —
ideogram_operationslists what the API offers;ideogram_apicalls any served operation by id, checked against its own schema firstGuarded I/O — per-operation upload limits checked before any file is read, streamed downloads with a 50 MB cap (512 MB for a video) from allow-listed HTTPS hosts, typed 402/429 errors that say what to do (details)
2 runtime dependencies —
@modelcontextprotocol/sdk+zod; nativefetch
Related MCP server: Ideogram V3 MCP Server
Quick Start
Requires Node.js 22 or newer and an IDEOGRAM_API_KEY — create one in Ideogram's API dashboard at ideogram.ai/platform → API Keys → Create key (setup guide).
claude mcp add --scope user ideogram -e IDEOGRAM_API_KEY=your-api-key -e IDEOGRAM_OUTPUT_DIR=/tmp/ideogram-output -- npx -y @qmediat.io/ideogram-mcpor by hand (below). npm install -g @qmediat.io/ideogram-mcp installs the ideogram-mcp command, which can replace the npx line in any config.
Configuration
Claude Code
Add to ~/.claude.json → mcpServers:
{
"ideogram": {
"command": "npx",
"args": ["-y", "@qmediat.io/ideogram-mcp"],
"env": {
"IDEOGRAM_API_KEY": "your-api-key",
"IDEOGRAM_OUTPUT_DIR": "/tmp/ideogram-output"
}
}
}Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"ideogram": {
"command": "npx",
"args": ["-y", "@qmediat.io/ideogram-mcp"],
"env": {
"IDEOGRAM_API_KEY": "your-api-key",
"IDEOGRAM_OUTPUT_DIR": "/tmp/ideogram-output"
}
}
}
}Environment Variables
Variable | Required | Default | Description |
| Yes | — | Your Ideogram API key (ideogram.ai/platform → API Keys) |
| No |
| Any folder where you want images saved. Use absolute paths (e.g. |
Available Tools
Tool | What it does | Models |
| Images from a text prompt |
|
| Edit an image at its exact size: a prompt, an optional mask (black = edit), up to 4 reference images, |
|
| Repaint the masked part of an image (black = repaint) |
|
| The 1.x name of | as inpaint |
| New images from a source image and a prompt |
|
| Extend an image to a new size (outpainting) |
|
| A new background, the subject kept |
|
| The foreground as a transparent PNG |
|
| Remove what the mask marks (white = remove) and fill the gap |
|
| Enlarge an image |
|
| Describe an image: words ( |
|
| A video from a prompt: duration, aspect ratio, resolution, audio per model; saved as mp4 (give |
|
| A video from a start image (and an end image): files, URLs or assets |
|
| A video guided by reference images, MP3/WAV clips (2-30 s on Seedance 2.5, 2-15 s elsewhere) and videos stored with Ideogram, in prompt order; at least one reference image or video |
|
| A flat image as an editable design: the text-free base image (saved) and the detected text blocks (JSON: text, position, font, size, colour); optional |
|
| Translate an ad's copy into one language, keeping layout, logos and product; | one operation ( |
| Reframe an ad to a platform's exact ad size inside its safe zone | one operation ( |
| Vary an ad along one axis: people, setting, group_size or scene | one operation ( |
| Recolor a product photo: up to 4 masks paired with hex colours | one operation ( |
| A garment on an invisible mannequin from its photos, in the view asked | one operation ( |
| Apply reference materials to the masked regions of a product photo | one operation ( |
| Re-pose the model of a fashion image by instruction | one operation ( |
| Render a fashion sketch as a product photo | one operation ( |
| Rewrite a prompt into an Ideogram 4.0 structured JSON prompt (nothing generated) | one operation ( |
| Detect and remove reference logos from a flat design: the base image saved, the layers listed | one operation ( |
| Check whether an image was created by Ideogram (free) | one operation ( |
| Snap a hand-drawn mask to the object it marks; the PNG saved | one operation ( |
| The price of a call: | every operation that offers a dry run (not describe, ad variations, pose variants, sketch to render, nor the v1 utilities) |
| Collect a generation by | — |
| Billed usage as Ideogram reports it: buckets of line items summed per product and currency, the buckets handed on (the shape ai-cost reads); default the last 7 days by day | — |
| The organization's invoices with their line items (organization-admin key) | — |
| The organization's API keys, redacted (organization-admin key) | — |
| Your training datasets: the list (searched by name) or one with its files and models | — |
| Images, .txt captions and .zip archives into a dataset (an existing one, or a new one from a name); local paths or public https URLs | — |
| Train a custom model from a dataset of 15–100 images; hyperparameters route to the advanced operation |
|
| Your custom models and the shared ones, or one with its training runs; a completed model's | — |
| What the API offers: families, operations, fields, limits | — |
| Any served operation by id, including the ones the documentation index does not list (the reframe models | — |
Each model's fields are listed in the tool's schema (one variant per model) and in docs/API-REFERENCE.md, generated from the specification. Image inputs are local file paths or public https URLs (or Ideogram asset identifiers where a model takes them); each operation's own upload limits apply, checked each file against its field's limit before any is read, the whole encoded request against the request cap before it is sent.
A client without files: URL inputs and inline images
Any file field (image, images, mask, the reference and style images, the font files) takes a public https://
URL beside a local path: the file is fetched under the field's own limit and types, from a public host only (no IP
address, no local name, no private address, no redirect), inside the call's budget, one input after another.
inline_images: true on any tool that saves images returns each saved image under 3.75 MB, up to 10 MB per result,
as image content beside the text (the others stay by path), so a client that cannot read this machine's files still
sees the result. Both are off unless asked.
Usage, invoices, webhooks
ideogram_usage asks GET /v2/account/usage for a range (RFC 3339 times; 1d buckets over at most 92 days, 1h
over at most 168 hours — the tool refuses a longer one before asking; the api and app sources) and answers with
the sums per product, unit and currency — decimal strings, never floats; an amount it cannot read is counted, not
summed — and writes the buckets exactly as Ideogram sent them to a JSON file in the output directory (named by the
query, readable by the owner only — the line items carry member emails and key prefixes; printed too when under
64 KB): the shape a cost tool reads. The invoices and the API keys are written and shown the same way, and so is an
answer off its specification (reported as such, never as a success). All three account tools need an API key owned by an organization
admin (Ideogram answers 404 to any other key, and the tool says so with Ideogram's words).
Ideogram signs its webhooks with Ed25519: the canonical message is request_id\nuser_id\ntimestamp\nsha256_hex(body),
the signature travels in X-Ideogram-Webhook-Signature (the key id in X-Ideogram-Webhook-Key-Id), the public keys
are the JWKS at GET https://api.ideogram.ai/v1/.well-known/jwks.json (public; cache up to 24 h). Where request_id,
user_id and timestamp travel is not stated by the specification (it names the two signature headers only): take
them from the delivery as Ideogram's webhook documentation says. The receiver — not this server, which has no public
URL — verifies with the helper this package ships; a delivery whose timestamp is more than maxAgeS (300 s by
default; Infinity turns it off) from now is refused as a replay — the signature alone never expires:
import { verifyWebhook } from "@qmediat.io/ideogram-mcp/dist/webhooks.js";
const kid = verifyWebhook(
{ body, requestId, userId, timestamp, signature: headers["x-ideogram-webhook-signature"], keyId: headers["x-ideogram-webhook-key-id"] },
jwks,
{ maxAgeS: 300 },
);
if (kid === null) reject(); // the key id that verified, else nullTraining a custom model
Drop a folder of references: ideogram_dataset_upload {"name": "brand refs", "files": ["…/1.png", "…/1.txt", "…/more.zip"]}
creates the dataset and uploads the assets (a caption sidecar x.txt goes with x.png; an archive may hold both),
ideogram_train {"dataset_id": "…", "model_name": "Brand Refs"} starts an Ideogram 4.0 training ("model": "ideogram-3"
for 3.0; training_steps, lora_rank, ema, learning_rate — and for 4.0 batch_size, base_variant,
wandb_project — route to the advanced operation), ideogram_models {"model_id": "…"} follows it, and a COMPLETED
model's custom_model_uri generates through ideogram_generate with model: "ideogram-4-custom-model". Training is
billed by Ideogram per its plan; the tools say what was started, never start it twice.
Waiting, and collecting later
A generation is sent asynchronously and returned the moment Ideogram accepts it. The tool then waits up to wait_s seconds (default 45, at most 50: MCP clients time a call out at 60 s), polling at 2 s, ×1.5, up to 30 s apart. A job still running at the end of the wait comes back as its generation_id: ideogram_generation {"generation_id": "…"} collects it later, in this session or another. Sending the request again would start — and bill — a second job.
Every tool call has one budget, fixed when it starts: 55 s (the caller's 60 s minus a margin), ended earlier by the
caller's own cancellation (a client that times out or a user who cancels). Every request, retry sleep (Retry-After
included), poll and download of the call is judged against what remains of it, so nothing of a call outlives its caller
and a request that creates work is never resent after the caller has given up: a POST is resent only when the time left
also covers an attempt as long as the one just rejected. A download the budget cuts is listed as not saved beside the
generation id; ideogram_generation saves it in a new call. What that leaves open: an upload that needs more than 55 s
cannot be served inside one MCP call at all; a request the budget cuts while it is in flight is reported as possibly
accepted (never resent); and a job the API accepts after the caller gave up keeps an id nobody receives — a limit of
the 60 s client, not of this server.
Prices
ideogram_quote sends exactly the request the tool would send, with Ideogram's dry_run: the answer is the price in USD and credits (at your account's credit rate), exact or an estimate with its upper bound; nothing is generated, stored or billed. Describe has no dry run, so it cannot be quoted. A completed generation shows the cost Ideogram reports for it. This server keeps no price table: prices are the API's, per request.
Compatibility with 1.x
Calls written for 1.x keep working through 2.x, and the result says what was mapped:
1.x input | 2.0 |
|
|
|
|
|
|
| refused (v2 has no FLASH) — |
| lowercase |
|
|
|
|
A 1.x field that the chosen v2 model does not take is refused with the models that take it (the changelog has the full table).
The raw call
ideogram_api runs any operation this release serves — the curated ones and every other /v2/image operation (the reframe models the documentation index does not list) — by its id, with its parameters kept in their places: {"operation": "…", "params": {"path": {}, "query": {}, "body": {}}, "files": [{"field": "image", "path": "…"}], "dry_run": false}. The parameters are checked against the operation's own schema and rules before anything is sent. Operations Ideogram's documentation does not list need allow_undocumented: true; web-app (Bearer) and internal operations are refused; the undocumented get_asset_reference_usage of the account family too; the customer-specific tools (skechers, swan, sole-swap) and the spec-only workflows run here and only here, behind allow_undocumented; the v1 model variants (ernie, flux-2 klein, the Ideogram 4.0 tiers, the P-Image tiers, design and graphic v3/v4) run here without opt-in — Ideogram documents them in its v1 reference (prefer an _async twin where one exists: a synchronous v1 generation must finish inside the call's budget); nothing is planned for a later release (plan).
Security
A defensive, minimal-dependency design:
SSRF protection — downloads over HTTPS only, from allow-listed hosts, redirects blocked; a URL given as an input is fetched from a public host only (no IP literal, no local name, no private or special-purpose address after resolution, no redirect), under the call's budget, over a connection pinned to the address that was judged (a DNS rebinding reaches nothing)
Symlink rejection —
lstat()rejects a symlinked input file before reading (a symlinked parent directory is resolved)Upload limits per operation — each file checked with
stat()against its field's limit before any is read; the local file name is never sent (a file goes as<field>.<ext>) — except a training asset's own name (never its directory), which the API pairs captions byStreamed, capped downloads — written to disk with a byte counter, stopped at 50 MB (512 MB for a video), the partial file removed; a video that cannot download within the call's budget (55 s) is "Not saved" with its link, for you to fetch before it expires;
image/*orvideo/mp4requiredSchema validation — inputs against each model's generated schema before any request; a success response the specification's schema rejects is reported as a contract mismatch, never as a success
Input paths — the model may name any readable image file on the machine for upload; run the server as a user whose readable images you are willing to send to Ideogram
Full details in SECURITY.md.
Development
git clone https://github.com/qmediat/ideogram-mcp.git
cd ideogram-mcp
npm install
npm run build
npm run typecheck
npm run lint # structure rules, repeated blocks, the baseline ratchet (docs/SYSTEMIC.md §1)
npm run format # Prettier (npm run lint checks it)
npm test # builds, then every test against a fake API (no key, no network); with IDEOGRAM_API_KEY set, the live dry-run suite runs too (below)The specification snapshot drives the code: npm ci --prefix scripts/spec-gen && npm run spec:generate regenerates
src/generated/ (CI checks it with npm run spec:check), npm run docs:api the API reference, npm run spec:pull
compares the live specification with the snapshot. These scripts need Node.js 22.18 or newer (type stripping), and so
does npm run lint (its Babel 8 parser: 22.18+ or 24.11+).
With IDEOGRAM_API_KEY set, test/live-dry-run.test.mjs quotes every curated model at no cost and writes the prices
to docs/PRICES-<date>.md.
Run locally:
IDEOGRAM_API_KEY=your-key node dist/index.jsContributing
See CONTRIBUTING.md for architecture guidelines and PR requirements.
Trademarks and affiliation
Ideogram is a trademark of Ideogram. This is an independent, community-maintained integration published by Quantum Media Technologies sp. z o.o.; it is not affiliated with, sponsored by or endorsed by Ideogram. Use of the Ideogram API through this server is subject to Ideogram's own terms and to your own API key or account.
License
MIT — Quantum Media Technologies
Made by Quantum Media Technologies · more open source from qmediat
Available Tools
38 toolsideogram_ad_localizerAd localizerA
Translate an ad's copy into one target language (one request per language; Arabic right-to-left), keeping its layout, logos, brand type and product; exact_copy pins pre-approved wordings line by line. Takes the ad as a local file, a public https URL or an Ideogram asset. Results are saved to the output directory; long jobs come back as a generation_id for ideogram_generation; ideogram_quote prices a call first.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Random seed for a repeatable result | |
| image | No | The source photo or ad to work on: a local image file or a public https URL (image_asset_identifier for an Ideogram asset) | |
| prompt | No | What to create or change, in natural language | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| quality | No | low, medium or high: higher may improve detail and takes longer | |
| language | No | The target language of the copy (one request per language; Arabic is rendered right-to-left) | |
| exact_copy | No | Pre-approved wordings, one `original => replacement` per line; each names the text element showing original and sets it to replacement | |
| num_images | No | How many outputs to make (each is billed) | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| image_asset_identifier | No | An Ideogram asset (an upload or an earlier result) instead of a local image |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely meets it: it discloses that results are written to an output directory, that long jobs return a generation_id rather than blocking, and that quoting is available before calling. It omits any note on permissions or cost of the num_images outputs, which the schema covers only in passing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and appropriately sized for a multi-parameter tool, though the semicolon-chained phrasing packs several distinct ideas into single sentences and is dense to parse. Every clause is informative, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter tool with no annotations, no output schema, and a nested asset identifier, the description covers purpose, accepted inputs, output destination, and the async follow-up path. It is close to complete, missing only explicit required-parameter guidance and any auth/permission note.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3, but the description adds real meaning by explaining the per-language semantics of `language`, the accepted sources for `image` (local file, https URL, Ideogram asset), and the line-by-line `original => replacement` shape of exact_copy. It goes modestly beyond the schema rather than merely echoing it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The definition states a specific verb and resource — translate an ad's copy into one target language — plus a precise scope (one language per request). It clearly separates this from siblings like ideogram_ad_resizer and ideogram_ad_variations by naming exactly what is preserved (layout, logos, brand type, product).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete usage context: one request per language, Arabic renders right-to-left, exact_copy pins pre-approved wordings, and ideogram_quote prices a call first. It routes to ideogram_generation for long-running jobs, but never states when to prefer this over sibling ad tools such as ad_variations, so it stops short of explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_ad_resizerAd resizerA
Reframe an ad to a platform's exact ad size (resolution WIDTHxHEIGHT from the list; platform picks the published safe zone), optionally editing while reframing. Takes the creative as a local file, a public https URL or an Ideogram asset. Results are saved to the output directory; long jobs come back as a generation_id for ideogram_generation; ideogram_quote prices a call first.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The source photo or ad to work on: a local image file or a public https URL (image_asset_identifier for an Ideogram asset) | |
| prompt | No | What to create or change, in natural language | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| quality | No | low, medium or high: higher may improve detail and takes longer | |
| platform | No | The ad platform whose published safe zone the ad stays inside (google, meta, meta_reels, meta_stories, snapchat, tiktok) | |
| num_images | No | How many outputs to make (each is billed) | |
| resolution | No | Exact output size WIDTHxHEIGHT from the model's list; not with aspect_ratio | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| image_asset_identifier | No | An Ideogram asset (an upload or an earlier result) instead of a local image |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does a decent job: it states that results are written to the output directory rather than returned inline, and that long-running jobs surface as a generation_id rather than a finished image. It doesn't disclose billing/permission implications or what happens to the source creative, but the operational behavior is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the core action before input formats and downstream routing. Every sentence carries information, though the parenthetical lists make it slightly heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with no output schema, the description covers input formats, output destination, async fallback, and the related pricing/generation tools. The main omission is guidance on sibling selection among the other ad/edit tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all ten parameters in detail. The description reinforces a few points (resolution must come from the list, platform selects the safe zone, the creative can be a file, https URL, or Ideogram asset) but adds little beyond what the schema states. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Reframe an ad to a platform's exact ad size') and scopes it tightly to ad sizing with the platform safe zone, which separates it from the general ideogram_reframe sibling. An agent can identify the job without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear routing context: use ideogram_quote to price first, and that long jobs hand back a generation_id for ideogram_generation. It does not explicitly say when to prefer this over ideogram_reframe or ideogram_ad_localizer, so the sibling distinction is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_ad_variationsAd variationsA
Vary an ad along one axis — people, setting, group_size or scene — keeping its aspect ratio and product. Takes the creative as a local file, a public https URL or an Ideogram asset. Results are saved to the output directory; long jobs come back as a generation_id for ideogram_generation; no price quote (the operation offers no dry run).
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The source photo or ad to work on: a local image file or a public https URL (image_asset_identifier for an Ideogram asset) | |
| prompt | No | What to create or change, in natural language | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| quality | No | low, medium or high: higher may improve detail and takes longer | |
| num_images | No | How many outputs to make (each is billed) | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| variation_type | No | The axis to vary: people, setting, group_size or scene | |
| image_asset_identifier | No | An Ideogram asset (an upload or an earlier result) instead of a local image |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does meaningful work: results land in the output directory, long jobs return a generation_id to continue via ideogram_generation, and the job is never resubmitted or billed twice. Missing are permission/enterprise nuances and any failure-mode notes, but the async/billing contract is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded paragraph leads with the operation and its invariant, then moves to I/O and async behavior. Nearly every clause earns its place, though the source-format list slightly duplicates the schema's own image description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by explaining where results are saved and what a generation_id means for long jobs. For a 9-parameter, no-annotation tool this is close to sufficient; minor gaps remain around the asset-identifier path and billing for num_images (covered only in the schema).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the bar is a baseline 3, but the description adds real semantics beyond the schema: only one axis is varied while aspect ratio and product are preserved, and the image can be a file, URL, or Ideogram asset. The oneOf/required-variation_type structure is not explained, but the core parameter intent is enriched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb (vary) and resource (an ad) plus the exact axes (people, setting, group_size, scene) and what is held constant (aspect ratio, product). That is enough to distinguish it from siblings like ideogram_ad_localizer, ideogram_ad_resizer, or the plain ideogram_generate without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the operative constraint up front ('vary an ad along ONE axis'), names the accepted source forms (local file, public https URL, Ideogram asset), and notes there is no price quote or dry run, which implicitly routes costing questions to ideogram_quote. It stops short of explicitly naming alternative siblings or stating when to prefer remix/edit over this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_apiCall any served Ideogram operationA
Advanced: call an Ideogram operation by id (from ideogram_operations) when no curated tool covers it — a model the documentation index does not list (allow_undocumented), or a call with webhook_url / target_collection_id. params holds path, query, headers and body apart; files maps local files or public https URLs to file fields. Checked against the operation's own schema before anything is sent; dry_run prices it instead.
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | Files for the file fields: each a local path or a public https URL | |
| params | No | {path?, query?, headers?, body?}: each an object of that location's parameters | |
| wait_s | No | Seconds to wait for the result (0-50, default 45) | |
| dry_run | No | Price the call instead of running it (only operations that offer it) | |
| operation | Yes | The operation id, e.g. post_precise_edit_image_v2_ideogram45 | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| allow_undocumented | No | Allow an operation Ideogram's documentation does not list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose real behavior: the request is validated against the operation's own schema before anything is sent, and dry_run prices instead of executing. It stops short of stating auth requirements, that this path bypasses curated safety rails, or what happens on validation failure — meaningful gaps for a tool that can dispatch arbitrary (potentially mutating) operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph, front-loaded with the routing condition before the mechanics, and every clause carries information. Slightly compressed — the params/files/validation/dry_run points run together — but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists and the description does not describe return shape, but for a generic dispatcher whose response depends on the target operation that omission is understandable. Invocation mechanics, pre-flight validation and the dry_run alternative are all covered; error behavior and result-retrieval expectations are the main unaddressed items.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents operation, params, files, wait_s, dry_run, inline_images and allow_undocumented. The description explains the params split into path/query/headers/body and the files path-or-URL mapping, but this largely restates what the schema's own descriptions say. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource — call an Ideogram operation by id — and immediately positions it as the escape hatch ('when no curated tool covers it') against the 35+ curated siblings. An agent can tell instantly that this is the generic fallback, not a competing generator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit selection criteria: use when no curated tool covers the case, for an undocumented model (allow_undocumented), or when the call needs webhook_url / target_collection_id. It also names where the operation id comes from (ideogram_operations), so the agent knows the prerequisite call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_api_keysAPI keysA
The API keys in your organization, newest first, key material redacted (the id and the redacted prefix match the usage report's line items). Needs an API key whose owner is an organization admin. Reads only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the auth requirement ("an API key whose owner is an organization admin"), the redaction of key material, the sort order, and the read-only nature ("Reads only"). Pagination and rate limits are unmentioned, keeping it out of the top band.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence carrying scope, ordering, redaction, auth, and read-only status with no filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param listing tool with no annotations and no output schema, the description covers return shape (redacted material, ordering, join key to usage) and safety (read-only) sufficiently. Minor gaps like pagination remain but are not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the parameter baseline is 4. There is no parameter information the description could add or omit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ("The API keys in your organization") and adds scope and ordering ("newest first"), so an agent knows this is a listing of org API keys. It differentiates itself from the usage report by explaining the id/prefix cross-reference, but the phrase is noun-led and doesn't sharply distinguish from sibling ideogram_api.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the admin-owner prerequisite and the cross-reference to the usage report hint at when this tool is relevant. However, there is no explicit when-to-use/when-not or routing to an alternative sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_colorwaysColorwaysB
Recolor a product photo: up to 4 masks, each paired by position with a six-digit hex colour; everything outside the masks is preserved. Takes the photo and the masks as local files, public https URLs or Ideogram assets. Results are saved to the output directory; long jobs come back as a generation_id for ideogram_generation; ideogram_quote prices a call first.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The source photo or ad to work on: a local image file or a public https URL (image_asset_identifier for an Ideogram asset) | |
| masks | No | Local mask files (or public https URLs) marking the regions to change, paired by position (at most 4, the product photo's pixel size) | |
| colors | No | One target colour per mask as a six-digit hex code (#B3202C), paired by position with masks (at most 4) | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| quality | No | low, medium or high: higher may improve detail and takes longer | |
| aspect_ratio | No | Output aspect ratio with a colon — 1:1, 3:4, 4:3, 16:9 or 9:16 where the operation lists them (colorways and material swap default to the photo's ratio, ghost mannequin and sketch to render to 1:1, pose variants to the nearest supported); magic prompt: the ratio to pin, or omitted for the model's pick | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| image_asset_identifier | No | An Ideogram asset (an upload or an earlier result) instead of a local image | |
| mask_asset_identifiers | No | Ideogram assets as the masks, paired by position (at most 4) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses input formats, that results are saved to the output directory, that long jobs return a generation_id for ideogram_generation, and that ideogram_quote prices a call first. However, it omits permissions, reversibility, rate limits, and whether the original photo is modified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core action, and every sentence adds useful information about inputs, outputs, and related tools. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with no output schema, the description covers what it does, accepted input formats, where results go, and async handling. It does not describe the output artifact format (e.g., image files vs. base64), but the key operational details are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters; baseline is 3. The description adds minor value by reiterating the mask-to-colour positional pairing and accepted input types, but does not introduce meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Recolor a product photo') and details the mechanism (up to 4 masks paired with hex colours, everything outside preserved). It does not name or contrast with any sibling tool, so it falls short of the highest tier, but an agent can still identify the task unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives like ideogram_material_swap or ideogram_edit. It provides procedural notes about long jobs and quoting, but nothing about selection criteria or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_datasetsDatasetsA
Your training datasets: the list (optionally searched by name), or one dataset by id with its files, captions and the models trained from it. Reads only.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Case-insensitive substring of the name, for the list | |
| dataset_id | No | One dataset: its files (name, size, caption) and the models trained from it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and 'Reads only' usefully declares the non-mutating nature. It also discloses the shape of returned data, but omits pagination/limit behavior, ordering, and what happens when a search or id matches nothing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the resource and separates the list mode from the detail mode with no wasted words. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by naming what a dataset record contains (files, captions, trained models) and flags read-only behavior. Missing only edge-case behavior (empty results, large lists) for a low-complexity two-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the schema already documents search as a case-insensitive substring and dataset_id as the single-record selector. The description restates these without adding syntax, format, or defaulting details, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (training datasets) and two clear modes: list or single-dataset-by-id, with the returned payload enumerated (files, captions, models). It distinguishes itself from ideogram_dataset_upload implicitly, but never names a sibling to route between them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Optionally searched by name' and 'one dataset by id' imply when each mode applies, so usage is inferable. However, there is no explicit when-to-use vs alternatives (e.g., ideogram_dataset_upload for writing, ideogram_models for model listings) and no stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_dataset_uploadUpload training assetsA
Upload images (JPEG, PNG, WebP), caption sidecars (.txt/.json named like their image) and .zip archives into a dataset — an existing one by dataset_id, or a new one created from name — from local paths or public https URLs. Answers what was accepted and what failed and why.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Create a new dataset with this name, then upload into it | |
| files | Yes | Images (JPEG, PNG, WebP), caption sidecars (.txt or .json, named like their image) and/or .zip archives of both: local paths or public https URLs; the file's NAME is sent (the API pairs a caption by it); a dataset holds up to 100 images | |
| dataset_id | No | The dataset to upload into; or give name to create one first |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries full burden. It usefully discloses the accepted-vs-failed reporting behavior and accepted source types, which is genuine context. It omits permissions, per-file size limits, and rate constraints, so coverage of behavioral traits is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and kept to one dense sentence plus a short one, with every clause (formats, caption pairing, dataset modes, path types) doing work. The opening sentence is long but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-mode file-upload tool with no output schema and no annotations, the description covers inputs, accepted formats, target-dataset selection, and the shape of the result (what was accepted/failed and why). Missing only minor operational details such as auth and file-size limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented with the dataset_id/name relationship, the caption-pairing rule, and the 100-image cap. The description mostly restates this framing rather than adding syntax or format details beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Upload) and resource (training assets into a dataset), and enumerates accepted file types. It is unmistakably distinct from the generation/editing siblings, though it never names an alternative, so no explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the two upload modes (existing dataset via dataset_id vs new one created from name) and supported sources (local paths or public https URLs), implying when to use each. However there is no guidance on when to reach for this versus ideogram_datasets or ideogram_train, and no prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_describeDescribe an imageA
Describe an image in words (Ideogram 3.0) or as a structured JSON prompt (Ideogram 4.0). Takes a local file, a public https URL or an Ideogram asset. Describe has no price quote (the API offers no dry run for it).
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | Local image file to work on, or a public https URL of one | |
| model | No | The model (default ideogram-3); each takes the fields of its variant below | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| describe_model_version | No | 1.x name of the model, deprecated: V_3 = model ideogram-3 | |
| image_asset_identifier | No | An Ideogram asset (an upload or an earlier result) instead of a local image |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description must carry behavioral load, and it does disclose two non-obvious traits: the output format depends on the model (words vs structured JSON), and there is no dry-run/price quote for this operation. It stops short of auth needs, rate limits, or return-shape detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the core purpose front-loaded. The parenthetical model-versioning and the pricing aside are slightly digressive but each carries information an agent needs, so the size is justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with branchy oneOf variants and no output schema, the definition is adequate but thin: it never characterizes the return value beyond 'words' or 'structured JSON prompt,' and leaves the ideogram-4 flags (include_bbox, include_tags, include_style_descriptions) entirely to the schema. Nothing critical is missing, but the description does not fully compensate for the absent output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds meaning the schema lacks: it states the accepted input sources (local file, public https URL, Ideogram asset) and, more importantly, that the 'model' value determines the output form. That is genuine added value over the variant schema, which only says 'each takes the fields of its variant below.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Describe an image') and crucially distinguishes the two model modes: Ideogram 3.0 returns words while 4.0 returns a structured JSON prompt. It does not, however, name or differentiate itself from near siblings such as ideogram_magic_prompt or ideogram_generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the operation itself. The one routing hint given is indirect ('Describe has no price quote'), which tells the agent not to expect pricing but does not say when to choose describe over other text-producing or generation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_editInpaint an image (1.x name)A
Deprecated alias of ideogram_inpaint, kept through 2.x for 1.x callers: the same arguments and models (see ideogram_inpaint's schema).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full behavioral disclosure. It discloses deprecation and equivalence to ideogram_inpaint, but omits the actual action, side effects, permissions, or reversibility, leaving the agent to consult the referenced tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that delivers the deprecation status, compatibility window, and pointer to the canonical schema with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deprecated alias with no parameters and no output schema, the description provides enough to route the agent: deprecation, compatibility window, argument equivalence, and schema reference. A direct operation statement is left to the title.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema is empty (0 parameters). The description notes arguments and models are the same as ideogram_inpaint and points to its schema, which is valuable since this schema carries no field definitions. Baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it is a deprecated alias of ideogram_inpaint, which clearly defines its role and distinguishes it from siblings. However, it does not state the actual operation (inpainting an image) in the description itself, relying on the title and the referenced tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies it is kept through 2.x for 1.x callers, clearly indicating the narrow backward-compatibility use case. It implies new callers should use ideogram_inpaint, though it does not explicitly forbid use or name the alternative in a directive sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_generateGenerate imagesA
Create images from a text prompt with any image model Ideogram's API sells: Ideogram 4.5, 4.0 and 3.0 (with transparent, character and custom-model variants), 2a and 2.0, GPT Image, Nano Banana, P-Image, Z-Image, or auto. Each model takes its own fields (one variant per model in this schema). Default model: ideogram-3. Results are saved to the output directory; ideogram_quote prices a call first (nothing is generated).
| Name | Required | Description | Default |
|---|---|---|---|
| mask | No | Local mask image file or a public https URL, the same size as the source | |
| seed | No | Random seed for a reproducible result | |
| size | No | Output size: "auto", "source" (needs source images) or WIDTHxHEIGHT | |
| model | No | The model (default ideogram-3); each takes the fields of its variant below | |
| images | No | Local source image files or public https URLs (the first is the one edited) | |
| prompt | No | What to create or change, in natural language | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| quality | No | very_low, low, medium or high: higher costs more | |
| num_images | No | How many images to make (each is billed) | |
| resolution | No | Exact output size WIDTHxHEIGHT from the model's list; not with aspect_ratio | |
| style_type | No | Visual style family | |
| style_codes | No | 8-character hexadecimal style codes | |
| aspect_ratio | No | Output aspect ratio such as 16x9; not with resolution | |
| magic_prompt | No | auto, on or off: let Ideogram rewrite the prompt | |
| style_preset | No | A named style preset; not with style codes or style references | |
| color_palette | No | A preset palette by name, or explicit hex colours with weights | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| upscale_factor | No | x2, x4 or x8 | |
| negative_prompt | No | What to keep out of the image | |
| rendering_speed | No | turbo, default or quality: faster is cheaper | |
| resolution_tier | No | The output resolution tier | |
| custom_model_uri | No | A custom model you trained or were given access to | |
| style_reference_images | No | Local image files (or public https URLs) whose style the result follows | |
| image_asset_identifiers | No | Ideogram assets instead of local source images | |
| character_reference_mask | No | Local grayscale mask (or a public https URL) of where the character is in its reference image | |
| character_reference_images | No | Local image files (or public https URLs) of the character to keep consistent | |
| enable_copyright_detection | No | Run Ideogram's copyright detection on the result (adds latency) | |
| style_reference_collection_id | No | A saved style collection to apply | |
| style_reference_asset_identifiers | No | Ideogram assets (uploads or earlier results) to use as style references | |
| character_reference_asset_identifiers | No | Ideogram assets to use as the character reference | |
| style_reference_collection_version_id | No | A version of the saved style collection |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses that results are written to the output directory, that ideogram_quote does not generate, and that each model branch has its own field set. It omits billing semantics (per-image cost), permission/auth requirements, and the polling path implied by wait_s, leaving notable gaps for a mutation tool of this complexity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with the action and scope front-loaded, then model coverage, then the pricing/default caveats. The long model enumeration is dense but earns its place by telling the agent which families are wired up.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 32-parameter, oneOf-heavy tool with no annotations and no output schema, the description covers the essentials: what is created, which models exist, the default, where output lands, and the related pricing tool. It stops short of explaining the wait/polling flow, but that is documented in the wait_s schema field rather than being strictly required here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the list/enum details are already covered and the baseline would be 3. The sentence 'Each model takes its own fields (one variant per model in this schema)' adds genuine structural value over the raw oneOf, warning the agent that fields are model-specific. The default-model statement overlaps with the schema's model description, slightly limiting the gain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Create images from a text prompt') and enumerates the exact model families the tool can drive, so an agent immediately knows this is the general-purpose generation entry point. It is also implicitly distinguished from siblings like ideogram_edit, ideogram_precise_edit and ideogram_quote, which are named in the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes price-checking to ideogram_quote ('prices a call first (nothing is generated)') and states the default model. However it never says when to prefer this over the sibling edit/remix/inpaint tools, so the generation-vs-manipulation boundary is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_generationCollect a generationA
Collect the result of a generation by its generation_id (from a tool that answered 'still running', or from an earlier session): waits up to wait_s for it, then saves its images or videos. Reading a generation is free and never runs it again.
| Name | Required | Description | Default |
|---|---|---|---|
| wait_s | No | Seconds to wait if it is still running (0-50, default 45) | |
| generation_id | Yes | The id a tool returned | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful traits: it waits up to wait_s, saves images or videos, is free, and never re-runs the generation. It stops short of saying where files land or what a timed-out collect returns, but the non-obvious side-effect and cost behavior is covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence leads with verb and resource, and the parentheticals each add useful routing detail. Slightly dense, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter collect tool with no annotations or output schema, the description covers purpose, cost, idempotency and wait behavior. Remaining gaps (save location, timeout return shape) are minor for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all three parameters. The description adds only marginal meaning, clarifying that generation_id may come from an earlier session and tying wait_s to the waiting behavior, so the baseline 3 holds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Collect) and resource (the result of a generation) keyed on generation_id, and clarifies it is the retrieval counterpart to a generation that is 'still running'. It implicitly separates itself from the generating siblings, though it never names ideogram_generate directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete trigger: use when a tool answered 'still running' or when resuming from an earlier session. This is clear context for when to reach for it, though there is no explicit statement of when NOT to use it or a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_ghost_mannequinGhost mannequinA
A garment on an invisible mannequin from its photos (front, back, left, right, top, bottom and more angles, as files, URLs or assets), in the view asked (front, three_quarter, back), on a clean white studio background; instruction and metadata add factual product context. Results are saved to the output directory; long jobs come back as a generation_id for ideogram_generation; ideogram_quote prices a call first.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Random seed for a repeatable result | |
| view | No | The camera view of the output garment: front, three_quarter or back | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| quality | No | low, medium or high: higher may improve detail and takes longer | |
| metadata | No | A JSON object serialized as a string with factual product context (title, brand, category, colour, material, item code) | |
| top_image | No | The top-view garment photo (local file or public https URL); top_asset_identifier for an Ideogram asset | |
| back_image | No | The back-view garment photo (local file or public https URL); back_asset_identifier for an Ideogram asset | |
| left_image | No | The left-view garment photo (local file or public https URL); left_asset_identifier for an Ideogram asset | |
| front_image | No | The front-view garment photo (local file or public https URL); front_asset_identifier for an Ideogram asset | |
| instruction | No | Plain-language direction: the pose or camera for a pose variant, the materials and construction for a render, the reconstruction guidance for a ghost mannequin | |
| right_image | No | The right-view garment photo (local file or public https URL); right_asset_identifier for an Ideogram asset | |
| aspect_ratio | No | Output aspect ratio with a colon — 1:1, 3:4, 4:3, 16:9 or 9:16 where the operation lists them (colorways and material swap default to the photo's ratio, ghost mannequin and sketch to render to 1:1, pose variants to the nearest supported); magic prompt: the ratio to pin, or omitted for the model's pick | |
| bottom_image | No | The bottom-view garment photo (local file or public https URL); bottom_asset_identifier for an Ideogram asset | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| garment_images | No | More photos of the same garment, local files or public https URLs (at most 15; several angles let obscured construction be reconstructed) | |
| garment_asset_identifiers | No | Ideogram assets as more photos of the same garment, in order (at most 15) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: results are written to the output directory, long jobs return a generation_id for ideogram_generation, and the schema further documents that jobs are never resubmitted or billed twice, plus the private-feed default. Missing are auth/permission requirements and any rate-limit or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core operation is front-loaded in the first clause, and the second sentence carries all the lifecycle/routing facts efficiently. The first sentence is a dense, semicolon-heavy run-on, but nothing is redundant given how much ground it covers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter, no-output-schema tool, the description covers the transformation, input forms, output destination and async result handling, which is most of what an agent needs. It leaves the many per-angle parameters to the 100%-covered schema, so nothing critical is silently missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains view, metadata, instruction, garment_images and the per-angle image/asset pairs. The description adds only framing context (view options, factual product metadata, multi-angle reconstruction) rather than new syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific transformation — garment photos turned into a ghost mannequin render on a clean white studio background — plus the supported input forms and requested view. It clearly distinguishes this from siblings like ideogram_sketch_to_render and ideogram_model_pose_variants, which perform different transformations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes the agent to ideogram_quote for pricing and ideogram_generation for polling a long job, and implicitly scopes usage to garment-photo inputs. It never states when to prefer this over near-neighbours such as sketch_to_render or precise_edit, so exclusions are weak, but the alternatives it does name are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_inpaintInpaint an imageA
Repaint the masked part of an image (black in the mask = repaint) with Ideogram 3.0 or its character / custom-model variants. Needs the source and the mask, each a local file, a public https URL or an Ideogram asset. Results are saved to the output directory; ideogram_quote prices a call first (nothing is generated).
| Name | Required | Description | Default |
|---|---|---|---|
| mask | No | Local mask image file or a public https URL, the same size as the source | |
| seed | No | Random seed for a reproducible result | |
| image | No | Local image file to work on, or a public https URL of one | |
| model | No | The model (default ideogram-3); each takes the fields of its variant below | |
| prompt | No | What to create or change, in natural language | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| num_images | No | How many images to make (each is billed) | |
| style_type | No | Visual style family | |
| style_codes | No | 8-character hexadecimal style codes | |
| magic_prompt | No | auto, on or off: let Ideogram rewrite the prompt | |
| style_preset | No | A named style preset; not with style codes or style references | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| rendering_speed | No | turbo, default or quality: faster is cheaper | |
| custom_model_uri | No | A custom model you trained or were given access to | |
| mask_asset_identifier | No | An Ideogram asset to use as the mask | |
| image_asset_identifier | No | An Ideogram asset (an upload or an earlier result) instead of a local image | |
| style_reference_images | No | Local image files (or public https URLs) whose style the result follows | |
| character_reference_mask | No | Local grayscale mask (or a public https URL) of where the character is in its reference image | |
| character_reference_images | No | Local image files (or public https URLs) of the character to keep consistent | |
| enable_copyright_detection | No | Run Ideogram's copyright detection on the result (adds latency) | |
| style_reference_collection_id | No | A saved style collection to apply | |
| style_reference_asset_identifiers | No | Ideogram assets (uploads or earlier results) to use as style references | |
| character_reference_asset_identifiers | No | Ideogram assets to use as the character reference | |
| style_reference_collection_version_id | No | A version of the saved style collection |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the mask convention (black = repaint), accepted input sources, and where results are saved, and warns that ideogram_quote generates nothing. It omits key behaviors such as per-image billing, the async wait_s/generation_id handoff, and privacy defaults, which matter for a 25-parameter generation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no waste, front-loading the core action and mask semantics before the input requirements and the pricing alternative. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must compensate for a complex tool with three model variants and 25 parameters. It covers the essential call semantics and result location but leaves async behavior, billing, and privacy handling to the schema, leaving the picture incomplete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining the mask convention (black = repaint) and that image/mask may be a local file, https URL, or Ideogram asset, details not present in the field descriptions. It adds value but covers only a subset of the many parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Repaint the masked part of an image') and pins down scope precisely, distinguishing it from siblings like ideogram_edit, ideogram_remove_object and ideogram_replace_background. An agent can tell exactly what this does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives input prerequisites ('Needs the source and the mask') and routes pricing to ideogram_quote, which is useful context. However it never states when to choose inpaint over the many adjacent edit/background siblings, so alternative selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_invoicesInvoicesA
Your organization's invoices with their line items — the billing record the usage reconciles against. Needs an API key whose owner is an organization admin. Reads only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and does disclose two behaviors that matter: it requires an API key owned by an organization admin, and it is read-only ('Reads only'). It omits pagination, billing period scope, and result limits, but the auth and safety profile are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the resource identified first and constraints trailing. The em-dash clause 'the billing record the usage reconciles against' is slightly indirect but carries real information about the tool's role.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no parameters, so the description must convey what comes back: it names invoices and their line items, plus the auth prerequisite. It stops short of stating time-range or pagination behavior, which is the only remaining gap for a zero-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case. The schema is empty, so there is nothing for the description to clarify or compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('your organization's invoices with their line items') and a verb-like operation implicitly (retrieval/read). An agent can distinguish it from ideogram_usage and ideogram_quote, though the description never names those siblings to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'the billing record the usage reconciles against' implies this is used alongside ideogram_usage, giving implied context rather than an explicit when-to-use/when-not or named alternative. No exclusions or prerequisites beyond the auth note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_layerizeLayerize a designA
Turn a flat image into an editable design (Ideogram 3.0): the detected text comes back as positioned text blocks with matched fonts, sizes and colours, beside a text-free base image that is saved. Optional font files to match against; ideogram_quote prices a call first.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Random seed for a reproducible result | |
| image | No | Local image file to work on, or a public https URL of one | |
| model | No | The model (default ideogram-3); each takes the fields of its variant below | |
| prompt | No | What to create or change, in natural language | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| font_candidate_files | No | Local font files or public https URLs (.ttf, .otf, .woff, .woff2, at most 5) to match the detected text against | |
| image_asset_identifier | No | An Ideogram asset (an upload or an earlier result) instead of a local image |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does reasonably well: it explains what the operation produces (text blocks with matched fonts/sizes/colours, a text-free base image that is saved), that font matching is optional, and that ideogram_quote can price the call beforehand. It omits anything about credits/billing side effects, failure modes, or the async wait_s job model that the schema hints at.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the transformation and its outputs, then the optional-input and pricing notes. Nothing is wasted, though the second sentence is packed tightly enough that the font and quote hints feel appended rather than integrated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, zero-required tool with no output schema and no annotations, the description fills the most important gap by describing the return shape (text blocks plus a saved base image), which the schema cannot convey. It still leaves the async generation_id/wait_s flow and the relationship to sibling tools unexplained, so it is not fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 9 parameters, so the schema already documents seed, image, model, prompt, private, wait_s, inline_images, font_candidate_files and image_asset_identifier. The description only echoes the font-file parameter and adds nothing on the remaining eight, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource (turn a flat image into an editable design) and details the exact outputs: positioned text blocks with matched fonts, sizes and colours plus a saved text-free base image. That is far more than a restatement of the name. It stops short of distinguishing this tool from the similarly named sibling ideogram_layerize_logos, which an agent would have to resolve on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description notes font files are optional and points at ideogram_quote for pricing before a call, which hints at a paid, opt-in workflow. It never says when to choose this over ideogram_layerize_logos, ideogram_edit or the other edit-family siblings, and gives no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_layerize_logosLayerize logosA
Detect reference logos and image elements in a flat design and remove them: the text-free base image is saved, the detected layers come back with the reference each matched (REF_0, REF_1, … in the order given). The design and the references as local files or public https URLs. No price quote (the v1 operation offers no dry run).
| Name | Required | Description | Default |
|---|---|---|---|
| design_image | No | The flat design to analyze for logos, a local file or a public https URL | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| reference_images | No | Local image files (or public https URLs) of the logos to match in the design, REF_0, REF_1, … in the order given (at most 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful behavior: it removes detected elements, saves a text-free base image, and returns layers tagged with the matched reference. It also flags that there is no dry run and no price quote, which matters before invoking an irreversible-seeming operation. It omits auth requirements and failure behavior, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the whole thing is only three sentences. However, the middle sentence ('The design and the references as local files or public https URLs') is a verbless fragment that reads as garbled, slightly hurting structure without being wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description fills most of the gap by describing the returned base image and matched layers, plus the no-dry-run caveat. It still lacks detail on no-match outcomes or error handling, but for a 3-parameter operation it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters, including the REF_n ordering and local-file/https-URL input. The description largely restates the input formats ('as local files or public https URLs') and adds little beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: detect reference logos/image elements in a flat design, remove them, and save a text-free base image. It clearly scopes itself to logo layerization, distinguishing it from the generic sibling ideogram_layerize and from ideogram_remove_object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to choose this tool versus alternatives like ideogram_layerize or ideogram_remove_object. The 'No price quote / no dry run' caveat is a note about the operation, not a routing condition, so the agent must infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_magic_promptMagic prompt (Ideogram 4.0)A
Rewrite a natural-language prompt into an Ideogram 4.0 structured JSON prompt (and the aspect ratio the model picks for it, or the one you pin). Nothing is generated; no price quote (the v1 operation offers no dry run).
| Name | Required | Description | Default |
|---|---|---|---|
| text_prompt | No | The natural-language prompt to rewrite into an Ideogram 4.0 JSON prompt | |
| aspect_ratio | No | AUTO (default: the model picks the ratio and says it) or a ratio with an x as the generate tools take it — 1x1, 16x9, 9x16, 3x4, 4x3 … (the values listed in the variant) | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses non-effects (no generation, no dry run, no price quote) and states what is returned (JSON prompt plus aspect ratio), but is silent on whether the call itself consumes credits, what auth is required, or latency behavior for a rewrite operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the what-it-does clause comes first and the scope caveats follow. The parenthetical 'no price quote (the v1 operation offers no dry run)' is slightly tangled but still earns its place as a safeguard against misuse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations exist, so the description must stand alone; it does state the return payload (structured JSON prompt and aspect ratio) and the absence of side effects. The gap is that inline_images' base64/file-path return behavior, a real client-facing consequence, is left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the AUTO behavior ('the aspect ratio the model picks for it, or the one you pin'), which the schema already documents, and never mentions inline_images, so it adds little beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Rewrite a natural-language prompt into an Ideogram 4.0 structured JSON prompt') plus the secondary output (chosen/pinned aspect ratio). It also explicitly separates itself from the generate family with 'Nothing is generated', so an agent can distinguish it from siblings like ideogram_generate without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear boundary condition: 'Nothing is generated; no price quote (the v1 operation offers no dry run)', which tells an agent not to reach for this when it wants an image or a cost preflight. It stops short of naming the alternatives (ideogram_generate, ideogram_quote) explicitly, so it is clear context rather than full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_material_swapMaterial swapA
Apply the material of reference images — colour, texture, pattern scale, orientation — to the masked regions of a product photo (up to 4 masks and materials, paired by position). Files, public https URLs or Ideogram assets. Results are saved to the output directory; long jobs come back as a generation_id for ideogram_generation; ideogram_quote prices a call first.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | The source photo or ad to work on: a local image file or a public https URL (image_asset_identifier for an Ideogram asset) | |
| masks | No | Local mask files (or public https URLs) marking the regions to change, paired by position (at most 4, the product photo's pixel size) | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| quality | No | low, medium or high: higher may improve detail and takes longer | |
| materials | No | Local material reference images (or public https URLs) whose colour, texture, pattern scale and orientation are applied, paired by position with masks (at most 4) | |
| aspect_ratio | No | Output aspect ratio with a colon — 1:1, 3:4, 4:3, 16:9 or 9:16 where the operation lists them (colorways and material swap default to the photo's ratio, ghost mannequin and sketch to render to 1:1, pose variants to the nearest supported); magic prompt: the ratio to pin, or omitted for the model's pick | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| image_asset_identifier | No | An Ideogram asset (an upload or an earlier result) instead of a local image | |
| mask_asset_identifiers | No | Ideogram assets as the masks, paired by position (at most 4) | |
| material_asset_identifiers | No | Ideogram assets as the material references, paired by position (at most 4) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does real work: it discloses the async contract (job accepted first, generation_id returned if still running, never resubmitted or billed twice), where results land (output directory), asset-vs-file inputs, and the positional pairing of masks to materials. It doesn't cover permissions or account requirements, but the operational profile is well conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action and its field-level detail, then the input mediums, then the async/quoting follow-ups. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, no-output-schema, no-annotation tool, the description covers mechanism, pairing limits, input mediums, result location, and async/quoting handoffs — enough to invoke it correctly. It stops short of stating prerequisites or how mask/material counts must align on failure. Minor gaps only.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, and the description largely restates what the schema already says (files/URLs/assets, pairing by position, max 4). It adds no extra format detail on wait_s, quality, or inline_images beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource — applying reference-image material (colour, texture, pattern scale, orientation) to masked regions of a product photo — plus scope limits (up to 4 masks/materials, paired by position). This is clearly distinguishable from sibling edits like ideogram_colorways or ideogram_replace_background.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It points to the surrounding workflow (long jobs return a generation_id for ideogram_generation, ideogram_quote prices first) which implies when to poll and when to price, but it never states when to pick this tool over an adjacent edit tool such as colorways or remix. Usage is implied rather than contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_model_pose_variantsModel pose variantsA
Re-pose the model of a fashion image by a plain-language pose or camera instruction (an optional pose reference asset). The source as a local file, a public https URL or an Ideogram asset. Results are saved to the output directory; long jobs come back as a generation_id for ideogram_generation; no price quote (the operation offers no dry run).
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Random seed for a repeatable result | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| quality | No | low, medium or high: higher may improve detail and takes longer | |
| num_images | No | How many outputs to make (each is billed) | |
| instruction | No | Plain-language direction: the pose or camera for a pose variant, the materials and construction for a render, the reconstruction guidance for a ghost mannequin | |
| aspect_ratio | No | Output aspect ratio with a colon — 1:1, 3:4, 4:3, 16:9 or 9:16 where the operation lists them (colorways and material swap default to the photo's ratio, ghost mannequin and sketch to render to 1:1, pose variants to the nearest supported); magic prompt: the ratio to pin, or omitted for the model's pick | |
| source_image | No | The fashion image to edit, a local file or a public https URL; source_asset_identifier for an Ideogram asset | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| pose_reference_asset_identifier | No | An Ideogram asset whose pose the model takes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden, and it delivers meaningful behavior: outputs are written to the output directory, long-running jobs return a generation_id rather than a result, and there is no dry run or price quote. It stops short of noting billing implications or permission requirements, but the async/retry model is clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the purpose before operational notes, with no filler. Slightly dense in the third sentence (output dir, generation_id handoff, no dry run packed together) but each clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a ten-parameter generation tool with no annotations and no output schema, the description covers purpose, accepted source forms, output destination, and the long-job resumption path. It omits billing and authentication context, but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all ten parameters; the description only restates source formats (local file / https URL / Ideogram asset) and the pose reference, largely duplicating the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Re-pose the model of a fashion image') plus the governing input ('plain-language pose or camera instruction') and the optional pose reference. This distinguishes it cleanly from siblings like ideogram_ghost_mannequin, ideogram_material_swap and ideogram_precise_edit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The narrow scope implies when to use it, and it notes the async handoff to ideogram_generation and the absence of a dry run / price quote. However it never explicitly contrasts with alternatives or states when NOT to use it, so the agent must infer selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_modelsCustom modelsB
Your custom models and those shared with your organization: the list (by scope and status), or one by id with its training runs. Reads only.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | owned (yours) or shared (the organization's registry); default both | |
| status | No | Keep only these statuses (owned models) | |
| model_id | No | One model, with its training runs when it is yours |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the key safety trait ('Reads only') and one useful output behavior (training runs are returned only when the model is yours), but says nothing about pagination, result limits, or what a list response looks like versus a single-model response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence that front-loads the resource and then the two retrieval modes, with the read-only guarantee trailing as a compact clause. Nothing is padded, though the mid-sentence colon splice makes the mode distinction slightly harder to parse than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter, fully-documented read tool this is roughly adequate, but with no annotations and no output schema the description is the only source for behavioral and return-shape information, and it does not say whether a list returns an array, whether results are paginated, or what fields a model carries.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so scope, status, and model_id are already documented in the schema, and the 3 baseline applies. The description adds a small amount beyond the schema by noting the list-vs-single duality and that training runs come back only for owned models, but adds no syntax or format detail for the parameters themselves.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource (custom models owned or shared with the organization) and the two access modes: list by scope/status, or fetch one by id with its training runs. The verb is implicit ('the list ... or one by id') rather than a crisp 'list/get', and it does not explicitly distinguish itself from siblings like ideogram_datasets or ideogram_train, but an agent can still tell what it returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical 'the list (by scope and status), or one by id with its training runs' implies which parameter combination selects which mode, but never states when to reach for this tool over ideogram_train or ideogram_datasets, and gives no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_operationsList Ideogram operationsA
Discover what Ideogram's API offers and what this server serves: no input = every family; family = its operations (model, class, support, quotable); operation = its fields, file limits and rules, ready for ideogram_api.
| Name | Required | Description | Default |
|---|---|---|---|
| family | No | List one family's operations | |
| operation | No | Show one operation by id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does well: it discloses the shape of what each mode returns (families, operation attributes like model/class/support/quotable, and fields/file limits/rules). It does not confirm read-only semantics or mention auth/rate limits, but the extensive return-content disclosure is strong for a discovery tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence using semicolons to enumerate the three modes; nearly every clause carries information. Dense but not wasteful, though the parenthetical attribute list is slightly crammed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-optional-param catalog tool with no output schema and no annotations, the description adequately covers both invocation modes and the return contents. Minor gaps remain (error behavior for invalid family/operation, no explicit read-only confirmation), but nothing essential to calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning by explaining the hierarchical relationship between the two params (omit both for all families, give family for its operations, give operation for one). This drill-down semantics goes beyond the terse schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Discover) and resource (Ideogram's API family/operation catalog) and explains the tiered model, clearly distinguishing it from the operation-execution siblings like ideogram_generate. It stops short of naming those siblings outright, but the 'ready for ideogram_api' phrasing signals its role as the discovery precursor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit usage patterns for both modes: no input returns every family, providing family drills into its operations, and providing operation returns one operation's details. It implies the workflow (discover, then feed into ideogram_api) but never states when to prefer this over inspecting ideogram_api directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_precise_editPrecise edit (Ideogram 4.5)A
Edit an image with Ideogram 4.5 at its exact size: pixels the edit does not change stay as they are. Takes the image, an optional mask (black = edit), up to 4 reference images that guide the edit, and context_window to confine it. Results are saved to the output directory; ideogram_quote prices a call first (nothing is generated).
| Name | Required | Description | Default |
|---|---|---|---|
| mask | No | Local mask image file or a public https URL, the same size as the source | |
| seed | No | Random seed for a reproducible result | |
| image | No | Local image file to work on, or a public https URL of one | |
| model | No | The model (default ideogram-4-5); each takes the fields of its variant below | |
| prompt | No | What to create or change, in natural language | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| quality | No | very_low, low, medium or high: higher costs more | |
| num_images | No | How many images to make (each is billed) | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| context_window | No | Where to edit: "none" (whole image, default), "auto" (around the mask) or "y_min,x_min,y_max,x_max" | |
| reference_images | No | Local image files (or public https URLs) that guide the edit (never edited themselves); at most 4, at most 3 with a mask | |
| image_asset_identifier | No | An Ideogram asset (an upload or an earlier result) instead of a local image | |
| enable_copyright_detection | No | Run Ideogram's copyright detection on the result (adds latency) | |
| reference_image_asset_identifiers | No | Ideogram assets that guide the edit; needs the edited image by reference too, not with a mask |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden; it does disclose key behavior: results are saved to the output directory, nothing is generated by the quote, mask semantics (black = edit), reference images are not themselves edited, and a max of 4 (3 with mask). It does not disclose billing/rate behavior or failure modes, but covers the important operational traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the core distinguishing trait (exact size, unchanged pixels preserved) before enumerating inputs and the sibling quote tool. No filler, though the second sentence is a heavy clause stack.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter generation tool with no output schema and no annotations, the description gives the essentials an agent needs: input roles (image, mask, reference images, context_window), what changes and what doesn't, and the pricing sibling. Missing details on output format and billing, but the schema descriptions cover most parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already carries parameter meaning. The description reinforces the most error-prone semantics: mask color convention, context_window purpose, reference-image count limits, and the image+mask condition. It does not add meaning beyond schema for most parameters, keeping it near the 100%-coverage baseline, but the reinforced constraints add real value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (edit an image with Ideogram 4.5) and defines the distinguishing scope: pixels not changed stay as they are, at the exact size. Among many image-editing siblings (ideogram_edit, ideogram_inpaint, ideogram_remove_object), the 'exact size, unchanged pixels preserved' framing differentiates it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the conceptual model of the operation (black = edit in mask, context_window confines the edit, reference images guide but are never edited) which implies when this tool is right. It names ideogram_quote as the pricing alternative, but does not explicitly exclude the many overlapping edit siblings (inpaint, remove_object, replace_background), so routing is only partly disambiguated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_provenanceVerify provenanceA
Check whether an image was created by Ideogram: the provenance record (provider, system version, generation id, creation time, validation state) as Ideogram answers it. The image as a local file or a public https URL. Free of charge; no price quote.
| Name | Required | Description | Default |
|---|---|---|---|
| content | No | The image whose provenance is checked, a local file or a public https URL | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It usefully discloses the return fields and the zero cost, plus the caveat 'as Ideogram answers it,' but says nothing about authentication, rate limits, or what happens when the image is not Ideogram-generated (presumably an invalid validation state).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose and the returned record. The closing 'Free of charge; no price quote' is mildly redundant but does add routing value, so nothing is seriously wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helpfully enumerates the returned provenance fields, and it covers both accepted input forms and cost. The main remaining gap is failure behavior for images with no Ideogram provenance, which an agent would want to know before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema; the description only restates the accepted content forms. The inline_images flag and its base64/3.75 MB caveat are left entirely to the schema, so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Check whether an image was created by Ideogram' — and enumerates exactly what the answer contains (provider, system version, generation id, creation time, validation state). This clearly separates it from content-reading siblings such as ideogram_describe and from the generation/edit tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names the accepted input forms (local file or public https URL) and states 'Free of charge; no price quote,' which implicitly routes the agent away from ideogram_quote. It never says when to reach for this tool versus other inspection tools, and gives no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_quotePrice a callA
Ask Ideogram what a call would cost before making it: give the curated tool's name and the arguments you would pass it. Answers USD and credits from the API's own dry run (exact, or an estimate with its upper bound). Nothing is generated or billed.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | The curated tool whose call to price | |
| arguments | No | The arguments you would pass that tool |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does well: it guarantees 'nothing is generated or billed,' explains the answer comes from the API's own dry run, and discloses that results are either exact or an estimate with an upper bound. It stops short of covering errors, argument validation, or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight clauses with the core action front-loaded, then the inputs, then the output guarantee. No sentence is filler; each adds a distinct fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully describes the return content (USD and credits, exact or upper-bounded estimate) and the no-side-effect guarantee. For a two-parameter costing tool fully covered by the schema, nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% — both 'tool' and 'arguments' are already documented in the schema, including the enum of curated tools. The description restates the same meaning ('tool's name and the arguments you would pass it') without adding syntax, format, or constraint detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — asking Ideogram what a call would cost — with an unmistakable pre-flight framing ('before making it'). It implicitly separates itself from siblings like ideogram_usage and ideogram_invoices (post-hoc records) and from the generation tools it prices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The trigger is clear: use this before making a call, supplying the curated tool's name plus the arguments you would pass it. It does not name alternatives (e.g., ideogram_usage for historical spend) explicitly, so it falls just short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_reframeReframe an imageA
Extend an image to a new size by outpainting (Ideogram 3.0 or Nano Banana 2). Results are saved to the output directory; ideogram_quote prices a call first (nothing is generated).
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Random seed for a reproducible result | |
| image | No | Local image file to work on, or a public https URL of one | |
| model | No | The model (default ideogram-3); each takes the fields of its variant below | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| num_images | No | How many images to make (each is billed) | |
| resolution | No | Exact output size WIDTHxHEIGHT from the model's list; not with aspect_ratio | |
| style_codes | No | 8-character hexadecimal style codes | |
| aspect_ratio | No | Output aspect ratio such as 16x9; not with resolution | |
| style_preset | No | A named style preset; not with style codes or style references | |
| color_palette | No | A preset palette by name, or explicit hex colours with weights | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| rendering_speed | No | turbo, default or quality: faster is cheaper | |
| image_asset_identifier | No | An Ideogram asset (an upload or an earlier result) instead of a local image | |
| style_reference_images | No | Local image files (or public https URLs) whose style the result follows | |
| style_reference_asset_identifiers | No | Ideogram assets (uploads or earlier results) to use as style references |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses that results land in the output directory and that ideogram_quote is non-generating, but says nothing about billing (per-image charges), the async job lifecycle, or what happens on timeout – facts that exist only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: the operation and models come first, the output-location and pricing-tool note second. Every clause carries information; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter tool with no annotations and no output schema, the description covers the essentials (what it does, where output goes, that ideogram_quote only prices). It leans on the exhaustive 100%-coverage schema for parameter detail, which is acceptable, though it omits the asynchronous/billing behaviour the agent would want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with rich per-parameter descriptions and enum lists, so the baseline is 3. The description adds only the model names (Ideogram 3.0 / Nano Banana 2) which map to the existing model enum, adding no syntax or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and operation ('Extend an image... by outpainting') plus the two supported models, which cleanly separates it from siblings like ideogram_upscale, ideogram_inpaint, and ideogram_precise_edit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage context by pointing at ideogram_quote as the pre-flight pricing step and clarifying that quote generates nothing. It does not state when to prefer this over e.g. reframe-adjacent siblings, so no explicit alternative routing beyond that one mention.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_remixRemix an imageB
Make new images from a source image and a prompt (Ideogram 3.0 and its variants, Ideogram 4.0, or auto); image_weight sets how closely the result follows the source. Results are saved to the output directory; ideogram_quote prices a call first (nothing is generated).
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Random seed for a reproducible result | |
| image | No | Local image file to work on, or a public https URL of one | |
| model | No | The model (default ideogram-3); each takes the fields of its variant below | |
| prompt | No | What to create or change, in natural language | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| num_images | No | How many images to make (each is billed) | |
| resolution | No | Exact output size WIDTHxHEIGHT from the model's list; not with aspect_ratio | |
| style_type | No | Visual style family | |
| style_codes | No | 8-character hexadecimal style codes | |
| aspect_ratio | No | Output aspect ratio such as 16x9; not with resolution | |
| image_weight | No | How closely the result follows the source image, 1-100 | |
| magic_prompt | No | auto, on or off: let Ideogram rewrite the prompt | |
| style_preset | No | A named style preset; not with style codes or style references | |
| color_palette | No | A preset palette by name, or explicit hex colours with weights | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| negative_prompt | No | What to keep out of the image | |
| rendering_speed | No | turbo, default or quality: faster is cheaper | |
| resolution_tier | No | The output resolution tier | |
| custom_model_uri | No | A custom model you trained or were given access to | |
| image_asset_identifier | No | An Ideogram asset (an upload or an earlier result) instead of a local image | |
| style_reference_images | No | Local image files (or public https URLs) whose style the result follows | |
| character_reference_mask | No | Local grayscale mask (or a public https URL) of where the character is in its reference image | |
| character_reference_images | No | Local image files (or public https URLs) of the character to keep consistent | |
| enable_copyright_detection | No | Run Ideogram's copyright detection on the result (adds latency) | |
| style_reference_collection_id | No | A saved style collection to apply | |
| style_reference_asset_identifiers | No | Ideogram assets (uploads or earlier results) to use as style references | |
| character_reference_asset_identifiers | No | Ideogram assets to use as the character reference | |
| style_reference_collection_version_id | No | A version of the saved style collection |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that results are saved to the output directory and that quoting generates nothing and is not billed. It is silent on the cost per generated image, permission/asset requirements, or failure behavior, which matters for a paid generation tool with 29 optional parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences that are front-loaded with the core operation before the model list and the output/quote details. Given the tool's complexity this is compact and no sentence is filler, though the model parenthetical is slightly cluttered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 29-parameter tool with a five-branch oneOf schema, no annotations, and no output schema, the description is thin. It omits how the model choice changes required fields (e.g. custom_model_uri, rendering_speed availability) and says nothing about the mutually exclusive resolution/aspect_ratio options the schema encodes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter, establishing a baseline of 3. The description adds only the meaning of image_weight and the model list, both of which are effectively mirrored in the schema, so it contributes little beyond structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource: making new images from a source image plus a prompt, which is a distinct image-to-image operation. It names supported models and explains what image_weight controls. It does not explicitly distinguish itself from remix-adjacent siblings like ideogram_precise_edit or ideogram_inpaint, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It usefully routes the agent to ideogram_quote for pricing before generating, which is a genuine usage hint. However there is no guidance on when to prefer remix over ideogram_generate, ideogram_edit, or ideogram_precise_edit, and no exclusions or prerequisites for the source image.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_remove_backgroundRemove an image's backgroundA
Remove the background of an image: the foreground comes back as a transparent PNG. Takes a local file, a public https URL or an Ideogram asset. Results are saved to the output directory; ideogram_quote prices a call first (nothing is generated).
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | Local image file to work on, or a public https URL of one | |
| model | No | The model (default ideogram-1); each takes the fields of its variant below | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| image_asset_identifier | No | An Ideogram asset (an upload or an earlier result) instead of a local image |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does disclose real behavior beyond the schema: the output is a transparent PNG foreground, results land in the output directory, and quoting a call generates nothing. It omits billing/cost behavior of the actual call, whether the source image is left untouched, and synchronous-vs-async semantics (though wait_s in the schema covers the latter).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences that are front-loaded with the action and result, then inputs, then side effects. Every clause earns its place, and the ideogram_quote pointer is a genuinely useful aside rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no annotations and no output schema, the description covers purpose, output artifact, accepted inputs, and where results are saved. Missing only cost/permission expectations and an explicit statement that the operation does not alter the source image.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. 'Takes a local file, a public https URL or an Ideogram asset' usefully maps to the image vs image_asset_identifier variants, but the description adds no detail on model, private, wait_s, or inline_images beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Remove the background of an image') and adds the concrete result ('the foreground comes back as a transparent PNG'), which an agent can immediately act on. It does not explicitly contrast itself with the sibling ideogram_replace_background, but the verb choice makes the distinction largely self-evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when the tool applies and enumerates the three acceptable input sources (local file, public https URL, Ideogram asset), and it points to ideogram_quote for pricing. It stops short of explicit when-to-use/when-not guidance or naming a competing sibling such as ideogram_replace_background or ideogram_precise_edit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_remove_objectRemove an object from an imageA
Remove a masked object from an image (white in the mask = remove) and fill the gap. Needs the source and a mask of the same size, each a local file, a public https URL or an Ideogram asset. Results are saved to the output directory; ideogram_quote prices a call first (nothing is generated).
| Name | Required | Description | Default |
|---|---|---|---|
| mask | No | Local mask image file or a public https URL, the same size as the source | |
| seed | No | Random seed for a reproducible result | |
| image | No | Local image file to work on, or a public https URL of one | |
| model | No | The model (default ideogram-1); each takes the fields of its variant below | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| store_assets | No | Keep the result on Ideogram as an asset (accepted by the API, not yet enforced by it) | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| mask_asset_identifier | No | An Ideogram asset to use as the mask | |
| image_asset_identifier | No | An Ideogram asset (an upload or an earlier result) instead of a local image |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the mask convention, that results land in the output directory, and that ideogram_quote prices a call without generating. It omits billing/auth implications of the real call, failure behavior, and async polling expectations beyond what the schema already states for wait_s.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and mask convention, followed by required inputs and output/pricing behavior. No filler; every clause carries a fact the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, no-output-schema tool, the description covers the essential mechanics: mask semantics, accepted input forms, output location, and pricing path. Remaining gaps (error handling, cost of the billed call, async polling) are partially covered by the schema's wait_s description, so the definition is largely self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does add genuinely schema-absent detail — the white-equals-remove mask convention and the same-size constraint between mask and source — but otherwise the per-parameter meaning is already fully documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Remove a masked object from an image') and adds the operating convention (white in the mask = remove, fill the gap). The masked-object mechanism implicitly distinguishes it from siblings like ideogram_remove_background or ideogram_inpaint without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Points the agent to ideogram_quote for pricing and clarifies the input requirements (source + same-size mask, local/URL/asset), which is useful routing. However, it never says when to choose this over closely related siblings such as ideogram_inpaint, ideogram_remove_background, or ideogram_edit, leaving the primary selection decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_replace_backgroundReplace an image's backgroundA
Replace the background of an image and keep its subject (Ideogram 3.0 or GPT Image 2); the prompt describes the new background. Results are saved to the output directory; ideogram_quote prices a call first (nothing is generated).
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | Local image file to work on, or a public https URL of one | |
| model | No | The model (default ideogram-3); each takes the fields of its variant below | |
| prompt | No | What to create or change, in natural language | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| quality | No | very_low, low, medium or high: higher costs more | |
| num_images | No | How many images to make (each is billed) | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| rendering_speed | No | turbo, default or quality: faster is cheaper | |
| image_asset_identifier | No | An Ideogram asset (an upload or an earlier result) instead of a local image |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose two useful traits: results are written to the output directory, and ideogram_quote performs pricing without generating (no cost/side effect). It omits billing implications of num_images, the async wait/generation_id behavior, and privacy defaults, all of which only appear in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The core action and subject-preservation constraint lead, followed by where output lands and the free pricing precheck. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, annotation-free, output-schema-free tool, the description covers the essentials an agent needs: what it does, what the prompt means, where results go, and the quote precheck. Remaining gaps (billing, async polling) are already documented in the schema fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so a 3 is the baseline. The description goes beyond it by explaining what the prompt actually controls here — it describes the new background, not the whole image — which is non-obvious for a background-replacement tool and guides prompt authoring.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource pair (replace an image's background) and adds a scope qualifier — the subject is preserved — which implicitly separates it from remove_background/remove_object. It also names the two supported models. It does not explicitly name a sibling to route against, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (image editing where the subject stays and the background changes) and helpfully points at ideogram_quote as a free pricing step. But it never says when to pick this over remove_background, inpaint, precise_edit or edit, which are the genuinely confusable siblings in this list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_sketch_to_renderSketch to renderA
Render a fashion sketch as a product photo, with material and rendering direction and the construction details the sketch does not show. The sketch as a local file, a public https URL or an Ideogram asset. Results are saved to the output directory; long jobs come back as a generation_id for ideogram_generation; no price quote (the operation offers no dry run).
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Random seed for a repeatable result | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| quality | No | low, medium or high: higher may improve detail and takes longer | |
| num_images | No | How many outputs to make (each is billed) | |
| instruction | No | Plain-language direction: the pose or camera for a pose variant, the materials and construction for a render, the reconstruction guidance for a ghost mannequin | |
| aspect_ratio | No | Output aspect ratio with a colon — 1:1, 3:4, 4:3, 16:9 or 9:16 where the operation lists them (colorways and material swap default to the photo's ratio, ghost mannequin and sketch to render to 1:1, pose variants to the nearest supported); magic prompt: the ratio to pin, or omitted for the model's pick | |
| sketch_image | No | The fashion sketch to render, a local file or a public https URL; sketch_asset_identifier for an Ideogram asset | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does reasonably well: it discloses where results land (output directory), the async fallback (generation_id for ideogram_generation), and that no price quote or dry run is available. It does not state permission/auth requirements or what happens to existing assets, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the core purpose and followed by input forms and output/async behavior. Nearly every clause earns its place, though the parenthetical about the dry run is slightly compressed and the sketch input forms are repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter generation tool with no output schema and no annotations, the description supplies the essential return behavior (files to the output directory, generation_id for long jobs) and input-source flexibility. It stops short of covering auth, billing specifics, or how the async path is resumed, so an agent may still need the schema and sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters, making 3 the baseline. The description adds modest value by restating that the sketch may be a local file, a public https URL, or an Ideogram asset (sketch_image vs sketch_asset_identifier), but introduces no format or syntax detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ("Render") and resource ("a fashion sketch as a product photo"), and adds the transformation's intent (material/rendering direction plus construction details the sketch omits). This distinguishes it from siblings like ideogram_ghost_mannequin or ideogram_material_swap in substance, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the sketch-based input rather than stated: nothing says when to pick this over ghost_mannequin or material_swap for a similar fashion workflow. It does provide useful routing context ("long jobs come back as a generation_id for ideogram_generation") and a caveat about pricing, but no explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_snap_maskSnap a maskA
Snap a hand-drawn binary mask to the object it marks: the snapped mask comes back as a PNG (white = the object), saved to the output directory. Use it as is for ideogram_remove_object (white = the region to remove) and for the colorways and material swap masks (white = the region to change); invert it for ideogram_inpaint, whose mask takes black as the region to repaint. The image and the mask as local files or public https URLs. No price quote (the v1 operation offers no dry run).
| Name | Required | Description | Default |
|---|---|---|---|
| mask | No | The hand-drawn mask, a local file or a public https URL, the image's size: white (≥ 128) marks the object to snap to | |
| image | No | The image containing the object, a local file or a public https URL | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful behavior: the result is written to the output directory as a PNG, mask polarity is defined (white ≥ 128), and it explicitly states there is no price quote / no dry run for this v1 operation. It stops short of stating permission requirements, cost, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and output are front-loaded and every sentence carries information (polarity, downstream consumers, inversion rule, no dry run). The final 'No price quote' sentence is somewhat orphaned and the second sentence is long, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description fills the key gaps: it explains the return artifact (PNG, white = object, saved to output directory) and its intended consumption. Remaining gaps around authorization, cost and error handling are minor for a mask-snapping utility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so image, mask and inline_images are already documented in the schema, including the mask's polarity and the inline_images base64/size caveat. The description only restates that inputs may be local files or public https URLs, adding no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('snap a hand-drawn binary mask to the object it marks') and immediately characterizes the output (PNG, white = the object, saved to the output directory). It is clearly distinguishable from siblings like ideogram_inpaint and ideogram_remove_object, which it explicitly names as downstream consumers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing instructions: use the result as-is for ideogram_remove_object, colorways and material swap (white = region to change), and invert it for ideogram_inpaint (black = region to repaint). This tells the agent exactly when the tool fits and how its output must be transformed for each alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_trainTrain a custom modelA
Start training a custom Ideogram 4.0 (default) or 3.0 model from a dataset of 15-100 images; a hyperparameter routes to the advanced operation. Returns the model id to follow with ideogram_models; a completed model's custom_model_uri generates through ideogram_generate.
| Name | Required | Description | Default |
|---|---|---|---|
| ema | No | EMA decay in (0, 1) | |
| model | No | ideogram-4 (default) or ideogram-3 | |
| lora_rank | No | 64 or 128 | |
| batch_size | No | ideogram-4: 1, 2, 4, 8, 16 or 32 | |
| dataset_id | Yes | The dataset (15-100 images) | |
| model_name | Yes | 5-30 characters: letters, digits, spaces, hyphens | |
| base_variant | No | ideogram-4: the backbone | |
| learning_rate | No | above 0 | |
| wandb_project | No | ideogram-4: a W&B project | |
| training_steps | No | 100-10000, a multiple of 100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that training is tracked asynchronously via the returned model id and that the resulting custom_model_uri feeds ideogram_generate, but omits cost, permissions, rate limits, and how to poll training status.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, appropriately front-loaded with the purpose and constraints, then the follow-up tool chain. The 'hyperparameter routes to the advanced operation' phrase is the only bit of wasted/confusing text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex training tool with no annotations and no output schema, the description compensates by explaining the return value (model id) and downstream usage. Gaps remain around auth, cost, and async completion checking, but the call-and-follow workflow is complete enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all ten parameters (batch_size, lora_rank, learning_rate, etc.). The description adds only the dataset size range, which is already in the schema, so it earns the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Start training a custom Ideogram 4.0 (default) or 3.0 model from a dataset of 15-100 images'), which is easy to distinguish from generation/edit siblings. The clause 'a hyperparameter routes to the advanced operation' introduces minor ambiguity, but the core purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through the workflow chain ('follow with ideogram_models', 'generates through ideogram_generate') and the 15-100 image dataset constraint. There is no explicit when-to-use or when-not-to-use statement, and the 'advanced operation' routing is left unexplained, so the agent must infer conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_upscaleUpscale an imageA
Enlarge an image (auto, Topaz Bloom, Redefine, Standard, Text Refine and Wonder, or Nano Banana Pro); each model takes its own controls. Results are saved to the output directory; ideogram_quote prices a call first (nothing is generated).
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Random seed for a reproducible result | |
| image | No | Local image file to work on, or a public https URL of one | |
| model | No | The model (default auto); each takes the fields of its variant below | |
| prompt | No | What to create or change, in natural language | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| inline_images | No | true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access | |
| upscale_factor | No | x2, x4 or x8 | |
| resolution_tier | No | The output resolution tier | |
| image_asset_identifier | No | An Ideogram asset (an upload or an earlier result) instead of a local image |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It usefully discloses that results are written to an output directory and that ideogram_quote prices a call without generating anything, implying upscale does incur generation/billing, but it omits cost, async/wait behavior, and reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then packs the model options, output behavior, and pricing path into a compact two-clause sentence with no wasted words. Every clause adds usable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 10-parameter tool with seven model variants and no output schema, the description covers purpose, model choice, result destination, and the pricing entry point reasonably well. It could say more about when a result is deferred to a generation_id, though the schema's wait_s field documents that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real value by explaining that model variants exist and that "each model takes its own controls" — which frames the oneOf structure for the agent. The friendly model names ("Topaz Bloom") map only loosely to the enum values, slightly weakening the mapping.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Enlarge an image") and enumerates the available model backends, so the agent immediately knows what the tool does. It does not explicitly contrast itself with edit-oriented siblings like ideogram_precise_edit or ideogram_remix, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names ideogram_quote as the pricing-before-generation path, which clarifies a related tool, but gives no explicit when-to-use/when-not guidance against the many editing and generation siblings. Choice of model is implied by the list rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_usageUsage and spendA
Your organization's billed API usage as Ideogram reports it: dense time buckets of line items (product, endpoint, cost, units, the redacted API key), summed per product, unit and currency here, the buckets written unchanged to a file in the output directory (the shape ai-cost reads; printed too when small). Default: the last 7 days by day. Needs an API key whose owner is an organization admin. Reads only.
| Name | Required | Description | Default |
|---|---|---|---|
| sources | No | api (API requests), app (web-app usage) or both; default both | |
| end_time | No | End of the range, exclusive, RFC 3339; default now | |
| start_time | No | Start of the range, RFC 3339 (e.g. 2026-10-01T00:00:00Z); default 7 days (1d) or 24 hours (1h) before the end | |
| bucket_width | No | 1d (a range of at most 92 days) or 1h (at most 168 hours); default 1d |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses 'reads only', the org-admin API key prerequisite, and that the buckets are written unchanged to a file in the output directory (and printed when small). It stops short of stating rate limits, failure modes, or file naming.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single, heavily parenthesized run-on sentence that packs a lot in but is hard to parse; the most important facts (what it returns, the file output) are buried mid-sentence. Information density is high, but front-loading and readability suffer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by describing the returned buckets, the per-product/unit/currency aggregation, and the file artifact. For a 4-parameter read tool with an org-admin auth requirement, this covers most of what an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (sources, start_time, end_time, bucket_width) are already documented in the schema. The description restates the default window and the summing dimensions but adds no format or syntax detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (billed API/org usage) and what it returns (time buckets of line items summed by product, unit, currency), which separates it from ideogram_invoices, ideogram_quote and ideogram_generation. It never names a sibling explicitly, so the discrimination is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful context -- default range of the last 7 days by day, and the need for an API key owned by an org admin -- but never says when to prefer this over ideogram_invoices or ideogram_generation, nor any exclusion. Usage is implied by the resource rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_video_imageVideo from an imageA
A video that starts from an image (and optionally ends on another): Seedance 2.5 by default, Seedance 2, Kling 3 Standard, MiniMax H3. Takes local files, public https URLs or Ideogram assets. Saved as mp4; long jobs come back as a generation_id. ideogram_quote prices a call first.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | Local image file (or public https URL) the video starts from; not with image_asset_identifier | |
| model | No | The model (default seedance-2-5-image-to-video); each takes the fields of its variant below | |
| prompt | No | What the video shows, in natural language | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| duration | No | Length of the video in seconds (Seedance 2.5: 4-30, Seedance 2: 4-15, Kling: 3-15, MiniMax: 5-15). Omitted: Kling and MiniMax make 5 s; Seedance picks the length for the prompt and is QUOTED at its maximum length (30 s on 2.5, 15 s on 2) — give it, and ideogram_quote tells the price | |
| cfg_scale | No | How closely the video follows the prompt, 0-1 (default 0.5); lower leaves the model more freedom | |
| end_image | No | Local image file (or public https URL) the video ends on; not with end_image_asset_identifier | |
| shot_type | No | How the prompt is staged: customize follows it as written, intelligent lets the model split it into its own shots | |
| resolution | No | The resolution tier: 480p, 720p (default) or 1080p on Seedance 2.5 (480p/720p on Seedance 2), 480P, 768P, 2K (default) or 4K on MiniMax (2K and 4K are upscaled from 768P); higher costs more | |
| aspect_ratio | No | The video's aspect ratio such as 16x9 (auto on Seedance lets the model choose from the prompt); with resolution where the model takes both | |
| generate_audio | No | Also generate an audio track (about double the price per Ideogram — the dry-run quote does not include it; stricter moderation) | |
| negative_prompt | No | What to keep out of the video | |
| image_asset_identifier | No | An Ideogram asset the video starts from; not with image | |
| end_image_asset_identifier | No | An Ideogram asset the video ends on; not with end_image |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the output medium (saved as mp4) and the async fallback (long jobs return a generation_id). However, it omits the wait_s polling/accept-then-resume behavior and the private-by-default posture, both of which live only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the core purpose, then inputs, then output/pricing. Little waste, though the model list and pricing pointer make it slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter, four-variant tool with no output schema, the description covers source types, model choices, output format, and pricing hand-off, leaving only polling semantics to the schema. Completeness is solid, if not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 15 parameters, setting the baseline at 3. The description adds only the model roster and the accepted input source types (local files, https URLs, Ideogram assets), which the schema largely mirrors.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('A video that starts from an image') and enumerates the four supported models, which cleanly separates it from ideogram_video_text (text-driven) and ideogram_video_reference. It does not explicitly name those siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives implied context (image-to-video, optional end image) and routes the agent to ideogram_quote for pricing, but offers no explicit when-to-use-vs-alternatives guidance against the other two video tools or the image-editing siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_video_referenceVideo from referencesA
A video guided by reference images, audio clips (MP3/WAV: 2-30 s on Seedance 2.5, 2-15 s on Seedance 2 and MiniMax) and videos stored with Ideogram, in prompt order: Seedance 2.5 by default, Seedance 2, MiniMax H3; at least one reference image or video. Saved as mp4; long jobs come back as a generation_id. ideogram_quote prices a call first.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | The model (default seedance-2-5-reference-to-video); each takes the fields of its variant below | |
| prompt | No | What the video shows, in natural language | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| duration | No | Length of the video in seconds (Seedance 2.5: 4-30, Seedance 2: 4-15, Kling: 3-15, MiniMax: 5-15). Omitted: Kling and MiniMax make 5 s; Seedance picks the length for the prompt and is QUOTED at its maximum length (30 s on 2.5, 15 s on 2) — give it, and ideogram_quote tells the price | |
| resolution | No | The resolution tier: 480p, 720p (default) or 1080p on Seedance 2.5 (480p/720p on Seedance 2), 480P, 768P, 2K (default) or 4K on MiniMax (2K and 4K are upscaled from 768P); higher costs more | |
| aspect_ratio | No | The video's aspect ratio such as 16x9 (auto on Seedance lets the model choose from the prompt); with resolution where the model takes both | |
| generate_audio | No | Also generate an audio track (about double the price per Ideogram — the dry-run quote does not include it; stricter moderation) | |
| reference_audios | No | Local MP3 or WAV files (or public https URLs), in prompt order; Seedance 2.5: 2-30 s each and 30 s together (at most 10), Seedance 2 and MiniMax: 2-15 s each and 15 s together (at most 3) — the length is checked by Ideogram, not here; needs a reference image or video beside it | |
| reference_images | No | Local image files (or public https URLs) the video takes as references, in prompt order (at most 9); not with reference_image_asset_identifiers | |
| prompt_expansion_mode | No | How much the model may rewrite the prompt: disabled, fast, balanced (default) or quality | |
| reference_image_asset_identifiers | No | Ideogram assets as reference images, in prompt order (at most 9); not with reference_images | |
| reference_video_asset_identifiers | No | Videos stored with Ideogram (generated there, or uploaded in its app — the API has no video upload, and a result lists no video asset id), by asset, in prompt order; Seedance 2.5: 2-30 s each and 30 s together, Seedance 2 and MiniMax: 2-15 s and 15 s |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does reasonably well: it discloses the output format (mp4), the async behavior ('long jobs come back as a generation_id'), the model default, and the cost-check workflow via ideogram_quote. It omits permission/auth requirements and any rate or concurrency limits, but the core behavioral profile is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, followed by constraints, outputs, and the pricing pointer — a sensible order for a 13-parameter tool. It is dense with parenthetical per-model details, which slows reading slightly, but almost every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter generation tool with no annotations and no output schema, the description covers the essentials: supported inputs, model variants and default, minimum reference requirement, output format, async result shape, and the quote-first cost workflow. Remaining parameter detail is handled by the schema's own 100% description coverage, and return values are addressed via the mp4/generation_id statement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description still adds value beyond the schema: it establishes the model ordering and default, the 'at least one reference image or video' constraint that the schema does not state as a rule, the per-model audio duration limits, and the prompt-order semantics for references. It is additive rather than redundant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource and scope precisely: a video guided by reference images, audio clips, and Ideogram-stored videos, with a clear model ordering (Seedance 2.5 default, then Seedance 2, MiniMax H3). An agent can tell this is reference-to-video rather than a plain image-to-video tool. It stops short of naming the sibling it must not be confused with (ideogram_video_image / ideogram_video_text), so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through prerequisites ('at least one reference image or video') and a workflow hint ('ideogram_quote prices a call first'), which is genuinely useful. However, there is no explicit statement of when to choose this over ideogram_video_image, ideogram_video_text, or the other video siblings. Guidance exists but must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ideogram_video_textVideo from a promptA
A video from a text prompt (Seedance 2.5 by default, Seedance 2, Kling 3 Standard, MiniMax H3); each model takes its own duration, aspect ratio, resolution and audio controls. Saved as mp4 to the output directory (never inline); long jobs come back as a generation_id for ideogram_generation. Give duration to know the price: omitted, Seedance is quoted at its maximum length. ideogram_quote prices a call first.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | The model (default seedance-2-5-text-to-video); each takes the fields of its variant below | |
| prompt | No | What the video shows, in natural language | |
| wait_s | No | Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice). | |
| private | No | Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private) | |
| duration | No | Length of the video in seconds (Seedance 2.5: 4-30, Seedance 2: 4-15, Kling: 3-15, MiniMax: 5-15). Omitted: Kling and MiniMax make 5 s; Seedance picks the length for the prompt and is QUOTED at its maximum length (30 s on 2.5, 15 s on 2) — give it, and ideogram_quote tells the price | |
| cfg_scale | No | How closely the video follows the prompt, 0-1 (default 0.5); lower leaves the model more freedom | |
| shot_type | No | How the prompt is staged: customize follows it as written, intelligent lets the model split it into its own shots | |
| resolution | No | The resolution tier: 480p, 720p (default) or 1080p on Seedance 2.5 (480p/720p on Seedance 2), 480P, 768P, 2K (default) or 4K on MiniMax (2K and 4K are upscaled from 768P); higher costs more | |
| aspect_ratio | No | The video's aspect ratio such as 16x9 (auto on Seedance lets the model choose from the prompt); with resolution where the model takes both | |
| generate_audio | No | Also generate an audio track (about double the price per Ideogram — the dry-run quote does not include it; stricter moderation) | |
| negative_prompt | No | What to keep out of the video |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose real traits beyond the schema: output is always an mp4 file in the output directory and never inline, and long jobs return a generation_id rather than the video. However, it omits permissions/auth requirements, moderation behavior beyond the single 'stricter moderation' aside, and any failure/retry semantics for a long-running paid job.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences that front-load what the tool does, then output format, then pricing. Every clause carries information, though the parenthetical model list and the multi-clause duration sentence push it toward density over readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, no-annotation, no-output-schema tool, the description covers the important unknowns: where output lands, how async jobs resolve, and how duration affects cost. It leaves a few gaps (the private feed default, negative_prompt behavior) that the schema partially covers, but nothing critical to calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the baseline is 3, but the description adds genuine meaning the schema does not: omitted duration causes Seedance to be quoted at its maximum length, generate_audio roughly doubles the price and the dry-run quote excludes it, and resolution tiers on MiniMax are upscaled. That pricing/default interaction is the kind of context the schema can't carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource combination: generate a video from a text prompt, and names the four supported models up front. 'From a text prompt' implicitly separates it from the sibling video tools (ideogram_video_image, ideogram_video_reference), but those siblings are never named, so the distinction rests on inference rather than explicit contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Routes the agent to two alternatives with conditions: use ideogram_quote to price a call first, and use ideogram_generation to resume a job when a generation_id is returned. Also specifies when to supply duration (to get an accurate price). It stops short of saying when to prefer this tool over the other video-generation siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
38 tool updates
v2.5.0- Added
ideogram_ad_localizer - Added
ideogram_ad_resizer - Added
ideogram_ad_variations - Added
ideogram_api - Added
ideogram_api_keys - Added
ideogram_colorways - Added
ideogram_dataset_upload - Added
ideogram_datasets - Changed
ideogram_describe12 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - added
Input schema / definitionsAdded value: +{ + "__schema0": { + "properties": { + "asset_id": { + "type": "string" + }, + "asset_type": { + "enum": [ + "ASSET", + "CANVAS_ASSET", + "LAYERED_ASSET", + "RESPONSE", + "UPLOAD" + ], + "type": "string" + }, + "collection_id": { + "maxLength": 22, + "minLength": 22, + "pattern": "^[A-Za-z0-9_-]{22}$", + "type": "string" + } + }, + "required": [ + "asset_id", + "asset_type" + ], + "type": "object" + } +} - added
Input schema / oneOfAdded value: +[ + { + "properties": { + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema0" + }, + "model": { + "const": "ideogram-3", + "type": "string" + } + }, + "type": "object" + }, + { + "properties": { + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema0" + }, + "include_bbox": { + "default": true, + "type": "boolean" + }, + "include_style_descriptions": { + "default": false, + "type": "boolean" + }, + "include_tags": { + "default": false, + "type": "boolean" + }, + "model": { + "const": "ideogram-4", + "type": "string" + } + }, + "required": [ + "model" + ], + "type": "object" + } +] - changed
Input schema / properties / describe_model_version / descriptionPrevious value: -"Model version to use (default: V_3)"New value: +"1.x name of the model, deprecated: V_3 = model ideogram-3" - changed
Input schema / properties / image / descriptionPrevious value: -"Local file path of the image to describe"New value: +"Local image file to work on, or a public https URL of one" - removed
Input schema / properties / image / minLengthRemoved value: -1 - removed
Input schema / properties / image / typeRemoved value: -"string" - added
Input schema / properties / image_asset_identifierAdded value: +{ + "description": "An Ideogram asset (an upload or an earlier result) instead of a local image" +} - added
Input schema / properties / inline_imagesAdded value: +{ + "description": "true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access", + "type": "boolean" +} - added
Input schema / properties / modelAdded value: +{ + "description": "The model (default ideogram-3); each takes the fields of its variant below", + "enum": [ + "ideogram-3", + "ideogram-4" + ], + "type": "string" +} - added
Input schema / properties / wait_sAdded value: +{ + "description": "Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice).", + "maximum": 50, + "minimum": 0, + "type": "integer" +} - removed
Input schema / requiredRemoved value: -[ - "image" -]
- Changed
ideogram_edit16 fields changed- changed
Input schema / additionalPropertiesPrevious value: -falseNew value: +{} - removed
Input schema / properties / character_reference_imageRemoved value: -{ - "description": "Local image file of a character to keep consistent (one image; Ideogram bills character references at its own rate)", - "minLength": 1, - "type": "string" -} - removed
Input schema / properties / character_reference_maskRemoved value: -{ - "description": "Grayscale mask of the character reference (same dimensions); needs character_reference_image", - "minLength": 1, - "type": "string" -} - removed
Input schema / properties / color_paletteRemoved value: -{ - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "name": { - "description": "A preset palette", - "enum": [ - "EMBER", - "FRESH", - "JUNGLE", - "MAGIC", - "MELON", - "MOSAIC", - "PASTEL", - "ULTRAMARINE" - ], - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "members": { - "description": "Explicit colours, most dominant first", - "items": { - "additionalProperties": false, - "properties": { - "color_hex": { - "description": "The colour, #RRGGBB", - "pattern": "^#[0-9A-Fa-f]{6}$", - "type": "string" - }, - "color_weight": { - "description": "Its share of the palette (0.05-1)", - "maximum": 1, - "minimum": 0.05, - "type": "number" - } - }, - "required": [ - "color_hex" - ], - "type": "object" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "members" - ], - "type": "object" - } - ], - "description": "A preset palette by name, or explicit colours with weights (not both)" -} - removed
Input schema / properties / imageRemoved value: -{ - "description": "Local file path of the source image to edit", - "minLength": 1, - "type": "string" -} - removed
Input schema / properties / magic_promptRemoved value: -{ - "description": "Auto-enhance prompts (default: AUTO)", - "enum": [ - "AUTO", - "ON", - "OFF" - ], - "type": "string" -} - removed
Input schema / properties / maskRemoved value: -{ - "description": "Local file path of the mask image (black = regions to edit, white = keep)", - "minLength": 1, - "type": "string" -} - removed
Input schema / properties / num_imagesRemoved value: -{ - "description": "Number of variations (1-8, default: 1)", - "maximum": 8, - "minimum": 1, - "type": "integer" -} - removed
Input schema / properties / promptRemoved value: -{ - "description": "Description of desired changes", - "maxLength": 10000, - "minLength": 1, - "type": "string" -} - removed
Input schema / properties / rendering_speedRemoved value: -{ - "description": "Speed/quality tradeoff (default: DEFAULT)", - "enum": [ - "FLASH", - "TURBO", - "DEFAULT", - "QUALITY" - ], - "type": "string" -} - removed
Input schema / properties / seedRemoved value: -{ - "description": "Reproducibility seed", - "maximum": 2147483647, - "minimum": 0, - "type": "integer" -} - removed
Input schema / properties / style_codesRemoved value: -{ - "description": "8-character hexadecimal style codes from Ideogram", - "items": { - "pattern": "^[0-9A-Fa-f]{8}$", - "type": "string" - }, - "maxItems": 8, - "minItems": 1, - "type": "array" -} - removed
Input schema / properties / style_presetRemoved value: -{ - "description": "A named style preset as Ideogram lists them", - "maxLength": 100, - "minLength": 1, - "type": "string" -} - removed
Input schema / properties / style_reference_imagesRemoved value: -{ - "description": "Local image files whose style the result follows (up to 3, 25 MB each)", - "items": { - "minLength": 1, - "type": "string" - }, - "maxItems": 3, - "minItems": 1, - "type": "array" -} - removed
Input schema / properties / style_typeRemoved value: -{ - "description": "Visual style (the API default is GENERAL when omitted)", - "enum": [ - "AUTO", - "GENERAL", - "REALISTIC", - "DESIGN", - "FICTION" - ], - "type": "string" -} - removed
Input schema / requiredRemoved value: -[ - "image", - "mask", - "prompt" -]
- Changed
ideogram_generate74 fields changed- changed
Input schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Input schema / definitionsAdded value: +{ + "__schema0": { + "properties": { + "asset_id": { + "type": "string" + }, + "asset_type": { + "enum": [ + "ASSET", + "CANVAS_ASSET", + "LAYERED_ASSET", + "RESPONSE", + "UPLOAD" + ], + "type": "string" + }, + "collection_id": { + "maxLength": 22, + "minLength": 22, + "pattern": "^[A-Za-z0-9_-]{22}$", + "type": "string" + } + }, + "required": [ + "asset_id", + "asset_type" + ], + "type": "object" + }, + "__schema10": { + "enum": [ + "512x1536", + "576x1408", + "576x1472", + "576x1536", + "640x1344", + "640x1408", + "640x1472", + "640x1536", + "704x1152", + "704x1216", + "704x1280", + "704x1344", + "704x1408", + "704x1472", + "736x1312", + "768x1088", + "768x1216", + "768x1280", + "768x1344", + "800x1280", + "832x960", + "832x1024", + "832x1088", + "832x1152", + "832x1216", + "832x1248", + "864x1152", + "896x960", + "896x1024", + "896x1088", + "896x1120", + "896x1152", + "960x832", + "960x896", + "960x1024", + "960x1088", + "1024x832", + "1024x896", + "1024x960", + "1024x1024", + "1088x768", + "1088x832", + "1088x896", + "1088x960", + "1120x896", + "1152x704", + "1152x832", + "1152x864", + "1152x896", + "1216x704", + "1216x768", + "1216x832", + "1248x832", + "1280x704", + "1280x768", + "1280x800", + "1312x736", + "1344x640", + "1344x704", + "1344x768", + "1408x576", + "1408x640", + "1408x704", + "1472x576", + "1472x640", + "1472x704", + "1536x512", + "1536x576", + "1536x640" + ], + "type": "string" + }, + "__schema11": { + "pattern": "^[0-9a-fA-F]{8}$", + "type": "string" + }, + "__schema12": { + "enum": [ + "80s_illustration", + "90s_nostalgia", + "abstract_organic", + "analog_nostalgia", + "art_brut", + "art_deco", + "art_poster", + "aura", + "avant_garde", + "bauhaus", + "blueprint", + "blurry_motion", + "bright_art", + "c4d_cartoon", + "childrens_book", + "collage", + "coloring_book_i", + "coloring_book_ii", + "cubism", + "dark_aura", + "doodle", + "double_exposure", + "dramatic_cinema", + "editorial", + "emotional_minimal", + "ethereal_party", + "expired_film", + "flat_art", + "flat_vector", + "forest_reverie", + "geo_minimalist", + "glass_prism", + "golden_hour", + "graffiti_i", + "graffiti_ii", + "halftone_print", + "high_contrast", + "hippie_era", + "iconic", + "japandi_fusion", + "jazzy", + "long_exposure", + "magazine_editorial", + "minimal_illustration", + "mixed_media", + "monochrome", + "nightlife", + "oil_painting", + "old_cartoons", + "paint_gesture", + "pop_art", + "retro_etching", + "riviera_pop", + "spotlight_80s", + "stylized_red", + "surreal_collage", + "travel_poster", + "vintage_geo", + "vintage_poster", + "watercolor", + "weird", + "woodblock_print" + ], + "type": "string" + }, + "__schema17": { + "enum": [ + "2048x2048", + "1440x2880", + "2880x1440", + "1664x2496", + "2496x1664", + "1792x2240", + "2240x1792", + "1440x2560", + "2560x1440", + "1600x2560", + "2560x1600", + "1728x2304", + "2304x1728", + "1296x3168", + "3168x1296", + "1152x2944", + "2944x1152", + "1248x3328", + "3328x1248", + "1280x3072", + "3072x1280", + "1024x3072", + "3072x1024", + "1024x1024", + "896x1120", + "1120x896", + "864x1152", + "1152x864", + "832x1248", + "1248x832", + "800x1280", + "1280x800", + "720x1280", + "1280x720", + "720x1440", + "1440x720", + "512x1536", + "1536x512" + ], + "type": "string" + }, + "__schema19": { + "properties": { + "custom_model_uri": { + "maxLength": 512, + "minLength": 1, + "pattern": "^model\\/[^\\/]+\\/version\\/[^\\/]+$", + "type": "string" + }, + "weight": { + "default": 1, + "exclusiveMinimum": 0, + "type": "number" + } + }, + "required": [ + "custom_model_uri" + ], + "type": "object" + }, + "__schema2": { + "enum": [ + "auto", + "on", + "off" + ], + "type": "string" + }, + "__schema6": { + "enum": [ + "auto", + "1x3", + "3x1", + "1x2", + "2x1", + "9x16", + "16x9", + "10x16", + "16x10", + "2x3", + "3x2", + "3x4", + "4x3", + "4x5", + "5x4", + "1x1" + ], + "type": "string" + }, + "__schema7": { + "enum": [ + "auto", + "general", + "realistic", + "design", + "render_3d", + "anime" + ], + "type": "string" + }, + "__schema8": { + "anyOf": [ + { + "properties": { + "name": { + "enum": [ + "ember", + "fresh", + "jungle", + "magic", + "melon", + "mosaic", + "pastel", + "ultramarine" + ], + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + { + "properties": { + "members": { + "items": { + "$ref": "#/definitions/__schema9" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "members" + ], + "type": "object" + } + ] + }, + "__schema9": { + "properties": { + "color_hex": { + "pattern": "^#(?:[0-9a-fA-F]{3}){1,2}$", + "type": "string" + }, + "color_weight": { + "maximum": 1, + "minimum": 0.05, + "type": "number" + } + }, + "required": [ + "color_hex" + ], + "type": "object" + }, + "shared0": { + "items": { + "$ref": "#/definitions/__schema0" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "shared1": { + "maxLength": 10000, + "type": "string" + }, + "shared10": { + "items": { + "$ref": "#/definitions/__schema11" + }, + "type": "array" + }, + "shared11": { + "maxLength": 512, + "minLength": 1, + "pattern": "^model\\/[^\\/]+\\/version\\/[^\\/]+$", + "type": "string" + }, + "shared12": { + "enum": [ + "turbo", + "default", + "quality" + ], + "type": "string" + }, + "shared13": { + "default": "1K", + "enum": [ + "1K", + "2K", + "4K" + ], + "type": "string" + }, + "shared14": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "shared2": { + "default": 1, + "maximum": 8, + "minimum": 1, + "type": "integer" + }, + "shared3": { + "maxLength": 10000, + "minLength": 1, + "type": "string" + }, + "shared4": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "shared5": { + "items": { + "$ref": "#/definitions/__schema0" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "shared7": { + "default": "auto", + "enum": [ + "auto", + "transparent", + "opaque" + ], + "type": "string" + }, + "shared8": { + "default": "auto", + "enum": [ + "auto", + "low", + "medium", + "high" + ], + "type": "string" + }, + "shared9": { + "default": "default", + "enum": [ + "turbo", + "default", + "quality" + ], + "type": "string" + } +} - added
Input schema / oneOfAdded value: +[ + { + "properties": { + "aspect_ratio": { + "default": "auto", + "pattern": "^(auto|[1-9][0-9]{0,4}x[1-9][0-9]{0,4})$", + "type": "string" + }, + "category_id": { + "maxLength": 22, + "minLength": 22, + "pattern": "^[A-Za-z0-9_-]{22}$", + "type": "string" + }, + "image_asset_identifiers": { + "$ref": "#/definitions/shared0" + }, + "images": { + "items": { + "type": "string" + }, + "maxItems": 10, + "type": "array" + }, + "magic_prompt": { + "$ref": "#/definitions/__schema2" + }, + "model": { + "const": "auto", + "type": "string" + }, + "negative_prompt": { + "$ref": "#/definitions/shared1" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "private": { + "type": "boolean" + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "resolution": { + "pattern": "^[1-9][0-9]{1,4}x[1-9][0-9]{1,4}$", + "type": "string" + }, + "resolution_tier": { + "enum": [ + "1k", + "2k", + "4k" + ], + "type": "string" + }, + "seed": { + "$ref": "#/definitions/shared4" + }, + "style_reference_asset_identifiers": { + "$ref": "#/definitions/shared0" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "type": "string" + }, + "image_asset_identifiers": { + "$ref": "#/definitions/shared5" + }, + "images": { + "items": { + "type": "string" + }, + "maxItems": 16, + "type": "array" + }, + "model": { + "const": "gpt-image-2", + "type": "string" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "resolution": { + "type": "string" + }, + "seed": { + "$ref": "#/definitions/shared4" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "type": "string" + }, + "background": { + "$ref": "#/definitions/shared7" + }, + "image_asset_identifiers": { + "$ref": "#/definitions/shared5" + }, + "images": { + "items": { + "type": "string" + }, + "maxItems": 16, + "type": "array" + }, + "mask": { + "type": "string" + }, + "model": { + "const": "gpt-image-2-5-flare", + "type": "string" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "quality": { + "$ref": "#/definitions/shared8" + }, + "resolution": { + "type": "string" + }, + "seed": { + "$ref": "#/definitions/shared4" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "type": "string" + }, + "background": { + "$ref": "#/definitions/shared7" + }, + "image_asset_identifiers": { + "$ref": "#/definitions/shared5" + }, + "images": { + "items": { + "type": "string" + }, + "maxItems": 16, + "type": "array" + }, + "mask": { + "type": "string" + }, + "model": { + "const": "gpt-image-2-5-sunburst", + "type": "string" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "quality": { + "$ref": "#/definitions/shared8" + }, + "resolution": { + "type": "string" + }, + "seed": { + "$ref": "#/definitions/shared4" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "$ref": "#/definitions/__schema6" + }, + "enable_copyright_detection": { + "type": [ + "boolean", + "null" + ] + }, + "magic_prompt": { + "$ref": "#/definitions/__schema2" + }, + "model": { + "const": "ideogram-2", + "type": "string" + }, + "negative_prompt": { + "$ref": "#/definitions/shared1" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "rendering_speed": { + "$ref": "#/definitions/shared9" + }, + "seed": { + "$ref": "#/definitions/shared4" + }, + "style_type": { + "$ref": "#/definitions/__schema7" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "$ref": "#/definitions/__schema6" + }, + "enable_copyright_detection": { + "type": [ + "boolean", + "null" + ] + }, + "magic_prompt": { + "$ref": "#/definitions/__schema2" + }, + "model": { + "const": "ideogram-2a", + "type": "string" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "rendering_speed": { + "$ref": "#/definitions/shared9" + }, + "seed": { + "$ref": "#/definitions/shared4" + }, + "style_type": { + "$ref": "#/definitions/__schema7" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "$ref": "#/definitions/__schema6" + }, + "color_palette": { + "$ref": "#/definitions/__schema8" + }, + "enable_copyright_detection": { + "type": [ + "boolean", + "null" + ] + }, + "magic_prompt": { + "$ref": "#/definitions/__schema2" + }, + "model": { + "const": "ideogram-3", + "type": "string" + }, + "negative_prompt": { + "$ref": "#/definitions/shared1" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "rendering_speed": { + "$ref": "#/definitions/shared9" + }, + "resolution": { + "$ref": "#/definitions/__schema10" + }, + "seed": { + "$ref": "#/definitions/shared4" + }, + "style_codes": { + "$ref": "#/definitions/shared10" + }, + "style_preset": { + "$ref": "#/definitions/__schema12" + }, + "style_reference_asset_identifiers": { + "$ref": "#/definitions/shared0" + }, + "style_reference_collection_id": { + "type": "string" + }, + "style_reference_collection_version_id": { + "type": "string" + }, + "style_reference_images": { + "items": { + "type": "string" + }, + "maxItems": 10, + "type": "array" + }, + "style_type": { + "default": "general", + "enum": [ + "auto", + "general", + "realistic", + "design", + "custom", + "fiction", + "stylized" + ], + "type": "string" + } + }, + "required": [ + "prompt" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "$ref": "#/definitions/__schema6" + }, + "character_reference_asset_identifiers": { + "additionalItems": false, + "items": [ + { + "$ref": "#/definitions/__schema0" + } + ], + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "character_reference_collection_id": { + "type": "string" + }, + "character_reference_collection_version_id": { + "type": "string" + }, + "character_reference_images": { + "items": { + "type": "string" + }, + "maxItems": 1, + "type": "array" + }, + "character_reference_mask": { + "type": "string" + }, + "enable_copyright_detection": { + "type": [ + "boolean", + "null" + ] + }, + "magic_prompt": { + "$ref": "#/definitions/__schema2" + }, + "model": { + "const": "ideogram-3-character", + "type": "string" + }, + "negative_prompt": { + "$ref": "#/definitions/shared1" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "rendering_speed": { + "$ref": "#/definitions/shared9" + }, + "resolution": { + "$ref": "#/definitions/__schema10" + }, + "seed": { + "$ref": "#/definitions/shared4" + }, + "style_reference_asset_identifiers": { + "$ref": "#/definitions/shared0" + }, + "style_reference_collection_id": { + "type": "string" + }, + "style_reference_collection_version_id": { + "type": "string" + }, + "style_reference_images": { + "items": { + "type": "string" + }, + "maxItems": 10, + "type": "array" + }, + "style_type": { + "default": "auto", + "enum": [ + "auto", + "realistic", + "fiction" + ], + "type": "string" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "$ref": "#/definitions/__schema6" + }, + "color_palette": { + "$ref": "#/definitions/__schema8" + }, + "custom_model_uri": { + "$ref": "#/definitions/shared11" + }, + "enable_copyright_detection": { + "type": [ + "boolean", + "null" + ] + }, + "magic_prompt": { + "$ref": "#/definitions/__schema2" + }, + "model": { + "const": "ideogram-3-custom-model", + "type": "string" + }, + "negative_prompt": { + "$ref": "#/definitions/shared1" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "rendering_speed": { + "$ref": "#/definitions/shared12" + }, + "resolution": { + "$ref": "#/definitions/__schema10" + }, + "seed": { + "$ref": "#/definitions/shared4" + }, + "style_codes": { + "$ref": "#/definitions/shared10" + }, + "style_preset": { + "$ref": "#/definitions/__schema12" + }, + "style_reference_asset_identifiers": { + "$ref": "#/definitions/shared0" + }, + "style_reference_images": { + "items": { + "type": "string" + }, + "maxItems": 10, + "type": "array" + } + }, + "required": [ + "model", + "custom_model_uri", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "$ref": "#/definitions/__schema6" + }, + "enable_copyright_detection": { + "type": [ + "boolean", + "null" + ] + }, + "magic_prompt": { + "$ref": "#/definitions/__schema2" + }, + "model": { + "const": "ideogram-3-transparent", + "type": "string" + }, + "negative_prompt": { + "$ref": "#/definitions/shared1" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "rendering_speed": { + "$ref": "#/definitions/shared9" + }, + "seed": { + "$ref": "#/definitions/shared4" + }, + "upscale_factor": { + "default": "x1", + "enum": [ + "x1", + "x2", + "x4" + ], + "type": "string" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "enable_copyright_detection": { + "type": [ + "boolean", + "null" + ] + }, + "magic_prompt": { + "$ref": "#/definitions/__schema2" + }, + "model": { + "const": "ideogram-4", + "type": "string" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "rendering_speed": { + "$ref": "#/definitions/shared9" + }, + "resolution": { + "$ref": "#/definitions/__schema17" + }, + "seed": { + "$ref": "#/definitions/shared4" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "enable_copyright_detection": { + "type": [ + "boolean", + "null" + ] + }, + "image_asset_identifiers": { + "items": { + "$ref": "#/definitions/__schema0" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "images": { + "items": { + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "magic_prompt": { + "$ref": "#/definitions/__schema2" + }, + "mask": { + "type": "string" + }, + "model": { + "const": "ideogram-4-5", + "type": "string" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "quality": { + "enum": [ + "very_low", + "low", + "medium", + "high" + ], + "type": "string" + }, + "seed": { + "$ref": "#/definitions/shared4" + }, + "size": { + "default": "auto", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "custom_model_uri": { + "$ref": "#/definitions/shared11" + }, + "enable_copyright_detection": { + "type": [ + "boolean", + "null" + ] + }, + "magic_prompt": { + "$ref": "#/definitions/__schema2" + }, + "model": { + "const": "ideogram-4-custom-model", + "type": "string" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "rendering_speed": { + "$ref": "#/definitions/shared12" + }, + "resolution": { + "$ref": "#/definitions/__schema17" + }, + "seed": { + "$ref": "#/definitions/shared4" + }, + "stacked_custom_models": { + "items": { + "$ref": "#/definitions/__schema19" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "model", + "custom_model_uri", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "default": "auto", + "enum": [ + "auto", + "1x4", + "1x3", + "1x2", + "9x16", + "10x16", + "2x3", + "3x4", + "4x5", + "1x1", + "5x4", + "4x3", + "3x2", + "16x10", + "16x9", + "2x1", + "3x1", + "4x1" + ], + "type": "string" + }, + "enable_copyright_detection": { + "type": [ + "boolean", + "null" + ] + }, + "magic_prompt": { + "$ref": "#/definitions/__schema2" + }, + "model": { + "const": "ideogram-4-transparent", + "type": "string" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "output_resolution": { + "default": "1k", + "enum": [ + "1k", + "2k", + "4k", + "8k" + ], + "type": "string" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "rendering_speed": { + "$ref": "#/definitions/shared9" + }, + "seed": { + "$ref": "#/definitions/shared4" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "default": "auto", + "enum": [ + "auto", + "1:1", + "3:2", + "2:3", + "4:3", + "3:4", + "5:4", + "4:5", + "16:9", + "9:16", + "21:9", + "4:1", + "1:4", + "8:1", + "1:8" + ], + "type": "string" + }, + "image_asset_identifiers": { + "$ref": "#/definitions/shared0" + }, + "images": { + "items": { + "type": "string" + }, + "maxItems": 10, + "type": "array" + }, + "model": { + "const": "nano-banana-2", + "type": "string" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "resolution_tier": { + "$ref": "#/definitions/shared13" + }, + "seed": { + "$ref": "#/definitions/shared4" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "default": "auto", + "enum": [ + "auto", + "1:1", + "3:2", + "2:3", + "4:3", + "3:4", + "5:4", + "4:5", + "16:9", + "9:16", + "21:9" + ], + "type": "string" + }, + "image_asset_identifiers": { + "$ref": "#/definitions/shared0" + }, + "images": { + "items": { + "type": "string" + }, + "maxItems": 10, + "type": "array" + }, + "model": { + "const": "nano-banana-pro", + "type": "string" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "resolution_tier": { + "$ref": "#/definitions/shared13" + }, + "seed": { + "$ref": "#/definitions/shared4" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "enum": [ + "1x3", + "3x1", + "1x2", + "2x1", + "9x16", + "16x9", + "10x16", + "16x10", + "2x3", + "3x2", + "3x4", + "4x3", + "4x5", + "5x4", + "1x1" + ], + "type": "string" + }, + "custom_height": { + "$ref": "#/definitions/shared14" + }, + "custom_width": { + "$ref": "#/definitions/shared14" + }, + "enable_copyright_detection": { + "type": [ + "boolean", + "null" + ] + }, + "magic_prompt": { + "$ref": "#/definitions/__schema2" + }, + "model": { + "const": "p-image-ideogram", + "type": "string" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "quality": { + "enum": [ + "very_low", + "low", + "medium", + "high", + "very_high" + ], + "type": "string" + }, + "resolution": { + "enum": [ + "1k", + "2k" + ], + "type": "string" + }, + "seed": { + "$ref": "#/definitions/shared4" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "model": { + "const": "z-image", + "type": "string" + }, + "num_images": { + "$ref": "#/definitions/shared2" + }, + "num_inference_steps": { + "anyOf": [ + { + "maximum": 128, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared3" + }, + "resolution": { + "type": [ + "string", + "null" + ] + }, + "seed": { + "$ref": "#/definitions/shared4" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + } +] - changed
Input schema / properties / aspect_ratio / descriptionPrevious value: -"Output aspect ratio (default: 1x1)"New value: +"Output aspect ratio such as 16x9; not with resolution" - removed
Input schema / properties / aspect_ratio / enumRemoved value: -[ - "1x1", - "16x9", - "9x16", - "4x3", - "3x4", - "3x2", - "2x3", - "4x5", - "5x4", - "1x2", - "2x1", - "1x3", - "3x1", - "10x16", - "16x10" -] - removed
Input schema / properties / aspect_ratio / typeRemoved value: -"string" - added
Input schema / properties / character_reference_asset_identifiersAdded value: +{ + "description": "Ideogram assets to use as the character reference" +} - removed
Input schema / properties / character_reference_imageRemoved value: -{ - "description": "Local image file of a character to keep consistent (one image; Ideogram bills character references at its own rate)", - "minLength": 1, - "type": "string" -} - added
Input schema / properties / character_reference_imagesAdded value: +{ + "description": "Local image files (or public https URLs) of the character to keep consistent" +} - changed
Input schema / properties / character_reference_mask / descriptionPrevious value: -"Grayscale mask of the character reference (same dimensions); needs character_reference_image"New value: +"Local grayscale mask (or a public https URL) of where the character is in its reference image" - removed
Input schema / properties / character_reference_mask / minLengthRemoved value: -1 - removed
Input schema / properties / character_reference_mask / typeRemoved value: -"string" - removed
Input schema / properties / color_palette / anyOfRemoved value: -[ - { - "additionalProperties": false, - "properties": { - "name": { - "description": "A preset palette", - "enum": [ - "EMBER", - "FRESH", - "JUNGLE", - "MAGIC", - "MELON", - "MOSAIC", - "PASTEL", - "ULTRAMARINE" - ], - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "members": { - "description": "Explicit colours, most dominant first", - "items": { - "additionalProperties": false, - "properties": { - "color_hex": { - "description": "The colour, #RRGGBB", - "pattern": "^#[0-9A-Fa-f]{6}$", - "type": "string" - }, - "color_weight": { - "description": "Its share of the palette (0.05-1)", - "maximum": 1, - "minimum": 0.05, - "type": "number" - } - }, - "required": [ - "color_hex" - ], - "type": "object" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "members" - ], - "type": "object" - } -] - changed
Input schema / properties / color_palette / descriptionPrevious value: -"A preset palette by name, or explicit colours with weights (not both)"New value: +"A preset palette by name, or explicit hex colours with weights" - changed
Input schema / properties / custom_model_uri / descriptionPrevious value: -"A custom (trained) model: model/<name>/version/<version>"New value: +"A custom model you trained or were given access to" - removed
Input schema / properties / custom_model_uri / patternRemoved value: -"^model\\/[^/\\s]+\\/version\\/[^/\\s]+$" - removed
Input schema / properties / custom_model_uri / typeRemoved value: -"string" - changed
Input schema / properties / enable_copyright_detection / descriptionPrevious value: -"true runs Ideogram's copyright detection on this request; false leaves the organisation setting in force (it cannot switch an organisation-wide detection off)"New value: +"Run Ideogram's copyright detection on the result (adds latency)" - removed
Input schema / properties / enable_copyright_detection / typeRemoved value: -"boolean" - added
Input schema / properties / image_asset_identifiersAdded value: +{ + "description": "Ideogram assets instead of local source images" +} - added
Input schema / properties / imagesAdded value: +{ + "description": "Local source image files or public https URLs (the first is the one edited)" +} - added
Input schema / properties / inline_imagesAdded value: +{ + "description": "true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access", + "type": "boolean" +} - changed
Input schema / properties / magic_prompt / descriptionPrevious value: -"Auto-enhance prompts (default: AUTO)"New value: +"auto, on or off: let Ideogram rewrite the prompt" - removed
Input schema / properties / magic_prompt / enumRemoved value: -[ - "AUTO", - "ON", - "OFF" -] - removed
Input schema / properties / magic_prompt / typeRemoved value: -"string" - added
Input schema / properties / maskAdded value: +{ + "description": "Local mask image file or a public https URL, the same size as the source" +} - changed
Input schema / properties / model / descriptionPrevious value: -"Ideogram model: 3.0 (default; every parameter below) or 4.0 (text prompt, resolution, rendering_speed except FLASH, enable_copyright_detection — the other parameters are refused)"New value: +"The model (default ideogram-3); each takes the fields of its variant below" - changed
Input schema / properties / model / enumPrevious value: -[ - "3.0", - "4.0" -]New value: +[ + "auto", + "gpt-image-2", + "gpt-image-2-5-flare", + "gpt-image-2-5-sunburst", + "ideogram-2", + "ideogram-2a", + "ideogram-3", + "ideogram-3-character", + "ideogram-3-custom-model", + "ideogram-3-transparent", + "ideogram-4", + "ideogram-4-5", + "ideogram-4-custom-model", + "ideogram-4-transparent", + "nano-banana-2", + "nano-banana-pro", + "p-image-ideogram", + "z-image" +] - changed
Input schema / properties / negative_prompt / descriptionPrevious value: -"What to exclude from the generated image"New value: +"What to keep out of the image" - removed
Input schema / properties / negative_prompt / typeRemoved value: -"string" - changed
Input schema / properties / num_images / descriptionPrevious value: -"Number of images to generate (1-8, default: 1)"New value: +"How many images to make (each is billed)" - removed
Input schema / properties / num_images / maximumRemoved value: -8 - removed
Input schema / properties / num_images / minimumRemoved value: -1 - removed
Input schema / properties / num_images / typeRemoved value: -"integer" - added
Input schema / properties / privateAdded value: +{ + "description": "Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)" +} - changed
Input schema / properties / prompt / descriptionPrevious value: -"Image description (1-10,000 characters)"New value: +"What to create or change, in natural language" - removed
Input schema / properties / prompt / maxLengthRemoved value: -10000 - removed
Input schema / properties / prompt / minLengthRemoved value: -1 - removed
Input schema / properties / prompt / typeRemoved value: -"string" - added
Input schema / properties / qualityAdded value: +{ + "description": "very_low, low, medium or high: higher costs more" +} - changed
Input schema / properties / rendering_speed / descriptionPrevious value: -"Speed/quality tradeoff. FLASH=fastest, QUALITY=best (default: DEFAULT)"New value: +"turbo, default or quality: faster is cheaper" - removed
Input schema / properties / rendering_speed / enumRemoved value: -[ - "FLASH", - "TURBO", - "DEFAULT", - "QUALITY" -] - removed
Input schema / properties / rendering_speed / typeRemoved value: -"string" - removed
Input schema / properties / resolution / anyOfRemoved value: -[ - { - "enum": [ - "512x1536", - "576x1408", - "576x1472", - "576x1536", - "640x1344", - "640x1408", - "640x1472", - "640x1536", - "704x1152", - "704x1216", - "704x1280", - "704x1344", - "704x1408", - "704x1472", - "736x1312", - "768x1088", - "768x1216", - "768x1280", - "768x1344", - "800x1280", - "832x960", - "832x1024", - "832x1088", - "832x1152", - "832x1216", - "832x1248", - "864x1152", - "896x960", - "896x1024", - "896x1088", - "896x1120", - "896x1152", - "960x832", - "960x896", - "960x1024", - "960x1088", - "1024x832", - "1024x896", - "1024x960", - "1024x1024", - "1088x768", - "1088x832", - "1088x896", - "1088x960", - "1120x896", - "1152x704", - "1152x832", - "1152x864", - "1152x896", - "1216x704", - "1216x768", - "1216x832", - "1248x832", - "1280x704", - "1280x768", - "1280x800", - "1312x736", - "1344x640", - "1344x704", - "1344x768", - "1408x576", - "1408x640", - "1408x704", - "1472x576", - "1472x640", - "1472x704", - "1536x512", - "1536x576", - "1536x640" - ], - "type": "string" - }, - { - "pattern": "^\\d{3,4}x\\d{3,4}$", - "type": "string" - } -] - changed
Input schema / properties / resolution / descriptionPrevious value: -"Exact output resolution: one of Ideogram 3.0's 69 sizes, or any WIDTHxHEIGHT for model 4.0; not with aspect_ratio"New value: +"Exact output size WIDTHxHEIGHT from the model's list; not with aspect_ratio" - added
Input schema / properties / resolution_tierAdded value: +{ + "description": "The output resolution tier" +} - changed
Input schema / properties / seed / descriptionPrevious value: -"Reproducibility seed (0-2,147,483,647)"New value: +"Random seed for a reproducible result" - removed
Input schema / properties / seed / maximumRemoved value: -2147483647 - removed
Input schema / properties / seed / minimumRemoved value: -0 - removed
Input schema / properties / seed / typeRemoved value: -"integer" - added
Input schema / properties / sizeAdded value: +{ + "description": "Output size: \"auto\", \"source\" (needs source images) or WIDTHxHEIGHT" +} - changed
Input schema / properties / style_codes / descriptionPrevious value: -"8-character hexadecimal style codes from Ideogram"New value: +"8-character hexadecimal style codes" - removed
Input schema / properties / style_codes / itemsRemoved value: -{ - "pattern": "^[0-9A-Fa-f]{8}$", - "type": "string" -} - removed
Input schema / properties / style_codes / maxItemsRemoved value: -8 - removed
Input schema / properties / style_codes / minItemsRemoved value: -1 - removed
Input schema / properties / style_codes / typeRemoved value: -"array" - changed
Input schema / properties / style_preset / descriptionPrevious value: -"A named style preset as Ideogram lists them"New value: +"A named style preset; not with style codes or style references" - removed
Input schema / properties / style_preset / maxLengthRemoved value: -100 - removed
Input schema / properties / style_preset / minLengthRemoved value: -1 - removed
Input schema / properties / style_preset / typeRemoved value: -"string" - added
Input schema / properties / style_reference_asset_identifiersAdded value: +{ + "description": "Ideogram assets (uploads or earlier results) to use as style references" +} - added
Input schema / properties / style_reference_collection_idAdded value: +{ + "description": "A saved style collection to apply" +} - added
Input schema / properties / style_reference_collection_version_idAdded value: +{ + "description": "A version of the saved style collection" +} - changed
Input schema / properties / style_reference_images / descriptionPrevious value: -"Local image files whose style the result follows (up to 3, 25 MB each)"New value: +"Local image files (or public https URLs) whose style the result follows" - removed
Input schema / properties / style_reference_images / itemsRemoved value: -{ - "minLength": 1, - "type": "string" -} - removed
Input schema / properties / style_reference_images / maxItemsRemoved value: -3 - removed
Input schema / properties / style_reference_images / minItemsRemoved value: -1 - removed
Input schema / properties / style_reference_images / typeRemoved value: -"array" - changed
Input schema / properties / style_type / descriptionPrevious value: -"Visual style (the API default is GENERAL when omitted)"New value: +"Visual style family" - removed
Input schema / properties / style_type / enumRemoved value: -[ - "AUTO", - "GENERAL", - "REALISTIC", - "DESIGN", - "FICTION" -] - removed
Input schema / properties / style_type / typeRemoved value: -"string" - added
Input schema / properties / upscale_factorAdded value: +{ + "description": "x2, x4 or x8" +} - added
Input schema / properties / wait_sAdded value: +{ + "description": "Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice).", + "maximum": 50, + "minimum": 0, + "type": "integer" +} - removed
Input schema / requiredRemoved value: -[ - "prompt" -]
- Added
ideogram_generation - Added
ideogram_ghost_mannequin - Added
ideogram_inpaint - Added
ideogram_invoices - Added
ideogram_layerize - Added
ideogram_layerize_logos - Added
ideogram_magic_prompt - Added
ideogram_material_swap - Added
ideogram_model_pose_variants - Added
ideogram_models - Added
ideogram_operations - Added
ideogram_precise_edit - Added
ideogram_provenance - Added
ideogram_quote - Changed
ideogram_reframe32 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - added
Input schema / definitionsAdded value: +{ + "__schema0": { + "properties": { + "color_hex": { + "pattern": "^#(?:[0-9a-fA-F]{3}){1,2}$", + "type": "string" + }, + "color_weight": { + "maximum": 1, + "minimum": 0.05, + "type": "number" + } + }, + "required": [ + "color_hex" + ], + "type": "object" + }, + "__schema1": { + "properties": { + "asset_id": { + "type": "string" + }, + "asset_type": { + "enum": [ + "ASSET", + "CANVAS_ASSET", + "LAYERED_ASSET", + "RESPONSE", + "UPLOAD" + ], + "type": "string" + }, + "collection_id": { + "maxLength": 22, + "minLength": 22, + "pattern": "^[A-Za-z0-9_-]{22}$", + "type": "string" + } + }, + "required": [ + "asset_id", + "asset_type" + ], + "type": "object" + }, + "shared0": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + } +} - added
Input schema / oneOfAdded value: +[ + { + "properties": { + "color_palette": { + "anyOf": [ + { + "properties": { + "name": { + "enum": [ + "ember", + "fresh", + "jungle", + "magic", + "melon", + "mosaic", + "pastel", + "ultramarine" + ], + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + { + "properties": { + "members": { + "items": { + "$ref": "#/definitions/__schema0" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "members" + ], + "type": "object" + } + ] + }, + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema1" + }, + "model": { + "const": "ideogram-3", + "type": "string" + }, + "num_images": { + "default": 1, + "maximum": 8, + "minimum": 1, + "type": "integer" + }, + "rendering_speed": { + "default": "default", + "enum": [ + "turbo", + "default", + "quality" + ], + "type": "string" + }, + "resolution": { + "enum": [ + "512x1536", + "576x1408", + "576x1472", + "576x1536", + "640x1344", + "640x1408", + "640x1472", + "640x1536", + "704x1152", + "704x1216", + "704x1280", + "704x1344", + "704x1408", + "704x1472", + "736x1312", + "768x1088", + "768x1216", + "768x1280", + "768x1344", + "800x1280", + "832x960", + "832x1024", + "832x1088", + "832x1152", + "832x1216", + "832x1248", + "864x1152", + "896x960", + "896x1024", + "896x1088", + "896x1120", + "896x1152", + "960x832", + "960x896", + "960x1024", + "960x1088", + "1024x832", + "1024x896", + "1024x960", + "1024x1024", + "1088x768", + "1088x832", + "1088x896", + "1088x960", + "1120x896", + "1152x704", + "1152x832", + "1152x864", + "1152x896", + "1216x704", + "1216x768", + "1216x832", + "1248x832", + "1280x704", + "1280x768", + "1280x800", + "1312x736", + "1344x640", + "1344x704", + "1344x768", + "1408x576", + "1408x640", + "1408x704", + "1472x576", + "1472x640", + "1472x704", + "1536x512", + "1536x576", + "1536x640" + ], + "type": "string" + }, + "seed": { + "$ref": "#/definitions/shared0" + }, + "style_codes": { + "items": { + "pattern": "^[0-9a-fA-F]{8}$", + "type": "string" + }, + "type": "array" + }, + "style_preset": { + "enum": [ + "80s_illustration", + "90s_nostalgia", + "abstract_organic", + "analog_nostalgia", + "art_brut", + "art_deco", + "art_poster", + "aura", + "avant_garde", + "bauhaus", + "blueprint", + "blurry_motion", + "bright_art", + "c4d_cartoon", + "childrens_book", + "collage", + "coloring_book_i", + "coloring_book_ii", + "cubism", + "dark_aura", + "doodle", + "double_exposure", + "dramatic_cinema", + "editorial", + "emotional_minimal", + "ethereal_party", + "expired_film", + "flat_art", + "flat_vector", + "forest_reverie", + "geo_minimalist", + "glass_prism", + "golden_hour", + "graffiti_i", + "graffiti_ii", + "halftone_print", + "high_contrast", + "hippie_era", + "iconic", + "japandi_fusion", + "jazzy", + "long_exposure", + "magazine_editorial", + "minimal_illustration", + "mixed_media", + "monochrome", + "nightlife", + "oil_painting", + "old_cartoons", + "paint_gesture", + "pop_art", + "retro_etching", + "riviera_pop", + "spotlight_80s", + "stylized_red", + "surreal_collage", + "travel_poster", + "vintage_geo", + "vintage_poster", + "watercolor", + "weird", + "woodblock_print" + ], + "type": "string" + }, + "style_reference_asset_identifiers": { + "items": { + "$ref": "#/definitions/__schema1" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "style_reference_images": { + "items": { + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "resolution" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "enum": [ + "1:1", + "3:2", + "2:3", + "4:3", + "3:4", + "5:4", + "4:5", + "16:9", + "9:16", + "21:9", + "4:1", + "1:4", + "8:1", + "1:8" + ], + "type": "string" + }, + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema1" + }, + "model": { + "const": "nano-banana-2", + "type": "string" + }, + "num_images": { + "default": 1, + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "private": { + "type": "boolean" + }, + "seed": { + "$ref": "#/definitions/shared0" + } + }, + "required": [ + "model", + "aspect_ratio" + ], + "type": "object" + } +] - added
Input schema / properties / aspect_ratioAdded value: +{ + "description": "Output aspect ratio such as 16x9; not with resolution" +} - added
Input schema / properties / color_paletteAdded value: +{ + "description": "A preset palette by name, or explicit hex colours with weights" +} - changed
Input schema / properties / image / descriptionPrevious value: -"Local file path of the source image to reframe"New value: +"Local image file to work on, or a public https URL of one" - removed
Input schema / properties / image / minLengthRemoved value: -1 - removed
Input schema / properties / image / typeRemoved value: -"string" - added
Input schema / properties / image_asset_identifierAdded value: +{ + "description": "An Ideogram asset (an upload or an earlier result) instead of a local image" +} - added
Input schema / properties / inline_imagesAdded value: +{ + "description": "true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access", + "type": "boolean" +} - added
Input schema / properties / modelAdded value: +{ + "description": "The model (default ideogram-3); each takes the fields of its variant below", + "enum": [ + "ideogram-3", + "nano-banana-2" + ], + "type": "string" +} - changed
Input schema / properties / num_images / descriptionPrevious value: -"Number of variations (1-8, default: 1)"New value: +"How many images to make (each is billed)" - removed
Input schema / properties / num_images / maximumRemoved value: -8 - removed
Input schema / properties / num_images / minimumRemoved value: -1 - removed
Input schema / properties / num_images / typeRemoved value: -"integer" - added
Input schema / properties / privateAdded value: +{ + "description": "Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)" +} - changed
Input schema / properties / rendering_speed / descriptionPrevious value: -"Speed/quality tradeoff (default: DEFAULT)"New value: +"turbo, default or quality: faster is cheaper" - removed
Input schema / properties / rendering_speed / enumRemoved value: -[ - "FLASH", - "TURBO", - "DEFAULT", - "QUALITY" -] - removed
Input schema / properties / rendering_speed / typeRemoved value: -"string" - changed
Input schema / properties / resolution / descriptionPrevious value: -"Target resolution (e.g. 1024x1024, 1536x640). See Ideogram docs for all 69 valid resolutions."New value: +"Exact output size WIDTHxHEIGHT from the model's list; not with aspect_ratio" - removed
Input schema / properties / resolution / enumRemoved value: -[ - "512x1536", - "576x1408", - "576x1472", - "576x1536", - "640x1344", - "640x1408", - "640x1472", - "640x1536", - "704x1152", - "704x1216", - "704x1280", - "704x1344", - "704x1408", - "704x1472", - "736x1312", - "768x1088", - "768x1216", - "768x1280", - "768x1344", - "800x1280", - "832x960", - "832x1024", - "832x1088", - "832x1152", - "832x1216", - "832x1248", - "864x1152", - "896x960", - "896x1024", - "896x1088", - "896x1120", - "896x1152", - "960x832", - "960x896", - "960x1024", - "960x1088", - "1024x832", - "1024x896", - "1024x960", - "1024x1024", - "1088x768", - "1088x832", - "1088x896", - "1088x960", - "1120x896", - "1152x704", - "1152x832", - "1152x864", - "1152x896", - "1216x704", - "1216x768", - "1216x832", - "1248x832", - "1280x704", - "1280x768", - "1280x800", - "1312x736", - "1344x640", - "1344x704", - "1344x768", - "1408x576", - "1408x640", - "1408x704", - "1472x576", - "1472x640", - "1472x704", - "1536x512", - "1536x576", - "1536x640" -] - removed
Input schema / properties / resolution / typeRemoved value: -"string" - changed
Input schema / properties / seed / descriptionPrevious value: -"Reproducibility seed"New value: +"Random seed for a reproducible result" - removed
Input schema / properties / seed / maximumRemoved value: -2147483647 - removed
Input schema / properties / seed / minimumRemoved value: -0 - removed
Input schema / properties / seed / typeRemoved value: -"integer" - added
Input schema / properties / style_codesAdded value: +{ + "description": "8-character hexadecimal style codes" +} - added
Input schema / properties / style_presetAdded value: +{ + "description": "A named style preset; not with style codes or style references" +} - added
Input schema / properties / style_reference_asset_identifiersAdded value: +{ + "description": "Ideogram assets (uploads or earlier results) to use as style references" +} - added
Input schema / properties / style_reference_imagesAdded value: +{ + "description": "Local image files (or public https URLs) whose style the result follows" +} - added
Input schema / properties / wait_sAdded value: +{ + "description": "Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice).", + "maximum": 50, + "minimum": 0, + "type": "integer" +} - removed
Input schema / requiredRemoved value: -[ - "image", - "resolution" -]
- Changed
ideogram_remix73 fields changed- changed
Input schema / additionalPropertiesPrevious value: -falseNew value: +{} - added
Input schema / definitionsAdded value: +{ + "__schema0": { + "anyOf": [ + { + "properties": { + "name": { + "enum": [ + "ember", + "fresh", + "jungle", + "magic", + "melon", + "mosaic", + "pastel", + "ultramarine" + ], + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + { + "properties": { + "members": { + "items": { + "$ref": "#/definitions/__schema1" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "members" + ], + "type": "object" + } + ] + }, + "__schema1": { + "properties": { + "color_hex": { + "pattern": "^#(?:[0-9a-fA-F]{3}){1,2}$", + "type": "string" + }, + "color_weight": { + "maximum": 1, + "minimum": 0.05, + "type": "number" + } + }, + "required": [ + "color_hex" + ], + "type": "object" + }, + "__schema2": { + "properties": { + "asset_id": { + "type": "string" + }, + "asset_type": { + "enum": [ + "ASSET", + "CANVAS_ASSET", + "LAYERED_ASSET", + "RESPONSE", + "UPLOAD" + ], + "type": "string" + }, + "collection_id": { + "maxLength": 22, + "minLength": 22, + "pattern": "^[A-Za-z0-9_-]{22}$", + "type": "string" + } + }, + "required": [ + "asset_id", + "asset_type" + ], + "type": "object" + }, + "__schema3": { + "enum": [ + "auto", + "on", + "off" + ], + "type": "string" + }, + "__schema4": { + "pattern": "^[0-9a-fA-F]{8}$", + "type": "string" + }, + "__schema5": { + "enum": [ + "80s_illustration", + "90s_nostalgia", + "abstract_organic", + "analog_nostalgia", + "art_brut", + "art_deco", + "art_poster", + "aura", + "avant_garde", + "bauhaus", + "blueprint", + "blurry_motion", + "bright_art", + "c4d_cartoon", + "childrens_book", + "collage", + "coloring_book_i", + "coloring_book_ii", + "cubism", + "dark_aura", + "doodle", + "double_exposure", + "dramatic_cinema", + "editorial", + "emotional_minimal", + "ethereal_party", + "expired_film", + "flat_art", + "flat_vector", + "forest_reverie", + "geo_minimalist", + "glass_prism", + "golden_hour", + "graffiti_i", + "graffiti_ii", + "halftone_print", + "high_contrast", + "hippie_era", + "iconic", + "japandi_fusion", + "jazzy", + "long_exposure", + "magazine_editorial", + "minimal_illustration", + "mixed_media", + "monochrome", + "nightlife", + "oil_painting", + "old_cartoons", + "paint_gesture", + "pop_art", + "retro_etching", + "riviera_pop", + "spotlight_80s", + "stylized_red", + "surreal_collage", + "travel_poster", + "vintage_geo", + "vintage_poster", + "watercolor", + "weird", + "woodblock_print" + ], + "type": "string" + }, + "__schema6": { + "default": "general", + "enum": [ + "auto", + "general", + "realistic", + "design", + "custom", + "fiction", + "stylized" + ], + "type": "string" + }, + "__schema7": { + "enum": [ + "1x3", + "3x1", + "1x2", + "2x1", + "9x16", + "16x9", + "10x16", + "16x10", + "2x3", + "3x2", + "3x4", + "4x3", + "4x5", + "5x4", + "1x1" + ], + "type": "string" + }, + "__schema8": { + "enum": [ + "512x1536", + "576x1408", + "576x1472", + "576x1536", + "640x1344", + "640x1408", + "640x1472", + "640x1536", + "704x1152", + "704x1216", + "704x1280", + "704x1344", + "704x1408", + "704x1472", + "736x1312", + "768x1088", + "768x1216", + "768x1280", + "768x1344", + "800x1280", + "832x960", + "832x1024", + "832x1088", + "832x1152", + "832x1216", + "832x1248", + "864x1152", + "896x960", + "896x1024", + "896x1088", + "896x1120", + "896x1152", + "960x832", + "960x896", + "960x1024", + "960x1088", + "1024x832", + "1024x896", + "1024x960", + "1024x1024", + "1088x768", + "1088x832", + "1088x896", + "1088x960", + "1120x896", + "1152x704", + "1152x832", + "1152x864", + "1152x896", + "1216x704", + "1216x768", + "1216x832", + "1248x832", + "1280x704", + "1280x768", + "1280x800", + "1312x736", + "1344x640", + "1344x704", + "1344x768", + "1408x576", + "1408x640", + "1408x704", + "1472x576", + "1472x640", + "1472x704", + "1536x512", + "1536x576", + "1536x640" + ], + "type": "string" + }, + "shared1": { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "shared2": { + "maxLength": 10000, + "type": "string" + }, + "shared3": { + "default": 1, + "maximum": 8, + "minimum": 1, + "type": "integer" + }, + "shared4": { + "maxLength": 10000, + "minLength": 1, + "type": "string" + }, + "shared5": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "shared6": { + "items": { + "$ref": "#/definitions/__schema4" + }, + "type": "array" + }, + "shared7": { + "items": { + "$ref": "#/definitions/__schema2" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "shared8": { + "default": "default", + "enum": [ + "turbo", + "default", + "quality" + ], + "type": "string" + } +} - added
Input schema / oneOfAdded value: +[ + { + "properties": { + "aspect_ratio": { + "default": "auto", + "enum": [ + "auto", + "1x4", + "1x3", + "1x2", + "9x16", + "10x16", + "2x3", + "3x4", + "4x5", + "1x1", + "5x4", + "4x3", + "3x2", + "16x10", + "16x9", + "2x1", + "3x1", + "4x1" + ], + "type": "string" + }, + "color_palette": { + "$ref": "#/definitions/__schema0" + }, + "enable_copyright_detection": { + "type": [ + "boolean", + "null" + ] + }, + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema2" + }, + "image_weight": { + "$ref": "#/definitions/shared1" + }, + "magic_prompt": { + "$ref": "#/definitions/__schema3" + }, + "model": { + "const": "auto", + "type": "string" + }, + "negative_prompt": { + "$ref": "#/definitions/shared2" + }, + "num_images": { + "$ref": "#/definitions/shared3" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared4" + }, + "resolution": { + "pattern": "^[1-9][0-9]{1,4}x[1-9][0-9]{1,4}$", + "type": "string" + }, + "resolution_tier": { + "enum": [ + "1k", + "2k" + ], + "type": "string" + }, + "seed": { + "$ref": "#/definitions/shared5" + }, + "style_codes": { + "$ref": "#/definitions/shared6" + }, + "style_preset": { + "$ref": "#/definitions/__schema5" + }, + "style_reference_asset_identifiers": { + "$ref": "#/definitions/shared7" + }, + "style_reference_collection_id": { + "type": "string" + }, + "style_reference_collection_version_id": { + "type": "string" + }, + "style_type": { + "$ref": "#/definitions/__schema6" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "$ref": "#/definitions/__schema7" + }, + "color_palette": { + "$ref": "#/definitions/__schema0" + }, + "enable_copyright_detection": { + "type": [ + "boolean", + "null" + ] + }, + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema2" + }, + "image_weight": { + "$ref": "#/definitions/shared1" + }, + "magic_prompt": { + "$ref": "#/definitions/__schema3" + }, + "model": { + "const": "ideogram-3", + "type": "string" + }, + "negative_prompt": { + "$ref": "#/definitions/shared2" + }, + "num_images": { + "$ref": "#/definitions/shared3" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared4" + }, + "rendering_speed": { + "$ref": "#/definitions/shared8" + }, + "resolution": { + "$ref": "#/definitions/__schema8" + }, + "seed": { + "$ref": "#/definitions/shared5" + }, + "style_codes": { + "$ref": "#/definitions/shared6" + }, + "style_preset": { + "$ref": "#/definitions/__schema5" + }, + "style_reference_asset_identifiers": { + "$ref": "#/definitions/shared7" + }, + "style_reference_collection_id": { + "type": "string" + }, + "style_reference_collection_version_id": { + "type": "string" + }, + "style_reference_images": { + "items": { + "type": "string" + }, + "maxItems": 10, + "type": "array" + }, + "style_type": { + "$ref": "#/definitions/__schema6" + } + }, + "required": [ + "prompt" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "$ref": "#/definitions/__schema7" + }, + "character_reference_asset_identifiers": { + "additionalItems": false, + "items": [ + { + "$ref": "#/definitions/__schema2" + } + ], + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "character_reference_collection_id": { + "type": "string" + }, + "character_reference_collection_version_id": { + "type": "string" + }, + "character_reference_images": { + "items": { + "type": "string" + }, + "maxItems": 1, + "type": "array" + }, + "character_reference_mask": { + "type": "string" + }, + "enable_copyright_detection": { + "type": [ + "boolean", + "null" + ] + }, + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema2" + }, + "image_weight": { + "$ref": "#/definitions/shared1" + }, + "magic_prompt": { + "$ref": "#/definitions/__schema3" + }, + "model": { + "const": "ideogram-3-character", + "type": "string" + }, + "negative_prompt": { + "$ref": "#/definitions/shared2" + }, + "num_images": { + "$ref": "#/definitions/shared3" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared4" + }, + "rendering_speed": { + "$ref": "#/definitions/shared8" + }, + "resolution": { + "$ref": "#/definitions/__schema8" + }, + "seed": { + "$ref": "#/definitions/shared5" + }, + "style_reference_asset_identifiers": { + "$ref": "#/definitions/shared7" + }, + "style_reference_collection_id": { + "type": "string" + }, + "style_reference_collection_version_id": { + "type": "string" + }, + "style_reference_images": { + "items": { + "type": "string" + }, + "maxItems": 10, + "type": "array" + }, + "style_type": { + "default": "auto", + "enum": [ + "auto", + "realistic", + "fiction" + ], + "type": "string" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "aspect_ratio": { + "$ref": "#/definitions/__schema7" + }, + "color_palette": { + "$ref": "#/definitions/__schema0" + }, + "custom_model_uri": { + "maxLength": 512, + "minLength": 1, + "pattern": "^model\\/[^\\/]+\\/version\\/[^\\/]+$", + "type": "string" + }, + "enable_copyright_detection": { + "type": [ + "boolean", + "null" + ] + }, + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema2" + }, + "image_weight": { + "$ref": "#/definitions/shared1" + }, + "magic_prompt": { + "$ref": "#/definitions/__schema3" + }, + "model": { + "const": "ideogram-3-custom-model", + "type": "string" + }, + "negative_prompt": { + "$ref": "#/definitions/shared2" + }, + "num_images": { + "$ref": "#/definitions/shared3" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared4" + }, + "rendering_speed": { + "enum": [ + "turbo", + "default", + "quality" + ], + "type": "string" + }, + "resolution": { + "$ref": "#/definitions/__schema8" + }, + "seed": { + "$ref": "#/definitions/shared5" + }, + "style_codes": { + "$ref": "#/definitions/shared6" + }, + "style_preset": { + "$ref": "#/definitions/__schema5" + }, + "style_reference_asset_identifiers": { + "$ref": "#/definitions/shared7" + }, + "style_reference_images": { + "items": { + "type": "string" + }, + "maxItems": 10, + "type": "array" + } + }, + "required": [ + "model", + "custom_model_uri", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "enable_copyright_detection": { + "type": [ + "boolean", + "null" + ] + }, + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema2" + }, + "image_weight": { + "$ref": "#/definitions/shared1" + }, + "model": { + "const": "ideogram-4", + "type": "string" + }, + "num_images": { + "$ref": "#/definitions/shared3" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared4" + }, + "rendering_speed": { + "$ref": "#/definitions/shared8" + }, + "resolution": { + "enum": [ + "2048x2048", + "1440x2880", + "2880x1440", + "1664x2496", + "2496x1664", + "1792x2240", + "2240x1792", + "1440x2560", + "2560x1440", + "1600x2560", + "2560x1600", + "1728x2304", + "2304x1728", + "1296x3168", + "3168x1296", + "1152x2944", + "2944x1152", + "1248x3328", + "3328x1248", + "1280x3072", + "3072x1280", + "1024x3072", + "3072x1024", + "1024x1024", + "896x1120", + "1120x896", + "864x1152", + "1152x864", + "832x1248", + "1248x832", + "800x1280", + "1280x800", + "720x1280", + "1280x720", + "720x1440", + "1440x720", + "512x1536", + "1536x512" + ], + "type": "string" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + } +] - changed
Input schema / properties / aspect_ratio / descriptionPrevious value: -"Output aspect ratio"New value: +"Output aspect ratio such as 16x9; not with resolution" - removed
Input schema / properties / aspect_ratio / enumRemoved value: -[ - "1x1", - "16x9", - "9x16", - "4x3", - "3x4", - "3x2", - "2x3", - "4x5", - "5x4", - "1x2", - "2x1", - "1x3", - "3x1", - "10x16", - "16x10" -] - removed
Input schema / properties / aspect_ratio / typeRemoved value: -"string" - added
Input schema / properties / character_reference_asset_identifiersAdded value: +{ + "description": "Ideogram assets to use as the character reference" +} - removed
Input schema / properties / character_reference_imageRemoved value: -{ - "description": "Local image file of a character to keep consistent (one image; Ideogram bills character references at its own rate)", - "minLength": 1, - "type": "string" -} - added
Input schema / properties / character_reference_imagesAdded value: +{ + "description": "Local image files (or public https URLs) of the character to keep consistent" +} - changed
Input schema / properties / character_reference_mask / descriptionPrevious value: -"Grayscale mask of the character reference (same dimensions); needs character_reference_image"New value: +"Local grayscale mask (or a public https URL) of where the character is in its reference image" - removed
Input schema / properties / character_reference_mask / minLengthRemoved value: -1 - removed
Input schema / properties / character_reference_mask / typeRemoved value: -"string" - removed
Input schema / properties / color_palette / anyOfRemoved value: -[ - { - "additionalProperties": false, - "properties": { - "name": { - "description": "A preset palette", - "enum": [ - "EMBER", - "FRESH", - "JUNGLE", - "MAGIC", - "MELON", - "MOSAIC", - "PASTEL", - "ULTRAMARINE" - ], - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "members": { - "description": "Explicit colours, most dominant first", - "items": { - "additionalProperties": false, - "properties": { - "color_hex": { - "description": "The colour, #RRGGBB", - "pattern": "^#[0-9A-Fa-f]{6}$", - "type": "string" - }, - "color_weight": { - "description": "Its share of the palette (0.05-1)", - "maximum": 1, - "minimum": 0.05, - "type": "number" - } - }, - "required": [ - "color_hex" - ], - "type": "object" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "members" - ], - "type": "object" - } -] - changed
Input schema / properties / color_palette / descriptionPrevious value: -"A preset palette by name, or explicit colours with weights (not both)"New value: +"A preset palette by name, or explicit hex colours with weights" - added
Input schema / properties / custom_model_uriAdded value: +{ + "description": "A custom model you trained or were given access to" +} - added
Input schema / properties / enable_copyright_detectionAdded value: +{ + "description": "Run Ideogram's copyright detection on the result (adds latency)" +} - changed
Input schema / properties / image / descriptionPrevious value: -"Local file path of the source image to remix"New value: +"Local image file to work on, or a public https URL of one" - removed
Input schema / properties / image / minLengthRemoved value: -1 - removed
Input schema / properties / image / typeRemoved value: -"string" - added
Input schema / properties / image_asset_identifierAdded value: +{ + "description": "An Ideogram asset (an upload or an earlier result) instead of a local image" +} - changed
Input schema / properties / image_weight / descriptionPrevious value: -"Original image influence (0-100, default: 50)"New value: +"How closely the result follows the source image, 1-100" - removed
Input schema / properties / image_weight / maximumRemoved value: -100 - removed
Input schema / properties / image_weight / minimumRemoved value: -0 - removed
Input schema / properties / image_weight / typeRemoved value: -"integer" - added
Input schema / properties / inline_imagesAdded value: +{ + "description": "true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access", + "type": "boolean" +} - changed
Input schema / properties / magic_prompt / descriptionPrevious value: -"Auto-enhance prompts (default: AUTO)"New value: +"auto, on or off: let Ideogram rewrite the prompt" - removed
Input schema / properties / magic_prompt / enumRemoved value: -[ - "AUTO", - "ON", - "OFF" -] - removed
Input schema / properties / magic_prompt / typeRemoved value: -"string" - added
Input schema / properties / modelAdded value: +{ + "description": "The model (default ideogram-3); each takes the fields of its variant below", + "enum": [ + "auto", + "ideogram-3", + "ideogram-3-character", + "ideogram-3-custom-model", + "ideogram-4" + ], + "type": "string" +} - changed
Input schema / properties / negative_prompt / descriptionPrevious value: -"What to exclude"New value: +"What to keep out of the image" - removed
Input schema / properties / negative_prompt / typeRemoved value: -"string" - changed
Input schema / properties / num_images / descriptionPrevious value: -"Number of variations (1-8, default: 1)"New value: +"How many images to make (each is billed)" - removed
Input schema / properties / num_images / maximumRemoved value: -8 - removed
Input schema / properties / num_images / minimumRemoved value: -1 - removed
Input schema / properties / num_images / typeRemoved value: -"integer" - added
Input schema / properties / privateAdded value: +{ + "description": "Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)" +} - changed
Input schema / properties / prompt / descriptionPrevious value: -"New creative direction"New value: +"What to create or change, in natural language" - removed
Input schema / properties / prompt / maxLengthRemoved value: -10000 - removed
Input schema / properties / prompt / minLengthRemoved value: -1 - removed
Input schema / properties / prompt / typeRemoved value: -"string" - changed
Input schema / properties / rendering_speed / descriptionPrevious value: -"Speed/quality tradeoff (default: DEFAULT)"New value: +"turbo, default or quality: faster is cheaper" - removed
Input schema / properties / rendering_speed / enumRemoved value: -[ - "FLASH", - "TURBO", - "DEFAULT", - "QUALITY" -] - removed
Input schema / properties / rendering_speed / typeRemoved value: -"string" - changed
Input schema / properties / resolution / descriptionPrevious value: -"Exact output resolution (one of Ideogram's 69 sizes); not with aspect_ratio"New value: +"Exact output size WIDTHxHEIGHT from the model's list; not with aspect_ratio" - removed
Input schema / properties / resolution / enumRemoved value: -[ - "512x1536", - "576x1408", - "576x1472", - "576x1536", - "640x1344", - "640x1408", - "640x1472", - "640x1536", - "704x1152", - "704x1216", - "704x1280", - "704x1344", - "704x1408", - "704x1472", - "736x1312", - "768x1088", - "768x1216", - "768x1280", - "768x1344", - "800x1280", - "832x960", - "832x1024", - "832x1088", - "832x1152", - "832x1216", - "832x1248", - "864x1152", - "896x960", - "896x1024", - "896x1088", - "896x1120", - "896x1152", - "960x832", - "960x896", - "960x1024", - "960x1088", - "1024x832", - "1024x896", - "1024x960", - "1024x1024", - "1088x768", - "1088x832", - "1088x896", - "1088x960", - "1120x896", - "1152x704", - "1152x832", - "1152x864", - "1152x896", - "1216x704", - "1216x768", - "1216x832", - "1248x832", - "1280x704", - "1280x768", - "1280x800", - "1312x736", - "1344x640", - "1344x704", - "1344x768", - "1408x576", - "1408x640", - "1408x704", - "1472x576", - "1472x640", - "1472x704", - "1536x512", - "1536x576", - "1536x640" -] - removed
Input schema / properties / resolution / typeRemoved value: -"string" - added
Input schema / properties / resolution_tierAdded value: +{ + "description": "The output resolution tier" +} - changed
Input schema / properties / seed / descriptionPrevious value: -"Reproducibility seed"New value: +"Random seed for a reproducible result" - removed
Input schema / properties / seed / maximumRemoved value: -2147483647 - removed
Input schema / properties / seed / minimumRemoved value: -0 - removed
Input schema / properties / seed / typeRemoved value: -"integer" - changed
Input schema / properties / style_codes / descriptionPrevious value: -"8-character hexadecimal style codes from Ideogram"New value: +"8-character hexadecimal style codes" - removed
Input schema / properties / style_codes / itemsRemoved value: -{ - "pattern": "^[0-9A-Fa-f]{8}$", - "type": "string" -} - removed
Input schema / properties / style_codes / maxItemsRemoved value: -8 - removed
Input schema / properties / style_codes / minItemsRemoved value: -1 - removed
Input schema / properties / style_codes / typeRemoved value: -"array" - changed
Input schema / properties / style_preset / descriptionPrevious value: -"A named style preset as Ideogram lists them"New value: +"A named style preset; not with style codes or style references" - removed
Input schema / properties / style_preset / maxLengthRemoved value: -100 - removed
Input schema / properties / style_preset / minLengthRemoved value: -1 - removed
Input schema / properties / style_preset / typeRemoved value: -"string" - added
Input schema / properties / style_reference_asset_identifiersAdded value: +{ + "description": "Ideogram assets (uploads or earlier results) to use as style references" +} - added
Input schema / properties / style_reference_collection_idAdded value: +{ + "description": "A saved style collection to apply" +} - added
Input schema / properties / style_reference_collection_version_idAdded value: +{ + "description": "A version of the saved style collection" +} - changed
Input schema / properties / style_reference_images / descriptionPrevious value: -"Local image files whose style the result follows (up to 3, 25 MB each)"New value: +"Local image files (or public https URLs) whose style the result follows" - removed
Input schema / properties / style_reference_images / itemsRemoved value: -{ - "minLength": 1, - "type": "string" -} - removed
Input schema / properties / style_reference_images / maxItemsRemoved value: -3 - removed
Input schema / properties / style_reference_images / minItemsRemoved value: -1 - removed
Input schema / properties / style_reference_images / typeRemoved value: -"array" - changed
Input schema / properties / style_type / descriptionPrevious value: -"Visual style (the API default is GENERAL when omitted)"New value: +"Visual style family" - removed
Input schema / properties / style_type / enumRemoved value: -[ - "AUTO", - "GENERAL", - "REALISTIC", - "DESIGN", - "FICTION" -] - removed
Input schema / properties / style_type / typeRemoved value: -"string" - added
Input schema / properties / wait_sAdded value: +{ + "description": "Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice).", + "maximum": 50, + "minimum": 0, + "type": "integer" +} - removed
Input schema / requiredRemoved value: -[ - "image", - "prompt" -]
- Added
ideogram_remove_background - Added
ideogram_remove_object - Changed
ideogram_replace_background26 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - added
Input schema / definitionsAdded value: +{ + "__schema0": { + "properties": { + "asset_id": { + "type": "string" + }, + "asset_type": { + "enum": [ + "ASSET", + "CANVAS_ASSET", + "LAYERED_ASSET", + "RESPONSE", + "UPLOAD" + ], + "type": "string" + }, + "collection_id": { + "maxLength": 22, + "minLength": 22, + "pattern": "^[A-Za-z0-9_-]{22}$", + "type": "string" + } + }, + "required": [ + "asset_id", + "asset_type" + ], + "type": "object" + }, + "shared0": { + "default": 1, + "maximum": 8, + "minimum": 1, + "type": "integer" + }, + "shared1": { + "maxLength": 4000, + "minLength": 1, + "pattern": "\\S", + "type": "string" + } +} - added
Input schema / oneOfAdded value: +[ + { + "properties": { + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema0" + }, + "model": { + "const": "gpt-image-2", + "type": "string" + }, + "num_images": { + "$ref": "#/definitions/shared0" + }, + "private": { + "type": "boolean" + }, + "prompt": { + "$ref": "#/definitions/shared1" + }, + "quality": { + "enum": [ + "low", + "medium", + "high" + ], + "type": "string" + } + }, + "required": [ + "model", + "prompt" + ], + "type": "object" + }, + { + "properties": { + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema0" + }, + "model": { + "const": "ideogram-3", + "type": "string" + }, + "num_images": { + "$ref": "#/definitions/shared0" + }, + "private": { + "type": "boolean" + }, + "prompt": { + "$ref": "#/definitions/shared1" + }, + "rendering_speed": { + "default": "default", + "enum": [ + "turbo", + "default", + "quality" + ], + "type": "string" + } + }, + "required": [ + "prompt" + ], + "type": "object" + } +] - changed
Input schema / properties / image / descriptionPrevious value: -"Local file path of the source image"New value: +"Local image file to work on, or a public https URL of one" - removed
Input schema / properties / image / minLengthRemoved value: -1 - removed
Input schema / properties / image / typeRemoved value: -"string" - added
Input schema / properties / image_asset_identifierAdded value: +{ + "description": "An Ideogram asset (an upload or an earlier result) instead of a local image" +} - added
Input schema / properties / inline_imagesAdded value: +{ + "description": "true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access", + "type": "boolean" +} - removed
Input schema / properties / magic_promptRemoved value: -{ - "description": "Auto-enhance prompts (default: AUTO)", - "enum": [ - "AUTO", - "ON", - "OFF" - ], - "type": "string" -} - added
Input schema / properties / modelAdded value: +{ + "description": "The model (default ideogram-3); each takes the fields of its variant below", + "enum": [ + "gpt-image-2", + "ideogram-3" + ], + "type": "string" +} - changed
Input schema / properties / num_images / descriptionPrevious value: -"Number of variations (1-8, default: 1)"New value: +"How many images to make (each is billed)" - removed
Input schema / properties / num_images / maximumRemoved value: -8 - removed
Input schema / properties / num_images / minimumRemoved value: -1 - removed
Input schema / properties / num_images / typeRemoved value: -"integer" - added
Input schema / properties / privateAdded value: +{ + "description": "Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)" +} - changed
Input schema / properties / prompt / descriptionPrevious value: -"Description of the new background"New value: +"What to create or change, in natural language" - removed
Input schema / properties / prompt / maxLengthRemoved value: -10000 - removed
Input schema / properties / prompt / minLengthRemoved value: -1 - removed
Input schema / properties / prompt / typeRemoved value: -"string" - added
Input schema / properties / qualityAdded value: +{ + "description": "very_low, low, medium or high: higher costs more" +} - changed
Input schema / properties / rendering_speed / descriptionPrevious value: -"Speed/quality tradeoff (default: DEFAULT)"New value: +"turbo, default or quality: faster is cheaper" - removed
Input schema / properties / rendering_speed / enumRemoved value: -[ - "FLASH", - "TURBO", - "DEFAULT", - "QUALITY" -] - removed
Input schema / properties / rendering_speed / typeRemoved value: -"string" - removed
Input schema / properties / seedRemoved value: -{ - "description": "Reproducibility seed", - "maximum": 2147483647, - "minimum": 0, - "type": "integer" -} - added
Input schema / properties / wait_sAdded value: +{ + "description": "Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice).", + "maximum": 50, + "minimum": 0, + "type": "integer" +} - removed
Input schema / requiredRemoved value: -[ - "image", - "prompt" -]
- Added
ideogram_sketch_to_render - Added
ideogram_snap_mask - Added
ideogram_train - Changed
ideogram_upscale24 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - added
Input schema / definitionsAdded value: +{ + "__schema0": { + "properties": { + "asset_id": { + "type": "string" + }, + "asset_type": { + "enum": [ + "ASSET", + "CANVAS_ASSET", + "LAYERED_ASSET", + "RESPONSE", + "UPLOAD" + ], + "type": "string" + }, + "collection_id": { + "maxLength": 22, + "minLength": 22, + "pattern": "^[A-Za-z0-9_-]{22}$", + "type": "string" + } + }, + "required": [ + "asset_id", + "asset_type" + ], + "type": "object" + }, + "shared1": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "shared2": { + "default": "x2", + "enum": [ + "x2", + "x4", + "x8" + ], + "type": "string" + }, + "shared3": { + "default": 3, + "maximum": 9, + "minimum": 1, + "type": "integer" + }, + "shared4": { + "default": "", + "maxLength": 1024, + "type": "string" + }, + "shared6": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "shared7": { + "enum": [ + "all", + "foreground", + "background" + ], + "type": "string" + }, + "shared8": { + "maximum": 1, + "minimum": 0.01, + "type": "number" + } +} - added
Input schema / oneOfAdded value: +[ + { + "properties": { + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema0" + }, + "model": { + "const": "auto", + "type": "string" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "seed": { + "$ref": "#/definitions/shared1" + }, + "upscale_factor": { + "$ref": "#/definitions/shared2" + } + }, + "type": "object" + }, + { + "properties": { + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema0" + }, + "model": { + "const": "nano-banana-pro", + "type": "string" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "maxLength": 2000, + "type": "string" + }, + "resolution_tier": { + "default": "2K", + "enum": [ + "1K", + "2K", + "4K" + ], + "type": "string" + }, + "seed": { + "$ref": "#/definitions/shared1" + } + }, + "required": [ + "model" + ], + "type": "object" + }, + { + "properties": { + "color_preservation": { + "default": true, + "type": "boolean" + }, + "creativity": { + "$ref": "#/definitions/shared3" + }, + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema0" + }, + "model": { + "const": "topaz-bloom-2", + "type": "string" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared4" + }, + "seed": { + "$ref": "#/definitions/shared1" + }, + "upscale_factor": { + "$ref": "#/definitions/shared2" + } + }, + "required": [ + "model" + ], + "type": "object" + }, + { + "properties": { + "autoprompt": { + "default": false, + "type": "boolean" + }, + "creativity": { + "$ref": "#/definitions/shared3" + }, + "denoise": { + "$ref": "#/definitions/shared6" + }, + "detail": { + "default": false, + "type": "boolean" + }, + "detail_strength": { + "maximum": 10, + "minimum": 0, + "type": "number" + }, + "face_enhancement": { + "type": "boolean" + }, + "face_enhancement_creativity": { + "$ref": "#/definitions/shared6" + }, + "face_enhancement_strength": { + "$ref": "#/definitions/shared6" + }, + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema0" + }, + "model": { + "const": "topaz-redefine", + "type": "string" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "prompt": { + "$ref": "#/definitions/shared4" + }, + "seed": { + "$ref": "#/definitions/shared1" + }, + "sharpen": { + "$ref": "#/definitions/shared6" + }, + "subject_detection": { + "$ref": "#/definitions/shared7" + }, + "texture": { + "default": 1, + "maximum": 5, + "minimum": 1, + "type": "integer" + }, + "upscale_factor": { + "$ref": "#/definitions/shared2" + } + }, + "required": [ + "model" + ], + "type": "object" + }, + { + "properties": { + "denoise": { + "$ref": "#/definitions/shared6" + }, + "face_enhancement": { + "type": "boolean" + }, + "face_enhancement_creativity": { + "$ref": "#/definitions/shared6" + }, + "face_enhancement_strength": { + "$ref": "#/definitions/shared6" + }, + "fix_compression": { + "$ref": "#/definitions/shared6" + }, + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema0" + }, + "model": { + "const": "topaz-standard-2", + "type": "string" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "sharpen": { + "$ref": "#/definitions/shared6" + }, + "strength": { + "$ref": "#/definitions/shared8" + }, + "subject_detection": { + "$ref": "#/definitions/shared7" + }, + "upscale_factor": { + "$ref": "#/definitions/shared2" + } + }, + "required": [ + "model" + ], + "type": "object" + }, + { + "properties": { + "denoise": { + "$ref": "#/definitions/shared6" + }, + "face_enhancement": { + "type": "boolean" + }, + "face_enhancement_creativity": { + "$ref": "#/definitions/shared6" + }, + "face_enhancement_strength": { + "$ref": "#/definitions/shared6" + }, + "fix_compression": { + "$ref": "#/definitions/shared6" + }, + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema0" + }, + "model": { + "const": "topaz-text-refine", + "type": "string" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "seed": { + "$ref": "#/definitions/shared1" + }, + "sharpen": { + "$ref": "#/definitions/shared6" + }, + "strength": { + "$ref": "#/definitions/shared8" + }, + "subject_detection": { + "$ref": "#/definitions/shared7" + }, + "upscale_factor": { + "$ref": "#/definitions/shared2" + } + }, + "required": [ + "model" + ], + "type": "object" + }, + { + "properties": { + "enhancement_strength": { + "default": "high", + "enum": [ + "low", + "medium", + "high" + ], + "type": "string" + }, + "image": { + "type": "string" + }, + "image_asset_identifier": { + "$ref": "#/definitions/__schema0" + }, + "model": { + "const": "topaz-wonder-3-5", + "type": "string" + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "seed": { + "$ref": "#/definitions/shared1" + }, + "upscale_factor": { + "$ref": "#/definitions/shared2" + } + }, + "required": [ + "model" + ], + "type": "object" + } +] - removed
Input schema / properties / detailRemoved value: -{ - "description": "Detail to add (0-100, default: 50)", - "maximum": 100, - "minimum": 0, - "type": "integer" -} - changed
Input schema / properties / image / descriptionPrevious value: -"Local file path of the image to upscale"New value: +"Local image file to work on, or a public https URL of one" - removed
Input schema / properties / image / minLengthRemoved value: -1 - removed
Input schema / properties / image / typeRemoved value: -"string" - added
Input schema / properties / image_asset_identifierAdded value: +{ + "description": "An Ideogram asset (an upload or an earlier result) instead of a local image" +} - added
Input schema / properties / inline_imagesAdded value: +{ + "description": "true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access", + "type": "boolean" +} - removed
Input schema / properties / magic_promptRemoved value: -{ - "description": "Auto-enhance prompts (AUTO/ON/OFF)", - "enum": [ - "AUTO", - "ON", - "OFF" - ], - "type": "string" -} - added
Input schema / properties / modelAdded value: +{ + "description": "The model (default auto); each takes the fields of its variant below", + "enum": [ + "auto", + "nano-banana-pro", + "topaz-bloom-2", + "topaz-redefine", + "topaz-standard-2", + "topaz-text-refine", + "topaz-wonder-3-5" + ], + "type": "string" +} - removed
Input schema / properties / num_imagesRemoved value: -{ - "description": "Number of variations (1-8, default: 1)", - "maximum": 8, - "minimum": 1, - "type": "integer" -} - added
Input schema / properties / privateAdded value: +{ + "description": "Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)" +} - changed
Input schema / properties / prompt / descriptionPrevious value: -"Guide the upscaling enhancement"New value: +"What to create or change, in natural language" - removed
Input schema / properties / prompt / typeRemoved value: -"string" - removed
Input schema / properties / resemblanceRemoved value: -{ - "description": "Similarity to original (0-100, default: 50)", - "maximum": 100, - "minimum": 0, - "type": "integer" -} - added
Input schema / properties / resolution_tierAdded value: +{ + "description": "The output resolution tier" +} - changed
Input schema / properties / seed / descriptionPrevious value: -"Reproducibility seed"New value: +"Random seed for a reproducible result" - removed
Input schema / properties / seed / maximumRemoved value: -2147483647 - removed
Input schema / properties / seed / minimumRemoved value: -0 - removed
Input schema / properties / seed / typeRemoved value: -"integer" - added
Input schema / properties / upscale_factorAdded value: +{ + "description": "x2, x4 or x8" +} - added
Input schema / properties / wait_sAdded value: +{ + "description": "Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice).", + "maximum": 50, + "minimum": 0, + "type": "integer" +} - removed
Input schema / requiredRemoved value: -[ - "image" -]
- Added
ideogram_usage - Added
ideogram_video_image - Added
ideogram_video_reference - Added
ideogram_video_text
3 tool updates
v1.2.0- Changed
ideogram_edit9 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / character_reference_imageAdded value: +{ + "description": "Local image file of a character to keep consistent (one image; Ideogram bills character references at its own rate)", + "minLength": 1, + "type": "string" +} - added
Input schema / properties / character_reference_maskAdded value: +{ + "description": "Grayscale mask of the character reference (same dimensions); needs character_reference_image", + "minLength": 1, + "type": "string" +} - added
Input schema / properties / color_paletteAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "name": { + "description": "A preset palette", + "enum": [ + "EMBER", + "FRESH", + "JUNGLE", + "MAGIC", + "MELON", + "MOSAIC", + "PASTEL", + "ULTRAMARINE" + ], + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "members": { + "description": "Explicit colours, most dominant first", + "items": { + "additionalProperties": false, + "properties": { + "color_hex": { + "description": "The colour, #RRGGBB", + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" + }, + "color_weight": { + "description": "Its share of the palette (0.05-1)", + "maximum": 1, + "minimum": 0.05, + "type": "number" + } + }, + "required": [ + "color_hex" + ], + "type": "object" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "members" + ], + "type": "object" + } + ], + "description": "A preset palette by name, or explicit colours with weights (not both)" +} - changed
Input schema / properties / mask / descriptionPrevious value: -"Local file path of the mask image (black=edit, white=keep, min 10% black)"New value: +"Local file path of the mask image (black = regions to edit, white = keep)" - added
Input schema / properties / style_codesAdded value: +{ + "description": "8-character hexadecimal style codes from Ideogram", + "items": { + "pattern": "^[0-9A-Fa-f]{8}$", + "type": "string" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / style_presetAdded value: +{ + "description": "A named style preset as Ideogram lists them", + "maxLength": 100, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / style_reference_imagesAdded value: +{ + "description": "Local image files whose style the result follows (up to 3, 25 MB each)", + "items": { + "minLength": 1, + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array" +} - changed
Input schema / properties / style_type / descriptionPrevious value: -"Visual style (default: AUTO)"New value: +"Visual style (the API default is GENERAL when omitted)"
- Changed
ideogram_generate12 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / character_reference_imageAdded value: +{ + "description": "Local image file of a character to keep consistent (one image; Ideogram bills character references at its own rate)", + "minLength": 1, + "type": "string" +} - added
Input schema / properties / character_reference_maskAdded value: +{ + "description": "Grayscale mask of the character reference (same dimensions); needs character_reference_image", + "minLength": 1, + "type": "string" +} - added
Input schema / properties / color_paletteAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "name": { + "description": "A preset palette", + "enum": [ + "EMBER", + "FRESH", + "JUNGLE", + "MAGIC", + "MELON", + "MOSAIC", + "PASTEL", + "ULTRAMARINE" + ], + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "members": { + "description": "Explicit colours, most dominant first", + "items": { + "additionalProperties": false, + "properties": { + "color_hex": { + "description": "The colour, #RRGGBB", + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" + }, + "color_weight": { + "description": "Its share of the palette (0.05-1)", + "maximum": 1, + "minimum": 0.05, + "type": "number" + } + }, + "required": [ + "color_hex" + ], + "type": "object" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "members" + ], + "type": "object" + } + ], + "description": "A preset palette by name, or explicit colours with weights (not both)" +} - added
Input schema / properties / custom_model_uriAdded value: +{ + "description": "A custom (trained) model: model/<name>/version/<version>", + "pattern": "^model\\/[^/\\s]+\\/version\\/[^/\\s]+$", + "type": "string" +} - added
Input schema / properties / enable_copyright_detectionAdded value: +{ + "description": "true runs Ideogram's copyright detection on this request; false leaves the organisation setting in force (it cannot switch an organisation-wide detection off)", + "type": "boolean" +} - added
Input schema / properties / modelAdded value: +{ + "description": "Ideogram model: 3.0 (default; every parameter below) or 4.0 (text prompt, resolution, rendering_speed except FLASH, enable_copyright_detection — the other parameters are refused)", + "enum": [ + "3.0", + "4.0" + ], + "type": "string" +} - added
Input schema / properties / resolutionAdded value: +{ + "anyOf": [ + { + "enum": [ + "512x1536", + "576x1408", + "576x1472", + "576x1536", + "640x1344", + "640x1408", + "640x1472", + "640x1536", + "704x1152", + "704x1216", + "704x1280", + "704x1344", + "704x1408", + "704x1472", + "736x1312", + "768x1088", + "768x1216", + "768x1280", + "768x1344", + "800x1280", + "832x960", + "832x1024", + "832x1088", + "832x1152", + "832x1216", + "832x1248", + "864x1152", + "896x960", + "896x1024", + "896x1088", + "896x1120", + "896x1152", + "960x832", + "960x896", + "960x1024", + "960x1088", + "1024x832", + "1024x896", + "1024x960", + "1024x1024", + "1088x768", + "1088x832", + "1088x896", + "1088x960", + "1120x896", + "1152x704", + "1152x832", + "1152x864", + "1152x896", + "1216x704", + "1216x768", + "1216x832", + "1248x832", + "1280x704", + "1280x768", + "1280x800", + "1312x736", + "1344x640", + "1344x704", + "1344x768", + "1408x576", + "1408x640", + "1408x704", + "1472x576", + "1472x640", + "1472x704", + "1536x512", + "1536x576", + "1536x640" + ], + "type": "string" + }, + { + "pattern": "^\\d{3,4}x\\d{3,4}$", + "type": "string" + } + ], + "description": "Exact output resolution: one of Ideogram 3.0's 69 sizes, or any WIDTHxHEIGHT for model 4.0; not with aspect_ratio" +} - added
Input schema / properties / style_codesAdded value: +{ + "description": "8-character hexadecimal style codes from Ideogram", + "items": { + "pattern": "^[0-9A-Fa-f]{8}$", + "type": "string" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / style_presetAdded value: +{ + "description": "A named style preset as Ideogram lists them", + "maxLength": 100, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / style_reference_imagesAdded value: +{ + "description": "Local image files whose style the result follows (up to 3, 25 MB each)", + "items": { + "minLength": 1, + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array" +} - changed
Input schema / properties / style_type / descriptionPrevious value: -"Visual style (default: AUTO)"New value: +"Visual style (the API default is GENERAL when omitted)"
- Changed
ideogram_remix9 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / character_reference_imageAdded value: +{ + "description": "Local image file of a character to keep consistent (one image; Ideogram bills character references at its own rate)", + "minLength": 1, + "type": "string" +} - added
Input schema / properties / character_reference_maskAdded value: +{ + "description": "Grayscale mask of the character reference (same dimensions); needs character_reference_image", + "minLength": 1, + "type": "string" +} - added
Input schema / properties / color_paletteAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "name": { + "description": "A preset palette", + "enum": [ + "EMBER", + "FRESH", + "JUNGLE", + "MAGIC", + "MELON", + "MOSAIC", + "PASTEL", + "ULTRAMARINE" + ], + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "members": { + "description": "Explicit colours, most dominant first", + "items": { + "additionalProperties": false, + "properties": { + "color_hex": { + "description": "The colour, #RRGGBB", + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" + }, + "color_weight": { + "description": "Its share of the palette (0.05-1)", + "maximum": 1, + "minimum": 0.05, + "type": "number" + } + }, + "required": [ + "color_hex" + ], + "type": "object" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "members" + ], + "type": "object" + } + ], + "description": "A preset palette by name, or explicit colours with weights (not both)" +} - added
Input schema / properties / resolutionAdded value: +{ + "description": "Exact output resolution (one of Ideogram's 69 sizes); not with aspect_ratio", + "enum": [ + "512x1536", + "576x1408", + "576x1472", + "576x1536", + "640x1344", + "640x1408", + "640x1472", + "640x1536", + "704x1152", + "704x1216", + "704x1280", + "704x1344", + "704x1408", + "704x1472", + "736x1312", + "768x1088", + "768x1216", + "768x1280", + "768x1344", + "800x1280", + "832x960", + "832x1024", + "832x1088", + "832x1152", + "832x1216", + "832x1248", + "864x1152", + "896x960", + "896x1024", + "896x1088", + "896x1120", + "896x1152", + "960x832", + "960x896", + "960x1024", + "960x1088", + "1024x832", + "1024x896", + "1024x960", + "1024x1024", + "1088x768", + "1088x832", + "1088x896", + "1088x960", + "1120x896", + "1152x704", + "1152x832", + "1152x864", + "1152x896", + "1216x704", + "1216x768", + "1216x832", + "1248x832", + "1280x704", + "1280x768", + "1280x800", + "1312x736", + "1344x640", + "1344x704", + "1344x768", + "1408x576", + "1408x640", + "1408x704", + "1472x576", + "1472x640", + "1472x704", + "1536x512", + "1536x576", + "1536x640" + ], + "type": "string" +} - added
Input schema / properties / style_codesAdded value: +{ + "description": "8-character hexadecimal style codes from Ideogram", + "items": { + "pattern": "^[0-9A-Fa-f]{8}$", + "type": "string" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / style_presetAdded value: +{ + "description": "A named style preset as Ideogram lists them", + "maxLength": 100, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / style_reference_imagesAdded value: +{ + "description": "Local image files whose style the result follows (up to 3, 25 MB each)", + "items": { + "minLength": 1, + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array" +} - changed
Input schema / properties / style_type / descriptionPrevious value: -"Visual style (default: AUTO)"New value: +"Visual style (the API default is GENERAL when omitted)"
7 tool updates
v1.0.3- First observed
ideogram_describe - First observed
ideogram_edit - First observed
ideogram_generate - First observed
ideogram_reframe - First observed
ideogram_remix - First observed
ideogram_replace_background - First observed
ideogram_upscale
TDQS
Scored across 38 tools
Most tools target clearly distinct operations (inpaint vs. remix vs. reframe vs. replace_background), and descriptions carefully explain differences. Some overlap exists among editing tools (precise_edit, inpaint, edit alias) and mask semantics differ (black vs. white), but descriptions mostly resolve it.
Names follow a consistent snake_case verb_noun or verb_object pattern (ideogram_generate, ideogram_remove_background, ideogram_video_text). A few are noun-only (ideogram_operations, ideogram_invoices, ideogram_models), which is a minor deviation but still readable.
38 tools is heavy for a single server, especially with a meta-tool ideogram_api that could cover advanced cases. The count reflects an attempt to curate every Ideogram endpoint, which makes the surface harder to navigate.
The surface covers generation, editing, video, background, upscaling, training, datasets, billing, operations discovery, and an escape hatch via ideogram_api. Lifecycle operations (create, quote, collect, list, train) are well represented with no obvious dead ends.
Maintenance
Related MCP Connectors
Generate AI images and videos from any compatible MCP client.
Generate images, video, audio and short films with 140+ AI models from any MCP client.
Generate AI images, video, music, and sound effects, and upscale them, from any MCP client.
Generate AI video, images and audio, and browse your history, from any MCP client.
Related MCP Servers
- AlicenseDqualityDmaintenanceEnables image generation, editing, and description using Ideogram AI's models through natural language.436 npm4MIT
- AlicenseAqualityBmaintenanceMCP server for Ideogram V3 model line enabling image editing, reframing, remixing, and text-to-image generation with task polling and pricing checks through RunAPI.6154 npmApache 2.0
- AlicenseAqualityAmaintenanceEnables video and image generation from any MCP client, with support for models like Veo 3.1, Grok Imagine, and Nano Banana, including text-to-video, image-to-video, image generation and editing.465 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables any MCP client to create and edit images from natural-language requests, automatically enriching short prompts with composition, lighting, and camera details while supporting Gemini, OpenAI, and BytePlus Seedream with fast, balanced, or quality presets.1,984 npmMIT