Skip to main content
Glama

@qmediat.io/ideogram-mcp

Ideogram V3 API용 MCP 서버 — Claude Code, Claude Desktop 또는 모든 MCP 클라이언트에서 이미지를 생성, 편집, 리믹스, 업스케일, 설명할 수 있습니다.

npm version license TypeScript

이 서버를 사용하는 이유

  • 7가지 도구 — Ideogram V3 전체 기능 지원 (생성, 편집, 리믹스, 리프레임, 배경 교체, 업스케일, 설명)

  • 보안 우선 — SSRF 보호, 심볼릭 링크 거부, Content-Type 검증, 경로 탐색 방지, Zod 응답 검증 (자세히)

  • 런타임 의존성 2개 — @modelcontextprotocol/sdk + zod. axios, form-data, HTTP 라이브러리 없음

  • 네이티브 Ideogram API — fal.ai나 Replicate를 통한 프록시가 아닌 직접 V3 엔드포인트 사용

  • 프로덕션 강화 — 지수 백오프 재시도, 안전 필터 처리, 부분 실패 복원력

Related MCP server: Ideogram V3 MCP Server

빠른 시작

npm install -g @qmediat.io/ideogram-mcp

또는 직접 사용:

npx @qmediat.io/ideogram-mcp

IDEOGRAM_API_KEY가 필요합니다 — ideogram.ai/manage-api에서 발급받으세요.

구성

Claude Code

~/.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

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"
      }
    }
  }
}

환경 변수

변수

필수

기본값

설명

IDEOGRAM_API_KEY

예

—

Ideogram API 키 (여기서 발급)

IDEOGRAM_OUTPUT_DIR

아니요

/tmp/ideogram-output

이미지를 저장할 폴더. 절대 경로 사용 (예: /home/user/images/ideogram)

사용 가능한 도구

도구

설명

주요 매개변수

ideogram_generate

텍스트 프롬프트에서 이미지 생성

prompt, aspect_ratio, rendering_speed, style_type, num_images

ideogram_describe

이미지에 대한 텍스트 설명 생성

image (파일 경로)

ideogram_edit

마스크 기반 인페인팅으로 이미지 영역 편집

image, mask, prompt

ideogram_remix

새 프롬프트로 이미지 변환

image, prompt, image_weight (0-100)

ideogram_reframe

새 해상도로 이미지 확장 (아웃페인팅)

image, resolution (69가지 유효 크기)

ideogram_replace_background

전경을 유지하면서 배경 교체

image, prompt

ideogram_upscale

가이드 향상으로 업스케일

image, resemblance (0-100), detail (0-100)

공통 매개변수

매개변수

사용 가능한 도구

값

rendering_speed

generate, edit, remix, reframe, replace_background

FLASH, TURBO, DEFAULT, QUALITY

magic_prompt

generate, edit, remix, replace_background, upscale

AUTO, ON, OFF

style_type

generate, edit, remix

AUTO, GENERAL, REALISTIC, DESIGN, FICTION

aspect_ratio

generate, remix

1x1, 16x9, 9x16, 4x3, 3x4 및 10개 더

num_images

모든 도구

1-8

seed

모든 도구

0-2,147,483,647

보안

이 서버는 제로 트러스트, 최소 의존성 접근 방식으로 설계되었습니다:

  • SSRF 보호 — HTTPS 전용 다운로드, 호스트 이름 허용 목록, 리디렉션 차단

  • 심볼릭 링크 거부 — lstat()가 읽기 전에 사용자 생성 심볼릭 링크를 거부

  • Content-Type 검증 — 다운로드는 image/*여야 하며, HTML/JSON 오류 페이지 거부

  • Zod 응답 검증 — API 응답을 스키마로 파싱, 맹목적 타입 캐스트 없음

  • 경로 탐색 방지 — 확장자 허용 목록 + path.relative() 포함 검사

자세한 내용은 SECURITY.md를 참조하세요.

개발

git clone https://github.com/qmediat/ideogram-mcp.git
cd ideogram-mcp
npm install
npm run build

로컬에서 실행:

IDEOGRAM_API_KEY=your-key node dist/index.js

기여

아키텍처 지침과 PR 요구 사항은 CONTRIBUTING.md를 참조하세요.

라이선스

MIT — Quantum Media Technologies

Available Tools

38 tools
ideogram_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.

NameRequiredDescriptionDefault
seedNoRandom seed for a repeatable result
imageNoThe source photo or ad to work on: a local image file or a public https URL (image_asset_identifier for an Ideogram asset)
promptNoWhat to create or change, in natural language
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
qualityNolow, medium or high: higher may improve detail and takes longer
languageNoThe target language of the copy (one request per language; Arabic is rendered right-to-left)
exact_copyNoPre-approved wordings, one `original => replacement` per line; each names the text element showing original and sets it to replacement
num_imagesNoHow many outputs to make (each is billed)
inline_imagesNotrue: 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_identifierNoAn Ideogram asset (an upload or an earlier result) instead of a local image

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
imageNoThe source photo or ad to work on: a local image file or a public https URL (image_asset_identifier for an Ideogram asset)
promptNoWhat to create or change, in natural language
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
qualityNolow, medium or high: higher may improve detail and takes longer
platformNoThe ad platform whose published safe zone the ad stays inside (google, meta, meta_reels, meta_stories, snapchat, tiktok)
num_imagesNoHow many outputs to make (each is billed)
resolutionNoExact output size WIDTHxHEIGHT from the model's list; not with aspect_ratio
inline_imagesNotrue: 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_identifierNoAn Ideogram asset (an upload or an earlier result) instead of a local image

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

NameRequiredDescriptionDefault
imageNoThe source photo or ad to work on: a local image file or a public https URL (image_asset_identifier for an Ideogram asset)
promptNoWhat to create or change, in natural language
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
qualityNolow, medium or high: higher may improve detail and takes longer
num_imagesNoHow many outputs to make (each is billed)
inline_imagesNotrue: 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_typeNoThe axis to vary: people, setting, group_size or scene
image_asset_identifierNoAn Ideogram asset (an upload or an earlier result) instead of a local image

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
filesNoFiles for the file fields: each a local path or a public https URL
paramsNo{path?, query?, headers?, body?}: each an object of that location's parameters
wait_sNoSeconds to wait for the result (0-50, default 45)
dry_runNoPrice the call instead of running it (only operations that offer it)
operationYesThe operation id, e.g. post_precise_edit_image_v2_ideogram45
inline_imagesNotrue: 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_undocumentedNoAllow an operation Ideogram's documentation does not list

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
imageNoThe source photo or ad to work on: a local image file or a public https URL (image_asset_identifier for an Ideogram asset)
masksNoLocal mask files (or public https URLs) marking the regions to change, paired by position (at most 4, the product photo's pixel size)
colorsNoOne target colour per mask as a six-digit hex code (#B3202C), paired by position with masks (at most 4)
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
qualityNolow, medium or high: higher may improve detail and takes longer
aspect_ratioNoOutput 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_imagesNotrue: 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_identifierNoAn Ideogram asset (an upload or an earlier result) instead of a local image
mask_asset_identifiersNoIdeogram assets as the masks, paired by position (at most 4)

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
searchNoCase-insensitive substring of the name, for the list
dataset_idNoOne dataset: its files (name, size, caption) and the models trained from it

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
nameNoCreate a new dataset with this name, then upload into it
filesYesImages (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_idNoThe dataset to upload into; or give name to create one first

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
imageNoLocal image file to work on, or a public https URL of one
modelNoThe model (default ideogram-3); each takes the fields of its variant below
wait_sNoSeconds 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_imagesNotrue: 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_versionNo1.x name of the model, deprecated: V_3 = model ideogram-3
image_asset_identifierNoAn Ideogram asset (an upload or an earlier result) instead of a local image

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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).

NameRequiredDescriptionDefault
maskNoLocal mask image file or a public https URL, the same size as the source
seedNoRandom seed for a reproducible result
sizeNoOutput size: "auto", "source" (needs source images) or WIDTHxHEIGHT
modelNoThe model (default ideogram-3); each takes the fields of its variant below
imagesNoLocal source image files or public https URLs (the first is the one edited)
promptNoWhat to create or change, in natural language
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
qualityNovery_low, low, medium or high: higher costs more
num_imagesNoHow many images to make (each is billed)
resolutionNoExact output size WIDTHxHEIGHT from the model's list; not with aspect_ratio
style_typeNoVisual style family
style_codesNo8-character hexadecimal style codes
aspect_ratioNoOutput aspect ratio such as 16x9; not with resolution
magic_promptNoauto, on or off: let Ideogram rewrite the prompt
style_presetNoA named style preset; not with style codes or style references
color_paletteNoA preset palette by name, or explicit hex colours with weights
inline_imagesNotrue: 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_factorNox2, x4 or x8
negative_promptNoWhat to keep out of the image
rendering_speedNoturbo, default or quality: faster is cheaper
resolution_tierNoThe output resolution tier
custom_model_uriNoA custom model you trained or were given access to
style_reference_imagesNoLocal image files (or public https URLs) whose style the result follows
image_asset_identifiersNoIdeogram assets instead of local source images
character_reference_maskNoLocal grayscale mask (or a public https URL) of where the character is in its reference image
character_reference_imagesNoLocal image files (or public https URLs) of the character to keep consistent
enable_copyright_detectionNoRun Ideogram's copyright detection on the result (adds latency)
style_reference_collection_idNoA saved style collection to apply
style_reference_asset_identifiersNoIdeogram assets (uploads or earlier results) to use as style references
character_reference_asset_identifiersNoIdeogram assets to use as the character reference
style_reference_collection_version_idNoA version of the saved style collection

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
wait_sNoSeconds to wait if it is still running (0-50, default 45)
generation_idYesThe id a tool returned
inline_imagesNotrue: 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

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
seedNoRandom seed for a repeatable result
viewNoThe camera view of the output garment: front, three_quarter or back
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
qualityNolow, medium or high: higher may improve detail and takes longer
metadataNoA JSON object serialized as a string with factual product context (title, brand, category, colour, material, item code)
top_imageNoThe top-view garment photo (local file or public https URL); top_asset_identifier for an Ideogram asset
back_imageNoThe back-view garment photo (local file or public https URL); back_asset_identifier for an Ideogram asset
left_imageNoThe left-view garment photo (local file or public https URL); left_asset_identifier for an Ideogram asset
front_imageNoThe front-view garment photo (local file or public https URL); front_asset_identifier for an Ideogram asset
instructionNoPlain-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_imageNoThe right-view garment photo (local file or public https URL); right_asset_identifier for an Ideogram asset
aspect_ratioNoOutput 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_imageNoThe bottom-view garment photo (local file or public https URL); bottom_asset_identifier for an Ideogram asset
inline_imagesNotrue: 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_imagesNoMore photos of the same garment, local files or public https URLs (at most 15; several angles let obscured construction be reconstructed)
garment_asset_identifiersNoIdeogram assets as more photos of the same garment, in order (at most 15)

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

NameRequiredDescriptionDefault
maskNoLocal mask image file or a public https URL, the same size as the source
seedNoRandom seed for a reproducible result
imageNoLocal image file to work on, or a public https URL of one
modelNoThe model (default ideogram-3); each takes the fields of its variant below
promptNoWhat to create or change, in natural language
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
num_imagesNoHow many images to make (each is billed)
style_typeNoVisual style family
style_codesNo8-character hexadecimal style codes
magic_promptNoauto, on or off: let Ideogram rewrite the prompt
style_presetNoA named style preset; not with style codes or style references
inline_imagesNotrue: 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_speedNoturbo, default or quality: faster is cheaper
custom_model_uriNoA custom model you trained or were given access to
mask_asset_identifierNoAn Ideogram asset to use as the mask
image_asset_identifierNoAn Ideogram asset (an upload or an earlier result) instead of a local image
style_reference_imagesNoLocal image files (or public https URLs) whose style the result follows
character_reference_maskNoLocal grayscale mask (or a public https URL) of where the character is in its reference image
character_reference_imagesNoLocal image files (or public https URLs) of the character to keep consistent
enable_copyright_detectionNoRun Ideogram's copyright detection on the result (adds latency)
style_reference_collection_idNoA saved style collection to apply
style_reference_asset_identifiersNoIdeogram assets (uploads or earlier results) to use as style references
character_reference_asset_identifiersNoIdeogram assets to use as the character reference
style_reference_collection_version_idNoA version of the saved style collection

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
seedNoRandom seed for a reproducible result
imageNoLocal image file to work on, or a public https URL of one
modelNoThe model (default ideogram-3); each takes the fields of its variant below
promptNoWhat to create or change, in natural language
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
inline_imagesNotrue: 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_filesNoLocal font files or public https URLs (.ttf, .otf, .woff, .woff2, at most 5) to match the detected text against
image_asset_identifierNoAn Ideogram asset (an upload or an earlier result) instead of a local image

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
design_imageNoThe flat design to analyze for logos, a local file or a public https URL
inline_imagesNotrue: 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_imagesNoLocal 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

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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).

NameRequiredDescriptionDefault
text_promptNoThe natural-language prompt to rewrite into an Ideogram 4.0 JSON prompt
aspect_ratioNoAUTO (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_imagesNotrue: 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

A3.9/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
imageNoThe source photo or ad to work on: a local image file or a public https URL (image_asset_identifier for an Ideogram asset)
masksNoLocal mask files (or public https URLs) marking the regions to change, paired by position (at most 4, the product photo's pixel size)
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
qualityNolow, medium or high: higher may improve detail and takes longer
materialsNoLocal 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_ratioNoOutput 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_imagesNotrue: 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_identifierNoAn Ideogram asset (an upload or an earlier result) instead of a local image
mask_asset_identifiersNoIdeogram assets as the masks, paired by position (at most 4)
material_asset_identifiersNoIdeogram assets as the material references, paired by position (at most 4)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
seedNoRandom seed for a repeatable result
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
qualityNolow, medium or high: higher may improve detail and takes longer
num_imagesNoHow many outputs to make (each is billed)
instructionNoPlain-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_ratioNoOutput 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_imageNoThe fashion image to edit, a local file or a public https URL; source_asset_identifier for an Ideogram asset
inline_imagesNotrue: 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_identifierNoAn Ideogram asset whose pose the model takes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
scopeNoowned (yours) or shared (the organization's registry); default both
statusNoKeep only these statuses (owned models)
model_idNoOne model, with its training runs when it is yours

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
familyNoList one family's operations
operationNoShow one operation by id

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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).

NameRequiredDescriptionDefault
maskNoLocal mask image file or a public https URL, the same size as the source
seedNoRandom seed for a reproducible result
imageNoLocal image file to work on, or a public https URL of one
modelNoThe model (default ideogram-4-5); each takes the fields of its variant below
promptNoWhat to create or change, in natural language
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
qualityNovery_low, low, medium or high: higher costs more
num_imagesNoHow many images to make (each is billed)
inline_imagesNotrue: 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_windowNoWhere to edit: "none" (whole image, default), "auto" (around the mask) or "y_min,x_min,y_max,x_max"
reference_imagesNoLocal image files (or public https URLs) that guide the edit (never edited themselves); at most 4, at most 3 with a mask
image_asset_identifierNoAn Ideogram asset (an upload or an earlier result) instead of a local image
enable_copyright_detectionNoRun Ideogram's copyright detection on the result (adds latency)
reference_image_asset_identifiersNoIdeogram assets that guide the edit; needs the edited image by reference too, not with a mask

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
contentNoThe image whose provenance is checked, a local file or a public https URL
inline_imagesNotrue: 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

A3.7/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
toolYesThe curated tool whose call to price
argumentsNoThe arguments you would pass that tool

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

NameRequiredDescriptionDefault
seedNoRandom seed for a reproducible result
imageNoLocal image file to work on, or a public https URL of one
modelNoThe model (default ideogram-3); each takes the fields of its variant below
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
num_imagesNoHow many images to make (each is billed)
resolutionNoExact output size WIDTHxHEIGHT from the model's list; not with aspect_ratio
style_codesNo8-character hexadecimal style codes
aspect_ratioNoOutput aspect ratio such as 16x9; not with resolution
style_presetNoA named style preset; not with style codes or style references
color_paletteNoA preset palette by name, or explicit hex colours with weights
inline_imagesNotrue: 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_speedNoturbo, default or quality: faster is cheaper
image_asset_identifierNoAn Ideogram asset (an upload or an earlier result) instead of a local image
style_reference_imagesNoLocal image files (or public https URLs) whose style the result follows
style_reference_asset_identifiersNoIdeogram assets (uploads or earlier results) to use as style references

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

NameRequiredDescriptionDefault
seedNoRandom seed for a reproducible result
imageNoLocal image file to work on, or a public https URL of one
modelNoThe model (default ideogram-3); each takes the fields of its variant below
promptNoWhat to create or change, in natural language
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
num_imagesNoHow many images to make (each is billed)
resolutionNoExact output size WIDTHxHEIGHT from the model's list; not with aspect_ratio
style_typeNoVisual style family
style_codesNo8-character hexadecimal style codes
aspect_ratioNoOutput aspect ratio such as 16x9; not with resolution
image_weightNoHow closely the result follows the source image, 1-100
magic_promptNoauto, on or off: let Ideogram rewrite the prompt
style_presetNoA named style preset; not with style codes or style references
color_paletteNoA preset palette by name, or explicit hex colours with weights
inline_imagesNotrue: 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_promptNoWhat to keep out of the image
rendering_speedNoturbo, default or quality: faster is cheaper
resolution_tierNoThe output resolution tier
custom_model_uriNoA custom model you trained or were given access to
image_asset_identifierNoAn Ideogram asset (an upload or an earlier result) instead of a local image
style_reference_imagesNoLocal image files (or public https URLs) whose style the result follows
character_reference_maskNoLocal grayscale mask (or a public https URL) of where the character is in its reference image
character_reference_imagesNoLocal image files (or public https URLs) of the character to keep consistent
enable_copyright_detectionNoRun Ideogram's copyright detection on the result (adds latency)
style_reference_collection_idNoA saved style collection to apply
style_reference_asset_identifiersNoIdeogram assets (uploads or earlier results) to use as style references
character_reference_asset_identifiersNoIdeogram assets to use as the character reference
style_reference_collection_version_idNoA version of the saved style collection

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
imageNoLocal image file to work on, or a public https URL of one
modelNoThe model (default ideogram-1); each takes the fields of its variant below
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
inline_imagesNotrue: 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_identifierNoAn Ideogram asset (an upload or an earlier result) instead of a local image

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
maskNoLocal mask image file or a public https URL, the same size as the source
seedNoRandom seed for a reproducible result
imageNoLocal image file to work on, or a public https URL of one
modelNoThe model (default ideogram-1); each takes the fields of its variant below
wait_sNoSeconds 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_assetsNoKeep the result on Ideogram as an asset (accepted by the API, not yet enforced by it)
inline_imagesNotrue: 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_identifierNoAn Ideogram asset to use as the mask
image_asset_identifierNoAn Ideogram asset (an upload or an earlier result) instead of a local image

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
imageNoLocal image file to work on, or a public https URL of one
modelNoThe model (default ideogram-3); each takes the fields of its variant below
promptNoWhat to create or change, in natural language
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
qualityNovery_low, low, medium or high: higher costs more
num_imagesNoHow many images to make (each is billed)
inline_imagesNotrue: 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_speedNoturbo, default or quality: faster is cheaper
image_asset_identifierNoAn Ideogram asset (an upload or an earlier result) instead of a local image

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
seedNoRandom seed for a repeatable result
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
qualityNolow, medium or high: higher may improve detail and takes longer
num_imagesNoHow many outputs to make (each is billed)
instructionNoPlain-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_ratioNoOutput 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_imageNoThe fashion sketch to render, a local file or a public https URL; sketch_asset_identifier for an Ideogram asset
inline_imagesNotrue: 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

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
maskNoThe hand-drawn mask, a local file or a public https URL, the image's size: white (≥ 128) marks the object to snap to
imageNoThe image containing the object, a local file or a public https URL
inline_imagesNotrue: 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

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

NameRequiredDescriptionDefault
emaNoEMA decay in (0, 1)
modelNoideogram-4 (default) or ideogram-3
lora_rankNo64 or 128
batch_sizeNoideogram-4: 1, 2, 4, 8, 16 or 32
dataset_idYesThe dataset (15-100 images)
model_nameYes5-30 characters: letters, digits, spaces, hyphens
base_variantNoideogram-4: the backbone
learning_rateNoabove 0
wandb_projectNoideogram-4: a W&B project
training_stepsNo100-10000, a multiple of 100

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
seedNoRandom seed for a reproducible result
imageNoLocal image file to work on, or a public https URL of one
modelNoThe model (default auto); each takes the fields of its variant below
promptNoWhat to create or change, in natural language
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
inline_imagesNotrue: 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_factorNox2, x4 or x8
resolution_tierNoThe output resolution tier
image_asset_identifierNoAn Ideogram asset (an upload or an earlier result) instead of a local image

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
sourcesNoapi (API requests), app (web-app usage) or both; default both
end_timeNoEnd of the range, exclusive, RFC 3339; default now
start_timeNoStart of the range, RFC 3339 (e.g. 2026-10-01T00:00:00Z); default 7 days (1d) or 24 hours (1h) before the end
bucket_widthNo1d (a range of at most 92 days) or 1h (at most 168 hours); default 1d

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
imageNoLocal image file (or public https URL) the video starts from; not with image_asset_identifier
modelNoThe model (default seedance-2-5-image-to-video); each takes the fields of its variant below
promptNoWhat the video shows, in natural language
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
durationNoLength 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_scaleNoHow closely the video follows the prompt, 0-1 (default 0.5); lower leaves the model more freedom
end_imageNoLocal image file (or public https URL) the video ends on; not with end_image_asset_identifier
shot_typeNoHow the prompt is staged: customize follows it as written, intelligent lets the model split it into its own shots
resolutionNoThe 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_ratioNoThe 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_audioNoAlso generate an audio track (about double the price per Ideogram — the dry-run quote does not include it; stricter moderation)
negative_promptNoWhat to keep out of the video
image_asset_identifierNoAn Ideogram asset the video starts from; not with image
end_image_asset_identifierNoAn Ideogram asset the video ends on; not with end_image

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
modelNoThe model (default seedance-2-5-reference-to-video); each takes the fields of its variant below
promptNoWhat the video shows, in natural language
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
durationNoLength 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
resolutionNoThe 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_ratioNoThe 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_audioNoAlso generate an audio track (about double the price per Ideogram — the dry-run quote does not include it; stricter moderation)
reference_audiosNoLocal 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_imagesNoLocal 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_modeNoHow much the model may rewrite the prompt: disabled, fast, balanced (default) or quality
reference_image_asset_identifiersNoIdeogram assets as reference images, in prompt order (at most 9); not with reference_images
reference_video_asset_identifiersNoVideos 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

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
modelNoThe model (default seedance-2-5-text-to-video); each takes the fields of its variant below
promptNoWhat the video shows, in natural language
wait_sNoSeconds 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).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
durationNoLength 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_scaleNoHow closely the video follows the prompt, 0-1 (default 0.5); lower leaves the model more freedom
shot_typeNoHow the prompt is staged: customize follows it as written, intelligent lets the model split it into its own shots
resolutionNoThe 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_ratioNoThe 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_audioNoAlso generate an audio track (about double the price per Ideogram — the dry-run quote does not include it; stricter moderation)
negative_promptNoWhat to keep out of the video

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

  1. 38 tool updatesv2.5.0
    • Addedideogram_ad_localizer
    • Addedideogram_ad_resizer
    • Addedideogram_ad_variations
    • Addedideogram_api
    • Addedideogram_api_keys
    • Addedideogram_colorways
    • Addedideogram_dataset_upload
    • Addedideogram_datasets
    • Changedideogram_describe12 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • addedInput schema / definitions
        Added 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"
        +  }
        +}
      • addedInput schema / oneOf
        Added 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"
        +  }
        +]
      • changedInput schema / properties / describe_model_version / description
        Previous value: -"Model version to use (default: V_3)"New value: +"1.x name of the model, deprecated: V_3 = model ideogram-3"
      • changedInput schema / properties / image / description
        Previous value: -"Local file path of the image to describe"New value: +"Local image file to work on, or a public https URL of one"
      • removedInput schema / properties / image / minLength
        Removed value: -1
      • removedInput schema / properties / image / type
        Removed value: -"string"
      • addedInput schema / properties / image_asset_identifier
        Added value: +{
        +  "description": "An Ideogram asset (an upload or an earlier result) instead of a local image"
        +}
      • addedInput schema / properties / inline_images
        Added 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"
        +}
      • addedInput schema / properties / model
        Added value: +{
        +  "description": "The model (default ideogram-3); each takes the fields of its variant below",
        +  "enum": [
        +    "ideogram-3",
        +    "ideogram-4"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / wait_s
        Added 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"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "image"
        -]
    • Changedideogram_edit16 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +{}
      • removedInput schema / properties / character_reference_image
        Removed 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"
        -}
      • removedInput schema / properties / character_reference_mask
        Removed value: -{
        -  "description": "Grayscale mask of the character reference (same dimensions); needs character_reference_image",
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / color_palette
        Removed 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)"
        -}
      • removedInput schema / properties / image
        Removed value: -{
        -  "description": "Local file path of the source image to edit",
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / magic_prompt
        Removed value: -{
        -  "description": "Auto-enhance prompts (default: AUTO)",
        -  "enum": [
        -    "AUTO",
        -    "ON",
        -    "OFF"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / mask
        Removed value: -{
        -  "description": "Local file path of the mask image (black = regions to edit, white = keep)",
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / num_images
        Removed value: -{
        -  "description": "Number of variations (1-8, default: 1)",
        -  "maximum": 8,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / prompt
        Removed value: -{
        -  "description": "Description of desired changes",
        -  "maxLength": 10000,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / rendering_speed
        Removed value: -{
        -  "description": "Speed/quality tradeoff (default: DEFAULT)",
        -  "enum": [
        -    "FLASH",
        -    "TURBO",
        -    "DEFAULT",
        -    "QUALITY"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / seed
        Removed value: -{
        -  "description": "Reproducibility seed",
        -  "maximum": 2147483647,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedInput schema / properties / style_codes
        Removed value: -{
        -  "description": "8-character hexadecimal style codes from Ideogram",
        -  "items": {
        -    "pattern": "^[0-9A-Fa-f]{8}$",
        -    "type": "string"
        -  },
        -  "maxItems": 8,
        -  "minItems": 1,
        -  "type": "array"
        -}
      • removedInput schema / properties / style_preset
        Removed value: -{
        -  "description": "A named style preset as Ideogram lists them",
        -  "maxLength": 100,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / style_reference_images
        Removed 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"
        -}
      • removedInput schema / properties / style_type
        Removed value: -{
        -  "description": "Visual style (the API default is GENERAL when omitted)",
        -  "enum": [
        -    "AUTO",
        -    "GENERAL",
        -    "REALISTIC",
        -    "DESIGN",
        -    "FICTION"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / required
        Removed value: -[
        -  "image",
        -  "mask",
        -  "prompt"
        -]
    • Changedideogram_generate74 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +{}
      • addedInput schema / definitions
        Added 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"
        +  }
        +}
      • addedInput schema / oneOf
        Added 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"
        +  }
        +]
      • changedInput schema / properties / aspect_ratio / description
        Previous value: -"Output aspect ratio (default: 1x1)"New value: +"Output aspect ratio such as 16x9; not with resolution"
      • removedInput schema / properties / aspect_ratio / enum
        Removed value: -[
        -  "1x1",
        -  "16x9",
        -  "9x16",
        -  "4x3",
        -  "3x4",
        -  "3x2",
        -  "2x3",
        -  "4x5",
        -  "5x4",
        -  "1x2",
        -  "2x1",
        -  "1x3",
        -  "3x1",
        -  "10x16",
        -  "16x10"
        -]
      • removedInput schema / properties / aspect_ratio / type
        Removed value: -"string"
      • addedInput schema / properties / character_reference_asset_identifiers
        Added value: +{
        +  "description": "Ideogram assets to use as the character reference"
        +}
      • removedInput schema / properties / character_reference_image
        Removed 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"
        -}
      • addedInput schema / properties / character_reference_images
        Added value: +{
        +  "description": "Local image files (or public https URLs) of the character to keep consistent"
        +}
      • changedInput schema / properties / character_reference_mask / description
        Previous 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"
      • removedInput schema / properties / character_reference_mask / minLength
        Removed value: -1
      • removedInput schema / properties / character_reference_mask / type
        Removed value: -"string"
      • removedInput schema / properties / color_palette / anyOf
        Removed 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"
        -  }
        -]
      • changedInput schema / properties / color_palette / description
        Previous 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"
      • changedInput schema / properties / custom_model_uri / description
        Previous value: -"A custom (trained) model: model/<name>/version/<version>"New value: +"A custom model you trained or were given access to"
      • removedInput schema / properties / custom_model_uri / pattern
        Removed value: -"^model\\/[^/\\s]+\\/version\\/[^/\\s]+$"
      • removedInput schema / properties / custom_model_uri / type
        Removed value: -"string"
      • changedInput schema / properties / enable_copyright_detection / description
        Previous 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)"
      • removedInput schema / properties / enable_copyright_detection / type
        Removed value: -"boolean"
      • addedInput schema / properties / image_asset_identifiers
        Added value: +{
        +  "description": "Ideogram assets instead of local source images"
        +}
      • addedInput schema / properties / images
        Added value: +{
        +  "description": "Local source image files or public https URLs (the first is the one edited)"
        +}
      • addedInput schema / properties / inline_images
        Added 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"
        +}
      • changedInput schema / properties / magic_prompt / description
        Previous value: -"Auto-enhance prompts (default: AUTO)"New value: +"auto, on or off: let Ideogram rewrite the prompt"
      • removedInput schema / properties / magic_prompt / enum
        Removed value: -[
        -  "AUTO",
        -  "ON",
        -  "OFF"
        -]
      • removedInput schema / properties / magic_prompt / type
        Removed value: -"string"
      • addedInput schema / properties / mask
        Added value: +{
        +  "description": "Local mask image file or a public https URL, the same size as the source"
        +}
      • changedInput schema / properties / model / description
        Previous 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"
      • changedInput schema / properties / model / enum
        Previous 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"
        +]
      • changedInput schema / properties / negative_prompt / description
        Previous value: -"What to exclude from the generated image"New value: +"What to keep out of the image"
      • removedInput schema / properties / negative_prompt / type
        Removed value: -"string"
      • changedInput schema / properties / num_images / description
        Previous value: -"Number of images to generate (1-8, default: 1)"New value: +"How many images to make (each is billed)"
      • removedInput schema / properties / num_images / maximum
        Removed value: -8
      • removedInput schema / properties / num_images / minimum
        Removed value: -1
      • removedInput schema / properties / num_images / type
        Removed value: -"integer"
      • addedInput schema / properties / private
        Added value: +{
        +  "description": "Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)"
        +}
      • changedInput schema / properties / prompt / description
        Previous value: -"Image description (1-10,000 characters)"New value: +"What to create or change, in natural language"
      • removedInput schema / properties / prompt / maxLength
        Removed value: -10000
      • removedInput schema / properties / prompt / minLength
        Removed value: -1
      • removedInput schema / properties / prompt / type
        Removed value: -"string"
      • addedInput schema / properties / quality
        Added value: +{
        +  "description": "very_low, low, medium or high: higher costs more"
        +}
      • changedInput schema / properties / rendering_speed / description
        Previous value: -"Speed/quality tradeoff. FLASH=fastest, QUALITY=best (default: DEFAULT)"New value: +"turbo, default or quality: faster is cheaper"
      • removedInput schema / properties / rendering_speed / enum
        Removed value: -[
        -  "FLASH",
        -  "TURBO",
        -  "DEFAULT",
        -  "QUALITY"
        -]
      • removedInput schema / properties / rendering_speed / type
        Removed value: -"string"
      • removedInput schema / properties / resolution / anyOf
        Removed 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"
        -  }
        -]
      • changedInput schema / properties / resolution / description
        Previous 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"
      • addedInput schema / properties / resolution_tier
        Added value: +{
        +  "description": "The output resolution tier"
        +}
      • changedInput schema / properties / seed / description
        Previous value: -"Reproducibility seed (0-2,147,483,647)"New value: +"Random seed for a reproducible result"
      • removedInput schema / properties / seed / maximum
        Removed value: -2147483647
      • removedInput schema / properties / seed / minimum
        Removed value: -0
      • removedInput schema / properties / seed / type
        Removed value: -"integer"
      • addedInput schema / properties / size
        Added value: +{
        +  "description": "Output size: \"auto\", \"source\" (needs source images) or WIDTHxHEIGHT"
        +}
      • changedInput schema / properties / style_codes / description
        Previous value: -"8-character hexadecimal style codes from Ideogram"New value: +"8-character hexadecimal style codes"
      • removedInput schema / properties / style_codes / items
        Removed value: -{
        -  "pattern": "^[0-9A-Fa-f]{8}$",
        -  "type": "string"
        -}
      • removedInput schema / properties / style_codes / maxItems
        Removed value: -8
      • removedInput schema / properties / style_codes / minItems
        Removed value: -1
      • removedInput schema / properties / style_codes / type
        Removed value: -"array"
      • changedInput schema / properties / style_preset / description
        Previous value: -"A named style preset as Ideogram lists them"New value: +"A named style preset; not with style codes or style references"
      • removedInput schema / properties / style_preset / maxLength
        Removed value: -100
      • removedInput schema / properties / style_preset / minLength
        Removed value: -1
      • removedInput schema / properties / style_preset / type
        Removed value: -"string"
      • addedInput schema / properties / style_reference_asset_identifiers
        Added value: +{
        +  "description": "Ideogram assets (uploads or earlier results) to use as style references"
        +}
      • addedInput schema / properties / style_reference_collection_id
        Added value: +{
        +  "description": "A saved style collection to apply"
        +}
      • addedInput schema / properties / style_reference_collection_version_id
        Added value: +{
        +  "description": "A version of the saved style collection"
        +}
      • changedInput schema / properties / style_reference_images / description
        Previous 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"
      • removedInput schema / properties / style_reference_images / items
        Removed value: -{
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / style_reference_images / maxItems
        Removed value: -3
      • removedInput schema / properties / style_reference_images / minItems
        Removed value: -1
      • removedInput schema / properties / style_reference_images / type
        Removed value: -"array"
      • changedInput schema / properties / style_type / description
        Previous value: -"Visual style (the API default is GENERAL when omitted)"New value: +"Visual style family"
      • removedInput schema / properties / style_type / enum
        Removed value: -[
        -  "AUTO",
        -  "GENERAL",
        -  "REALISTIC",
        -  "DESIGN",
        -  "FICTION"
        -]
      • removedInput schema / properties / style_type / type
        Removed value: -"string"
      • addedInput schema / properties / upscale_factor
        Added value: +{
        +  "description": "x2, x4 or x8"
        +}
      • addedInput schema / properties / wait_s
        Added 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"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "prompt"
        -]
    • Addedideogram_generation
    • Addedideogram_ghost_mannequin
    • Addedideogram_inpaint
    • Addedideogram_invoices
    • Addedideogram_layerize
    • Addedideogram_layerize_logos
    • Addedideogram_magic_prompt
    • Addedideogram_material_swap
    • Addedideogram_model_pose_variants
    • Addedideogram_models
    • Addedideogram_operations
    • Addedideogram_precise_edit
    • Addedideogram_provenance
    • Addedideogram_quote
    • Changedideogram_reframe32 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • addedInput schema / definitions
        Added 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"
        +  }
        +}
      • addedInput schema / oneOf
        Added 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"
        +  }
        +]
      • addedInput schema / properties / aspect_ratio
        Added value: +{
        +  "description": "Output aspect ratio such as 16x9; not with resolution"
        +}
      • addedInput schema / properties / color_palette
        Added value: +{
        +  "description": "A preset palette by name, or explicit hex colours with weights"
        +}
      • changedInput schema / properties / image / description
        Previous 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"
      • removedInput schema / properties / image / minLength
        Removed value: -1
      • removedInput schema / properties / image / type
        Removed value: -"string"
      • addedInput schema / properties / image_asset_identifier
        Added value: +{
        +  "description": "An Ideogram asset (an upload or an earlier result) instead of a local image"
        +}
      • addedInput schema / properties / inline_images
        Added 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"
        +}
      • addedInput schema / properties / model
        Added value: +{
        +  "description": "The model (default ideogram-3); each takes the fields of its variant below",
        +  "enum": [
        +    "ideogram-3",
        +    "nano-banana-2"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / num_images / description
        Previous value: -"Number of variations (1-8, default: 1)"New value: +"How many images to make (each is billed)"
      • removedInput schema / properties / num_images / maximum
        Removed value: -8
      • removedInput schema / properties / num_images / minimum
        Removed value: -1
      • removedInput schema / properties / num_images / type
        Removed value: -"integer"
      • addedInput schema / properties / private
        Added value: +{
        +  "description": "Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)"
        +}
      • changedInput schema / properties / rendering_speed / description
        Previous value: -"Speed/quality tradeoff (default: DEFAULT)"New value: +"turbo, default or quality: faster is cheaper"
      • removedInput schema / properties / rendering_speed / enum
        Removed value: -[
        -  "FLASH",
        -  "TURBO",
        -  "DEFAULT",
        -  "QUALITY"
        -]
      • removedInput schema / properties / rendering_speed / type
        Removed value: -"string"
      • changedInput schema / properties / resolution / description
        Previous 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"
      • removedInput schema / properties / resolution / enum
        Removed 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"
        -]
      • removedInput schema / properties / resolution / type
        Removed value: -"string"
      • changedInput schema / properties / seed / description
        Previous value: -"Reproducibility seed"New value: +"Random seed for a reproducible result"
      • removedInput schema / properties / seed / maximum
        Removed value: -2147483647
      • removedInput schema / properties / seed / minimum
        Removed value: -0
      • removedInput schema / properties / seed / type
        Removed value: -"integer"
      • addedInput schema / properties / style_codes
        Added value: +{
        +  "description": "8-character hexadecimal style codes"
        +}
      • addedInput schema / properties / style_preset
        Added value: +{
        +  "description": "A named style preset; not with style codes or style references"
        +}
      • addedInput schema / properties / style_reference_asset_identifiers
        Added value: +{
        +  "description": "Ideogram assets (uploads or earlier results) to use as style references"
        +}
      • addedInput schema / properties / style_reference_images
        Added value: +{
        +  "description": "Local image files (or public https URLs) whose style the result follows"
        +}
      • addedInput schema / properties / wait_s
        Added 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"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "image",
        -  "resolution"
        -]
    • Changedideogram_remix73 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +{}
      • addedInput schema / definitions
        Added 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"
        +  }
        +}
      • addedInput schema / oneOf
        Added 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"
        +  }
        +]
      • changedInput schema / properties / aspect_ratio / description
        Previous value: -"Output aspect ratio"New value: +"Output aspect ratio such as 16x9; not with resolution"
      • removedInput schema / properties / aspect_ratio / enum
        Removed value: -[
        -  "1x1",
        -  "16x9",
        -  "9x16",
        -  "4x3",
        -  "3x4",
        -  "3x2",
        -  "2x3",
        -  "4x5",
        -  "5x4",
        -  "1x2",
        -  "2x1",
        -  "1x3",
        -  "3x1",
        -  "10x16",
        -  "16x10"
        -]
      • removedInput schema / properties / aspect_ratio / type
        Removed value: -"string"
      • addedInput schema / properties / character_reference_asset_identifiers
        Added value: +{
        +  "description": "Ideogram assets to use as the character reference"
        +}
      • removedInput schema / properties / character_reference_image
        Removed 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"
        -}
      • addedInput schema / properties / character_reference_images
        Added value: +{
        +  "description": "Local image files (or public https URLs) of the character to keep consistent"
        +}
      • changedInput schema / properties / character_reference_mask / description
        Previous 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"
      • removedInput schema / properties / character_reference_mask / minLength
        Removed value: -1
      • removedInput schema / properties / character_reference_mask / type
        Removed value: -"string"
      • removedInput schema / properties / color_palette / anyOf
        Removed 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"
        -  }
        -]
      • changedInput schema / properties / color_palette / description
        Previous 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"
      • addedInput schema / properties / custom_model_uri
        Added value: +{
        +  "description": "A custom model you trained or were given access to"
        +}
      • addedInput schema / properties / enable_copyright_detection
        Added value: +{
        +  "description": "Run Ideogram's copyright detection on the result (adds latency)"
        +}
      • changedInput schema / properties / image / description
        Previous 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"
      • removedInput schema / properties / image / minLength
        Removed value: -1
      • removedInput schema / properties / image / type
        Removed value: -"string"
      • addedInput schema / properties / image_asset_identifier
        Added value: +{
        +  "description": "An Ideogram asset (an upload or an earlier result) instead of a local image"
        +}
      • changedInput schema / properties / image_weight / description
        Previous value: -"Original image influence (0-100, default: 50)"New value: +"How closely the result follows the source image, 1-100"
      • removedInput schema / properties / image_weight / maximum
        Removed value: -100
      • removedInput schema / properties / image_weight / minimum
        Removed value: -0
      • removedInput schema / properties / image_weight / type
        Removed value: -"integer"
      • addedInput schema / properties / inline_images
        Added 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"
        +}
      • changedInput schema / properties / magic_prompt / description
        Previous value: -"Auto-enhance prompts (default: AUTO)"New value: +"auto, on or off: let Ideogram rewrite the prompt"
      • removedInput schema / properties / magic_prompt / enum
        Removed value: -[
        -  "AUTO",
        -  "ON",
        -  "OFF"
        -]
      • removedInput schema / properties / magic_prompt / type
        Removed value: -"string"
      • addedInput schema / properties / model
        Added 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"
        +}
      • changedInput schema / properties / negative_prompt / description
        Previous value: -"What to exclude"New value: +"What to keep out of the image"
      • removedInput schema / properties / negative_prompt / type
        Removed value: -"string"
      • changedInput schema / properties / num_images / description
        Previous value: -"Number of variations (1-8, default: 1)"New value: +"How many images to make (each is billed)"
      • removedInput schema / properties / num_images / maximum
        Removed value: -8
      • removedInput schema / properties / num_images / minimum
        Removed value: -1
      • removedInput schema / properties / num_images / type
        Removed value: -"integer"
      • addedInput schema / properties / private
        Added value: +{
        +  "description": "Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)"
        +}
      • changedInput schema / properties / prompt / description
        Previous value: -"New creative direction"New value: +"What to create or change, in natural language"
      • removedInput schema / properties / prompt / maxLength
        Removed value: -10000
      • removedInput schema / properties / prompt / minLength
        Removed value: -1
      • removedInput schema / properties / prompt / type
        Removed value: -"string"
      • changedInput schema / properties / rendering_speed / description
        Previous value: -"Speed/quality tradeoff (default: DEFAULT)"New value: +"turbo, default or quality: faster is cheaper"
      • removedInput schema / properties / rendering_speed / enum
        Removed value: -[
        -  "FLASH",
        -  "TURBO",
        -  "DEFAULT",
        -  "QUALITY"
        -]
      • removedInput schema / properties / rendering_speed / type
        Removed value: -"string"
      • changedInput schema / properties / resolution / description
        Previous 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"
      • removedInput schema / properties / resolution / enum
        Removed 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"
        -]
      • removedInput schema / properties / resolution / type
        Removed value: -"string"
      • addedInput schema / properties / resolution_tier
        Added value: +{
        +  "description": "The output resolution tier"
        +}
      • changedInput schema / properties / seed / description
        Previous value: -"Reproducibility seed"New value: +"Random seed for a reproducible result"
      • removedInput schema / properties / seed / maximum
        Removed value: -2147483647
      • removedInput schema / properties / seed / minimum
        Removed value: -0
      • removedInput schema / properties / seed / type
        Removed value: -"integer"
      • changedInput schema / properties / style_codes / description
        Previous value: -"8-character hexadecimal style codes from Ideogram"New value: +"8-character hexadecimal style codes"
      • removedInput schema / properties / style_codes / items
        Removed value: -{
        -  "pattern": "^[0-9A-Fa-f]{8}$",
        -  "type": "string"
        -}
      • removedInput schema / properties / style_codes / maxItems
        Removed value: -8
      • removedInput schema / properties / style_codes / minItems
        Removed value: -1
      • removedInput schema / properties / style_codes / type
        Removed value: -"array"
      • changedInput schema / properties / style_preset / description
        Previous value: -"A named style preset as Ideogram lists them"New value: +"A named style preset; not with style codes or style references"
      • removedInput schema / properties / style_preset / maxLength
        Removed value: -100
      • removedInput schema / properties / style_preset / minLength
        Removed value: -1
      • removedInput schema / properties / style_preset / type
        Removed value: -"string"
      • addedInput schema / properties / style_reference_asset_identifiers
        Added value: +{
        +  "description": "Ideogram assets (uploads or earlier results) to use as style references"
        +}
      • addedInput schema / properties / style_reference_collection_id
        Added value: +{
        +  "description": "A saved style collection to apply"
        +}
      • addedInput schema / properties / style_reference_collection_version_id
        Added value: +{
        +  "description": "A version of the saved style collection"
        +}
      • changedInput schema / properties / style_reference_images / description
        Previous 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"
      • removedInput schema / properties / style_reference_images / items
        Removed value: -{
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / style_reference_images / maxItems
        Removed value: -3
      • removedInput schema / properties / style_reference_images / minItems
        Removed value: -1
      • removedInput schema / properties / style_reference_images / type
        Removed value: -"array"
      • changedInput schema / properties / style_type / description
        Previous value: -"Visual style (the API default is GENERAL when omitted)"New value: +"Visual style family"
      • removedInput schema / properties / style_type / enum
        Removed value: -[
        -  "AUTO",
        -  "GENERAL",
        -  "REALISTIC",
        -  "DESIGN",
        -  "FICTION"
        -]
      • removedInput schema / properties / style_type / type
        Removed value: -"string"
      • addedInput schema / properties / wait_s
        Added 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"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "image",
        -  "prompt"
        -]
    • Addedideogram_remove_background
    • Addedideogram_remove_object
    • Changedideogram_replace_background26 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • addedInput schema / definitions
        Added 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"
        +  }
        +}
      • addedInput schema / oneOf
        Added 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"
        +  }
        +]
      • changedInput schema / properties / image / description
        Previous value: -"Local file path of the source image"New value: +"Local image file to work on, or a public https URL of one"
      • removedInput schema / properties / image / minLength
        Removed value: -1
      • removedInput schema / properties / image / type
        Removed value: -"string"
      • addedInput schema / properties / image_asset_identifier
        Added value: +{
        +  "description": "An Ideogram asset (an upload or an earlier result) instead of a local image"
        +}
      • addedInput schema / properties / inline_images
        Added 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"
        +}
      • removedInput schema / properties / magic_prompt
        Removed value: -{
        -  "description": "Auto-enhance prompts (default: AUTO)",
        -  "enum": [
        -    "AUTO",
        -    "ON",
        -    "OFF"
        -  ],
        -  "type": "string"
        -}
      • addedInput schema / properties / model
        Added value: +{
        +  "description": "The model (default ideogram-3); each takes the fields of its variant below",
        +  "enum": [
        +    "gpt-image-2",
        +    "ideogram-3"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / num_images / description
        Previous value: -"Number of variations (1-8, default: 1)"New value: +"How many images to make (each is billed)"
      • removedInput schema / properties / num_images / maximum
        Removed value: -8
      • removedInput schema / properties / num_images / minimum
        Removed value: -1
      • removedInput schema / properties / num_images / type
        Removed value: -"integer"
      • addedInput schema / properties / private
        Added value: +{
        +  "description": "Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)"
        +}
      • changedInput schema / properties / prompt / description
        Previous value: -"Description of the new background"New value: +"What to create or change, in natural language"
      • removedInput schema / properties / prompt / maxLength
        Removed value: -10000
      • removedInput schema / properties / prompt / minLength
        Removed value: -1
      • removedInput schema / properties / prompt / type
        Removed value: -"string"
      • addedInput schema / properties / quality
        Added value: +{
        +  "description": "very_low, low, medium or high: higher costs more"
        +}
      • changedInput schema / properties / rendering_speed / description
        Previous value: -"Speed/quality tradeoff (default: DEFAULT)"New value: +"turbo, default or quality: faster is cheaper"
      • removedInput schema / properties / rendering_speed / enum
        Removed value: -[
        -  "FLASH",
        -  "TURBO",
        -  "DEFAULT",
        -  "QUALITY"
        -]
      • removedInput schema / properties / rendering_speed / type
        Removed value: -"string"
      • removedInput schema / properties / seed
        Removed value: -{
        -  "description": "Reproducibility seed",
        -  "maximum": 2147483647,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • addedInput schema / properties / wait_s
        Added 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"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "image",
        -  "prompt"
        -]
    • Addedideogram_sketch_to_render
    • Addedideogram_snap_mask
    • Addedideogram_train
    • Changedideogram_upscale24 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • addedInput schema / definitions
        Added 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"
        +  }
        +}
      • addedInput schema / oneOf
        Added 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"
        +  }
        +]
      • removedInput schema / properties / detail
        Removed value: -{
        -  "description": "Detail to add (0-100, default: 50)",
        -  "maximum": 100,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • changedInput schema / properties / image / description
        Previous value: -"Local file path of the image to upscale"New value: +"Local image file to work on, or a public https URL of one"
      • removedInput schema / properties / image / minLength
        Removed value: -1
      • removedInput schema / properties / image / type
        Removed value: -"string"
      • addedInput schema / properties / image_asset_identifier
        Added value: +{
        +  "description": "An Ideogram asset (an upload or an earlier result) instead of a local image"
        +}
      • addedInput schema / properties / inline_images
        Added 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"
        +}
      • removedInput schema / properties / magic_prompt
        Removed value: -{
        -  "description": "Auto-enhance prompts (AUTO/ON/OFF)",
        -  "enum": [
        -    "AUTO",
        -    "ON",
        -    "OFF"
        -  ],
        -  "type": "string"
        -}
      • addedInput schema / properties / model
        Added 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"
        +}
      • removedInput schema / properties / num_images
        Removed value: -{
        -  "description": "Number of variations (1-8, default: 1)",
        -  "maximum": 8,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • addedInput schema / properties / private
        Added value: +{
        +  "description": "Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)"
        +}
      • changedInput schema / properties / prompt / description
        Previous value: -"Guide the upscaling enhancement"New value: +"What to create or change, in natural language"
      • removedInput schema / properties / prompt / type
        Removed value: -"string"
      • removedInput schema / properties / resemblance
        Removed value: -{
        -  "description": "Similarity to original (0-100, default: 50)",
        -  "maximum": 100,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • addedInput schema / properties / resolution_tier
        Added value: +{
        +  "description": "The output resolution tier"
        +}
      • changedInput schema / properties / seed / description
        Previous value: -"Reproducibility seed"New value: +"Random seed for a reproducible result"
      • removedInput schema / properties / seed / maximum
        Removed value: -2147483647
      • removedInput schema / properties / seed / minimum
        Removed value: -0
      • removedInput schema / properties / seed / type
        Removed value: -"integer"
      • addedInput schema / properties / upscale_factor
        Added value: +{
        +  "description": "x2, x4 or x8"
        +}
      • addedInput schema / properties / wait_s
        Added 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"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "image"
        -]
    • Addedideogram_usage
    • Addedideogram_video_image
    • Addedideogram_video_reference
    • Addedideogram_video_text
  2. 3 tool updatesv1.2.0
    • Changedideogram_edit9 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / character_reference_image
        Added 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"
        +}
      • addedInput schema / properties / character_reference_mask
        Added value: +{
        +  "description": "Grayscale mask of the character reference (same dimensions); needs character_reference_image",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / color_palette
        Added 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)"
        +}
      • changedInput schema / properties / mask / description
        Previous 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)"
      • addedInput schema / properties / style_codes
        Added value: +{
        +  "description": "8-character hexadecimal style codes from Ideogram",
        +  "items": {
        +    "pattern": "^[0-9A-Fa-f]{8}$",
        +    "type": "string"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / style_preset
        Added value: +{
        +  "description": "A named style preset as Ideogram lists them",
        +  "maxLength": 100,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / style_reference_images
        Added 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"
        +}
      • changedInput schema / properties / style_type / description
        Previous value: -"Visual style (default: AUTO)"New value: +"Visual style (the API default is GENERAL when omitted)"
    • Changedideogram_generate12 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / character_reference_image
        Added 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"
        +}
      • addedInput schema / properties / character_reference_mask
        Added value: +{
        +  "description": "Grayscale mask of the character reference (same dimensions); needs character_reference_image",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / color_palette
        Added 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)"
        +}
      • addedInput schema / properties / custom_model_uri
        Added value: +{
        +  "description": "A custom (trained) model: model/<name>/version/<version>",
        +  "pattern": "^model\\/[^/\\s]+\\/version\\/[^/\\s]+$",
        +  "type": "string"
        +}
      • addedInput schema / properties / enable_copyright_detection
        Added 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"
        +}
      • addedInput schema / properties / model
        Added 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"
        +}
      • addedInput schema / properties / resolution
        Added 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"
        +}
      • addedInput schema / properties / style_codes
        Added value: +{
        +  "description": "8-character hexadecimal style codes from Ideogram",
        +  "items": {
        +    "pattern": "^[0-9A-Fa-f]{8}$",
        +    "type": "string"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / style_preset
        Added value: +{
        +  "description": "A named style preset as Ideogram lists them",
        +  "maxLength": 100,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / style_reference_images
        Added 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"
        +}
      • changedInput schema / properties / style_type / description
        Previous value: -"Visual style (default: AUTO)"New value: +"Visual style (the API default is GENERAL when omitted)"
    • Changedideogram_remix9 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / character_reference_image
        Added 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"
        +}
      • addedInput schema / properties / character_reference_mask
        Added value: +{
        +  "description": "Grayscale mask of the character reference (same dimensions); needs character_reference_image",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / color_palette
        Added 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)"
        +}
      • addedInput schema / properties / resolution
        Added 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"
        +}
      • addedInput schema / properties / style_codes
        Added value: +{
        +  "description": "8-character hexadecimal style codes from Ideogram",
        +  "items": {
        +    "pattern": "^[0-9A-Fa-f]{8}$",
        +    "type": "string"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / style_preset
        Added value: +{
        +  "description": "A named style preset as Ideogram lists them",
        +  "maxLength": 100,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / style_reference_images
        Added 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"
        +}
      • changedInput schema / properties / style_type / description
        Previous value: -"Visual style (default: AUTO)"New value: +"Visual style (the API default is GENERAL when omitted)"
  3. 7 tool updatesv1.0.3
    • First observedideogram_describe
    • First observedideogram_edit
    • First observedideogram_generate
    • First observedideogram_reframe
    • First observedideogram_remix
    • First observedideogram_replace_background
    • First observedideogram_upscale

TDQS

A3.7/5.0

Scored across 38 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count2/5

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.

Completeness5/5

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

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers