{"openapi":"3.1.0","info":{"title":"Ideogram API v2","version":"1.0.0"},"paths":{"/v2/image/precise-edit/ideogram-4-5":{"post":{"operationId":"imagesPreciseEdit_post_precise_edit_image_v2_ideogram45","summary":"Precise edit with Ideogram 4.5","description":"Edit an image with Ideogram 4.5 and get the result back at that image's\nexact width and height. Upload the image as `image` using\n`multipart/form-data`, with optional `reference_images` and a `mask`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n\nEditing the whole image is bounded by 4194304 pixels (the area of a\n2048x2048 square), so a larger image comes back scaled down to fit: an\n8192x8192 image returns as 2048x2048.\n\nTo edit a 4K or 8K image at its full resolution, set `context_window`\nto confine the edit to one region, either `auto` together with a\n`mask`, or `y_min,x_min,y_max,x_max` to name the region yourself. Only\nthat region changes, the rest of the image comes back unchanged, and\nthe result keeps the image's own width and height at any input size.\n\n```bash\ncurl -X POST https://api.ideogram.ai/v2/image/precise-edit/ideogram-4-5 \\\n  -H \"Api-Key: $IDEOGRAM_API_KEY\" \\\n  -F image=@photo_8k.png \\\n  -F mask=@mask_8k.png \\\n  -F context_window=auto \\\n  -F prompt=\"Add round black sunglasses.\"\n```\n","tags":["images-precise-edit"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The edited images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreciseEditImageIdeogram45Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to edit an image with Ideogram 4.5 at that image's own size. Send it as `multipart/form-data` with the `image` to edit and any `reference_images` and `mask`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The edit instruction, in natural language or as a structured JSON\nprompt. Natural language is automatically converted into a\nstructured prompt; valid structured JSON is used as is.\n"},"image":{"type":"string","format":"binary","description":"The image to edit, as raw bytes (max 50MB and 67108864 pixels, which 8192x8192 meets exactly; JPEG, PNG, or WEBP). Multipart requests only, and ignored when the same image is also supplied by reference. The output always matches this image's width and height, and pixels the edit did not meaningfully change are copied exactly from it. Set `context_window` to keep the full resolution of an image over 4194304 pixels."},"reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Optional images to guide the edit (max 4, max 50MB each; JPEG, PNG, or WEBP). They are never edited themselves; only `image` is. Multipart requests only, and ignored when the same references are also supplied by reference. A request with a `mask` can include at most three, because the mask takes up one reference slot."},"mask":{"type":"string","format":"binary","description":"An optional mask that limits the edit to part of `image` (max 50MB; JPEG, PNG, or WEBP). Multipart requests only. Black marks the area to edit and white the area to keep; values in between are rounded to the nearer of the two. The mask must have the same width and height as the image being edited and contain both black and white areas. A masked request can include at most three reference images."},"context_window":{"type":"string","pattern":"^(none|auto|[0-9]+,[0-9]+,[0-9]+,[0-9]+)$","default":"auto","description":"Which region of the image to edit. Set this to keep the full resolution of an image larger than 4194304 pixels.\n`none` edits the whole image, which is bounded by 4194304 pixels (the area of a 2048x2048 square); a larger image comes back scaled down to fit. For example, an 8192x8192 image returns as 2048x2048.\n`auto`, the default, fits a region around the masked area when a `mask` or `mask_asset_identifier` is supplied. Without a mask, it behaves the same as `none`. If the mask selects more than 4194304 pixels no region fits it, and the request falls back to editing the whole image, scaled down as above.\n`y_min,x_min,y_max,x_max` names the region explicitly, by its corners. Rows come first, matching the `bbox` ordering used elsewhere in this API, and the values are the edited image's own pixels with the origin at its top-left corner. For example `512,1024,2048,3072` is the region 2048 pixels wide and 1536 tall whose top-left corner is 1024 across and 512 down. The maximum edges are exclusive, so the region measures `x_max - x_min` by `y_max - y_min`. It must lie inside the image, measure at least 256px on each side, have an aspect ratio between 1:6 and 6:1, and cover no more than 4194304 pixels. A `mask` may select only pixels inside it.\nWhen `auto` finds a region, or with an explicit region, only that region changes, the rest of the image comes back unchanged, and the output keeps the image's own width and height at any input size."},"quality":{"$ref":"#/components/schemas/V2ImagePreciseEditIdeogram45PostRequestBodyContentMultipartFormDataSchemaQuality","default":"medium","description":"The rendering quality to use. `very_low` is the fastest and cheapest, and `high` takes longer and is priced higher. This is the only field that affects the price: the size of the image you send does not change it, and neither does `context_window`."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Run copyright detection on the generated images. Adds latency; flagged images are returned with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt","image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/auto":{"post":{"operationId":"autoModel_post_generate_image_v2_auto","summary":"Generate with automatic model selection","description":"Generate images with the model Ideogram picks as best suited to each\nrequest. Optionally upload source images as `images` using\n`multipart/form-data` to edit them with the prompt. Returns results\ndirectly by default; set `async` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["auto-model"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageV2AutoResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"A source image was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks, or the request combined source images with text-to-image-only fields.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images with an automatically selected model. Send it as `application/json`, or as `multipart/form-data` to include source `images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from or, when source images are supplied, the change to make to them."},"images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Optional source images to edit (max 10, max 25MB each; JPEG, PNG, or WEBP). Multipart requests only."},"negative_prompt":{"type":"string","maxLength":10000,"description":"Description of what to exclude from the images. The prompt takes precedence over the negative prompt. Not every model uses it. Cannot be combined with source images."},"aspect_ratio":{"type":"string","pattern":"^(auto|[1-9][0-9]{0,4}x[1-9][0-9]{0,4})$","default":"auto","description":"The output aspect ratio. `auto` (the default) picks the most suitable ratio for the request. Without source images the value must be a supported ratio (for example \"16x9\" or \"1x1\"); with source images any \"WIDTHxHEIGHT\" value is accepted and the output uses the closest supported shape. Omit `resolution` when supplying a non-`auto` value."},"resolution":{"type":"string","pattern":"^[1-9][0-9]{1,4}x[1-9][0-9]{1,4}$","description":"The requested output resolution, formatted as \"WIDTHxHEIGHT\" (for example \"1280x800\"). The output is served at the closest resolution the selected model supports. Omit `aspect_ratio` (or leave it `auto`) when supplying a resolution."},"resolution_tier":{"$ref":"#/components/schemas/V2ImageGenerateAutoPostRequestBodyContentMultipartFormDataSchemaResolutionTier","description":"The output resolution tier. Affects which model serves the request, since not every model offers every tier. When omitted, the selected model's default tier is used."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). Defaults to `auto`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."}},"required":["prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/ideogram-4-5":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_ideogram45","summary":"Generate with Ideogram 4.5","description":"Generate images with Ideogram 4.5 from a natural-language or structured\nJSON prompt. Optionally upload source images as `images` using\n`multipart/form-data` to edit them with the prompt. Returns results\ndirectly by default; set `async` or supply a `webhook_url` to get a\n`generation_id` and poll `GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIdeogram45Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images with Ideogram 4.5. Send it as `application/json`, or as `multipart/form-data` to include source `images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from, or the edit instruction when\nsource images are supplied. Natural language or a structured\nIdeogram 4.0 JSON prompt.\n"},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls how a natural-language prompt is prepared. `auto` (the\ndefault) and `on` rewrite and expand the prompt before generation.\n`off` keeps your wording and only converts it into a structured\nprompt. A valid structured JSON prompt skips magic prompt unless\n`magic_prompt` is `on`. With source images, every mode converts\nthe edit instruction into a structured edit prompt.\n"},"images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Optional source images to edit (max 5, max 25MB each; JPEG, PNG, or WEBP). The first image is the one being edited; any others are extra references. Multipart requests only."},"mask":{"type":"string","format":"binary","description":"An optional mask that limits the edit to part of the first source image (max 25MB; JPEG, PNG, or WEBP). Multipart requests only. Black marks the area to edit and white the area to keep; values in between are rounded to the nearer of the two. The mask must have the same width and height as the first source image and contain both black and white areas. A masked request can include at most three other source images. With a mask, the output is always the first source image's own size, so `size` cannot be set."},"size":{"type":["string","null"],"default":"auto","description":"The output size: \"auto\", \"source\" or an exact \"WIDTHxHEIGHT\".\n\nWithout source images, an exact size must be one of the supported\n1K/2K presets (for example 1024x1024, 2048x2048 or 1440x2880);\n\"auto\" or omitted picks a supported size based on the prompt.\n\"source\" is rejected.\n\nWith source images, \"auto\" (the default) picks a supported 2K size\nbased on the source images and the prompt, and \"source\" returns the\noutput at the first source image's own width and height (scaled\ndown, keeping its proportions, if it is too large for the model).\nEvery source image's aspect ratio must be between 1:6 and 6:1.\n\nAn exact size must have both sides a multiple of 32 and at least\n256px, a total of at most 2048x2048 pixels, and an aspect ratio of\nat most 6:1. With source images, an exact size reshapes the source\nto it.\n\nPricing is tiered by the resolved output pixels: up to 1024x1024\nbills as 1K, above that as 2K. An \"auto\" size bills as 2K.\n"},"background":{"$ref":"#/components/schemas/V2ImageGenerateIdeogram45PostRequestBodyContentMultipartFormDataSchemaBackground","default":"auto","description":"The output background. `transparent` returns images with an alpha channel, `opaque` returns a solid one, and `auto` decides for you."},"quality":{"$ref":"#/components/schemas/V2ImageGenerateIdeogram45PostRequestBodyContentMultipartFormDataSchemaQuality","description":"The rendering quality to use. Higher quality takes longer and costs more. Defaults to `medium` with source images and `high` without. `very_low`, the fastest and cheapest, requires source images."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Run copyright detection on the generated images. Adds latency; flagged images are returned with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/ideogram-4":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_ideogram_v4","summary":"Generate with Ideogram 4.0","description":"Generate images with Ideogram 4.0 from a natural-language or structured\nJSON prompt. Returns results directly by default; set `async` or supply\na `webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIdeogramV4Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images with Ideogram 4.0.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIdeogramV4Request"}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/ideogram-4-custom-model":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_ideogram_v4_custom_model","summary":"Generate with a custom Ideogram 4.0 model","description":"Generate images with a custom Ideogram 4.0 model that you or your\norganization can access, selected by `custom_model_uri`. Returns results\ndirectly by default; set `async` or supply a `webhook_url` to get a\n`generation_id` and poll `GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIdeogramV4CustomModelResponse"}}}},"400":{"description":"Invalid input or an unsupported model option.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"The custom model does not exist or is not accessible to this user or organization.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images with an accessible custom Ideogram 4.0 model.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIdeogramV4CustomModelRequest"}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/ideogram-4-transparent":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_ideogram_v4_transparent","summary":"Generate transparent images with Ideogram 4.0","description":"Generate images on a transparent background with Ideogram 4.0, delivered\nas PNGs with alpha. Returns results directly by default; set `async` or\nsupply a `webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIdeogramV4TransparentResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate transparent-background images with Ideogram 4.0.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIdeogramV4TransparentRequest"}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/ideogram-3":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_ideogram_v3","summary":"Generate with Ideogram 3.0","description":"Generate images from a text prompt with Ideogram 3.0. Optional style\ncontrols include style codes, a style preset, a color palette, and style\nreferences (uploaded `style_reference_images`). Returns\nresults directly by default; set `async` or supply a `webhook_url` to\nget a `generation_id` and poll `GET /v2/generations/{generation_id}`.","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIdeogramV3Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"A referenced resource was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images with Ideogram 3.0. Send it as `application/json`, or as `multipart/form-data` to include `style_reference_images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from."},"negative_prompt":{"type":"string","maxLength":10000,"description":"Description of what to exclude from the images. The prompt takes precedence over the negative prompt."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"resolution":{"$ref":"#/components/schemas/ResolutionV3"},"aspect_ratio":{"$ref":"#/components/schemas/IdeogramV3AspectRatio"},"rendering_speed":{"$ref":"#/components/schemas/V2ImageGenerateIdeogram3PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed","default":"default","description":"The rendering speed to use."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). Defaults to `auto`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"color_palette":{"$ref":"#/components/schemas/IdeogramColorPalette"},"style_codes":{"type":"array","items":{"$ref":"#/components/schemas/StyleCode"},"description":"A list of 8-character hexadecimal codes representing the style of the image. Refer to each endpoint for supported combinations with style types, presets, and reference images."},"style_type":{"$ref":"#/components/schemas/IdeogramV3StyleType","default":"general"},"style_preset":{"$ref":"#/components/schemas/IdeogramV3StylePreset","description":"A predefined style preset to apply to the generated images. Cannot be combined with style codes or style references."},"style_reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Images to use as style references (max 10, max 25MB each; JPEG, PNG, or WEBP)."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Run copyright detection on the generated images. Adds latency; flagged images are returned with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/ideogram-3-character":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_ideogram_v3_character","summary":"Generate a consistent character with Ideogram 3.0","description":"Generate images featuring a consistent character with Ideogram 3.0.\nUpload the character as `character_reference_images` using\n`multipart/form-data`. Returns\nresults directly by default; set `async` or supply a `webhook_url` to\nget a `generation_id` and poll `GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIdeogramV3CharacterResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"A referenced resource was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images of a consistent character with Ideogram 3.0. Send it as `multipart/form-data` to upload `character_reference_images` and any `style_reference_images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from."},"negative_prompt":{"type":"string","maxLength":10000,"description":"Description of what to exclude from the images. The prompt takes precedence over the negative prompt."},"character_reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"An image of the character to feature (max 25MB; JPEG, PNG, or WEBP)."},"character_reference_mask":{"type":"string","format":"binary","description":"Optional grayscale mask marking where the character is in the character reference image, at the same size as that image (JPEG, PNG, or WEBP). Multipart requests only."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"resolution":{"$ref":"#/components/schemas/ResolutionV3"},"aspect_ratio":{"$ref":"#/components/schemas/IdeogramV3AspectRatio"},"rendering_speed":{"$ref":"#/components/schemas/V2ImageGenerateIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed","default":"default","description":"The rendering speed to use."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). Defaults to `auto`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"style_type":{"$ref":"#/components/schemas/V2ImageGenerateIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaStyleType","default":"auto","description":"The style type to generate the character with. Defaults to `auto`."},"style_reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Images to use as style references (max 10, max 25MB each; JPEG, PNG, or WEBP)."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Run copyright detection on the generated images. Adds latency; flagged images are returned with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt","character_reference_images"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/ideogram-3-custom-model":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_ideogram_v3_custom_model","summary":"Generate with a custom Ideogram 3.0 model","description":"Generate images with a custom Ideogram 3.0 model that you or your\norganization can access, selected by `custom_model_uri`. Returns results\ndirectly by default; set `async` or supply a `webhook_url` to get a\n`generation_id` and poll `GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIdeogramV3CustomModelResponse"}}}},"400":{"description":"Invalid input or an unsupported model option.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"The custom model does not exist or is not accessible to this user or organization.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"A requested resource was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images with an accessible custom Ideogram 3.0 model. Send it as `application/json`, or as `multipart/form-data` to include `style_reference_images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from."},"custom_model_uri":{"type":"string","pattern":"^model/[^/]+/version/[^/]+$","minLength":1,"maxLength":512,"description":"The custom model URI, in the form `model/<model_name>/version/<version_name>`. You or your organization must have access to the model. The model determines which rendering speeds are supported and whether backgrounds are removed automatically."},"transparent_background":{"type":"boolean","default":false,"description":"Remove the background after generation and return transparent PNG images. Included in the custom model generation price at no extra charge. When false, the model's automatic background removal behavior still applies."},"negative_prompt":{"type":"string","maxLength":10000,"description":"Description of what to exclude from the images. The prompt takes precedence over the negative prompt."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"resolution":{"$ref":"#/components/schemas/ResolutionV3"},"aspect_ratio":{"$ref":"#/components/schemas/IdeogramV3AspectRatio"},"rendering_speed":{"$ref":"#/components/schemas/V2ImageGenerateIdeogram3CustomModelPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed","description":"The rendering speed to use. When omitted, a speed supported by the custom model is used."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). Defaults to `auto`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"color_palette":{"$ref":"#/components/schemas/IdeogramColorPalette"},"style_codes":{"type":"array","items":{"$ref":"#/components/schemas/StyleCode"},"description":"A list of 8-character hexadecimal codes representing the style of the image. Refer to each endpoint for supported combinations with style types, presets, and reference images."},"style_preset":{"$ref":"#/components/schemas/IdeogramV3StylePreset","description":"A predefined style preset to apply to the generated images. Cannot be combined with style codes or style references."},"style_reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Images to use as style references (max 10, max 25MB each; JPEG, PNG, or WEBP). Multipart requests only."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Run copyright detection on the generated images. Adds latency; flagged images are returned with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt","custom_model_uri"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/ideogram-3-transparent":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_ideogram_v3_transparent","summary":"Generate transparent images with Ideogram 3.0","description":"Generate images on a transparent background with Ideogram 3.0, delivered\nas PNGs with alpha. Returns results directly by default; set `async` or\nsupply a `webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIdeogramV3TransparentResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate transparent-background images with Ideogram 3.0.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIdeogramV3TransparentRequest"}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/ideogram-2a":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_ideogram_v2_a","summary":"Generate with Ideogram 2a","description":"Generate images from a text prompt with Ideogram 2a, a fast, lower-cost\nmodel. Returns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIdeogramV2AResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images with Ideogram 2a.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIdeogramV2ARequest"}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/ideogram-2":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_ideogram_v2","summary":"Generate with Ideogram 2.0","description":"Generate images from a text prompt with Ideogram 2.0. Returns results\ndirectly by default; set `async` or supply a `webhook_url` to get a\n`generation_id` and poll `GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIdeogramV2Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images with Ideogram 2.0.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageIdeogramV2Request"}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/gpt-image-2-5-flare":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_gpt_image25_flare","summary":"Generate with GPT Image 2.5 Flare","description":"Generate images with GPT Image 2.5 Flare, the fast variant of GPT Image\n2.5. Optionally upload source images as `images` using\n`multipart/form-data` to edit them with the prompt. Returns results\ndirectly by default; set `async` or supply a `webhook_url` to get a\n`generation_id` and poll `GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageGptImage25FlareResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images with GPT Image 2.5 Flare. Send it as `application/json`, or as `multipart/form-data` to include source `images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from, or the edit instruction to apply when source images are supplied. It is passed to the model as written."},"images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Optional source images to edit (max 16, max 25MB each; JPEG, PNG, or WEBP). Multipart requests only."},"mask":{"type":"string","format":"binary","description":"An optional mask for the first source image (max 25MB; JPEG, PNG, or WEBP). Multipart requests only. White pixels mark the area to edit and black pixels mark the area to keep. The mask must have the same dimensions as the first source image and requires source images in the same request."},"background":{"$ref":"#/components/schemas/V2ImageGenerateGptImage25FlarePostRequestBodyContentMultipartFormDataSchemaBackground","default":"auto","description":"The output background. `transparent` returns images with an alpha channel, `opaque` forces a solid background, and `auto` lets the model decide from the prompt."},"quality":{"$ref":"#/components/schemas/V2ImageGenerateGptImage25FlarePostRequestBodyContentMultipartFormDataSchemaQuality","default":"auto","description":"How much rendering effort the model spends. Lower tiers return sooner and cost less; `auto` lets the model choose, which it currently renders at `high`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"aspect_ratio":{"type":"string","default":"auto","description":"The requested output aspect ratio, for example \"1:1\", \"16:9\", or \"9:16\". \"auto\" (the default) lets the model choose the size: a generation picks a shape that suits the prompt, and an edit follows its first source image. Ignored when `resolution` is provided."},"resolution":{"type":"string","description":"Exact output resolution, formatted as \"WIDTHxHEIGHT\", for example\n\"2048x2048\" or \"1920x1088\". When provided, this takes precedence\nover `aspect_ratio`. The dimensions must satisfy GPT Image 2.5 Flare\nconstraints: each side is a multiple of 16, the largest side is at\nmost 3840px, the long:short ratio is at most 3:1, and total pixels\nare between 655360 and 8294400 inclusive.\n"},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/gpt-image-2-5-sunburst":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_gpt_image25_sunburst","summary":"Generate with GPT Image 2.5 Sunburst","description":"Generate images with GPT Image 2.5 Sunburst, the quality variant of GPT\nImage 2.5, with finer detail at higher latency than Flare. Optionally\nupload source images as `images` using `multipart/form-data` to edit\nthem with the prompt. Returns results directly by default; set `async`\nor supply a `webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageGptImage25SunburstResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images with GPT Image 2.5 Sunburst. Send it as `application/json`, or as `multipart/form-data` to include source `images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from, or the edit instruction to apply when source images are supplied. It is passed to the model as written."},"images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Optional source images to edit (max 16, max 25MB each; JPEG, PNG, or WEBP). Multipart requests only."},"mask":{"type":"string","format":"binary","description":"An optional mask for the first source image (max 25MB; JPEG, PNG, or WEBP). Multipart requests only. White pixels mark the area to edit and black pixels mark the area to keep. The mask must have the same dimensions as the first source image and requires source images in the same request."},"background":{"$ref":"#/components/schemas/V2ImageGenerateGptImage25SunburstPostRequestBodyContentMultipartFormDataSchemaBackground","default":"auto","description":"The output background. `transparent` returns images with an alpha channel, `opaque` forces a solid background, and `auto` lets the model decide from the prompt."},"quality":{"$ref":"#/components/schemas/V2ImageGenerateGptImage25SunburstPostRequestBodyContentMultipartFormDataSchemaQuality","default":"auto","description":"How much rendering effort the model spends. Lower tiers return sooner and cost less; `auto` lets the model choose, which it currently renders at `high`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"aspect_ratio":{"type":"string","default":"auto","description":"The requested output aspect ratio, for example \"1:1\", \"16:9\", or \"9:16\". \"auto\" (the default) lets the model choose the size: a generation picks a shape that suits the prompt, and an edit follows its first source image. Ignored when `resolution` is provided."},"resolution":{"type":"string","description":"Exact output resolution, formatted as \"WIDTHxHEIGHT\", for example\n\"2048x2048\" or \"1920x1088\". When provided, this takes precedence\nover `aspect_ratio`. The dimensions must satisfy GPT Image 2.5 Sunburst\nconstraints: each side is a multiple of 16, the largest side is at\nmost 3840px, the long:short ratio is at most 3:1, and total pixels\nare between 655360 and 8294400 inclusive.\n"},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/gpt-image-2":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_gpt_image2","summary":"Generate with GPT Image 2","description":"Generate images with GPT Image 2. Optionally upload source images as\n`images` using `multipart/form-data` to edit them with the prompt.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageGptImage2Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images with GPT Image 2. Send it as `application/json`, or as `multipart/form-data` to include source `images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from, or the edit instruction to apply when source images are supplied. It is passed to the model as written."},"images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Optional source images to edit (max 16, max 25MB each; JPEG, PNG, or WEBP). Multipart requests only."},"mask":{"type":"string","format":"binary","description":"An optional mask for the first source image (max 25MB; JPEG, PNG, or WEBP). Multipart requests only. White pixels mark the area to edit and black pixels mark the area to keep. The mask must have the same dimensions as the first source image and requires source images in the same request."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"aspect_ratio":{"type":"string","default":"auto","description":"The requested output aspect ratio, for example \"1:1\", \"16:9\", or \"9:16\". \"auto\" (the default) lets the model choose the size: a generation picks a shape that suits the prompt, and an edit follows its first source image. Ignored when `resolution` is provided."},"resolution":{"type":"string","description":"Exact output resolution, formatted as \"WIDTHxHEIGHT\", for example\n\"2048x2048\" or \"1920x1088\". When provided, this takes precedence\nover `aspect_ratio`. The dimensions must satisfy GPT Image 2\nconstraints: each side is a multiple of 16, the largest side is at\nmost 3840px, the long:short ratio is at most 3:1, and total pixels\nare between 655360 and 8294400 inclusive.\n"},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/nano-banana-2":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_nano_banana2","summary":"Generate with Nano Banana 2","description":"Generate images with Nano Banana 2. Optionally upload source images as\n`images` using `multipart/form-data` to edit them with the prompt.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageNanoBanana2Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images with Nano Banana 2. Send it as `application/json`, or as `multipart/form-data` to include source `images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from, or the edit instruction to apply when source images are supplied. It is passed to the model as written."},"images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Optional source images to edit (max 10, max 25MB each; JPEG, PNG, or WEBP). Multipart requests only."},"aspect_ratio":{"$ref":"#/components/schemas/NanoBanana2AspectRatio","default":"auto"},"resolution_tier":{"$ref":"#/components/schemas/V2ImageGenerateNanoBanana2PostRequestBodyContentMultipartFormDataSchemaResolutionTier","default":"1K","description":"The output resolution tier."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/nano-banana-2-1":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_nano_banana21","summary":"Generate with Nano Banana 2.1","description":"Generate images with Nano Banana 2.1. Optionally upload source images as\n`images` using `multipart/form-data` to edit them with the prompt.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageNanoBanana21Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images with Nano Banana 2.1. Send it as `application/json`, or as `multipart/form-data` to include source `images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from, or the edit instruction to apply when source images are supplied. It is passed to the model as written."},"images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Optional source images to edit (max 10, max 25MB each; JPEG, PNG, or WEBP). Multipart requests only."},"aspect_ratio":{"$ref":"#/components/schemas/NanoBanana21AspectRatio","default":"auto"},"resolution_tier":{"$ref":"#/components/schemas/V2ImageGenerateNanoBanana21PostRequestBodyContentMultipartFormDataSchemaResolutionTier","default":"1K","description":"The output resolution tier."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/nano-banana-pro":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_nano_banana_pro","summary":"Generate with Nano Banana Pro","description":"Generate images with Nano Banana Pro. Optionally upload source images as\n`images` using `multipart/form-data` to edit them with the prompt.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageNanoBananaProResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images with Nano Banana Pro. Send it as `application/json`, or as `multipart/form-data` to include source `images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from, or the edit instruction to apply when source images are supplied. It is passed to the model as written."},"images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Optional source images to edit (max 10, max 25MB each; JPEG, PNG, or WEBP). Multipart requests only."},"aspect_ratio":{"$ref":"#/components/schemas/NanoBananaProAspectRatio","default":"auto"},"resolution_tier":{"$ref":"#/components/schemas/V2ImageGenerateNanoBananaProPostRequestBodyContentMultipartFormDataSchemaResolutionTier","default":"1K","description":"The output resolution tier."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/p-image-ideogram":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_p_image_ideogram","summary":"Generate with P-Image Ideogram","description":"Generate images with P-Image Ideogram, a fast model with selectable\nquality and resolution tiers. Returns results directly by default; set\n`async` or supply a `webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImagePImageIdeogramResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images with P-Image Ideogram.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImagePImageIdeogramRequest"}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/generate/z-image":{"post":{"operationId":"imagesGenerate_post_generate_image_v2_z_image","summary":"Generate with Z-Image","description":"Generate images from a text prompt with Z-Image. Returns results\ndirectly by default; set `async` or supply a `webhook_url` to get a\n`generation_id` and poll `GET /v2/generations/{generation_id}`.\n","tags":["images-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The generated images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageZImageResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate images with Z-Image.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateImageZImageRequest"}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/remix/auto":{"post":{"operationId":"autoModel_post_tool_remix","summary":"Remix with automatic model selection","description":"Remix an image guided by a text prompt, with Ideogram choosing the\nmodel. Upload the source image as `image` using `multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.","tags":["auto-model"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The remixed images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolRemixResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"A referenced resource was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to remix one image with an automatically selected model. Send it as `multipart/form-data` with the source `image`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt that guides the remix."},"image":{"type":"string","format":"binary","description":"The image to remix (max 50MB; JPEG, PNG, or WEBP). Multipart requests only. The image is used only for this request and is not saved to your account."},"image_weight":{"type":"integer","minimum":1,"maximum":100,"description":"Optional. How closely the result should follow the source image, from 1 to 100. When omitted the selected model chooses its usual strength. Combining a weight with a `resolution` or `aspect_ratio` that changes the source's aspect ratio crops the source to the new shape; this is only available at the 1K tier and is rejected at 2K."},"negative_prompt":{"type":"string","maxLength":10000,"description":"Description of what to exclude from the images. The prompt takes precedence over the negative prompt. Not every model uses it."},"resolution":{"type":"string","pattern":"^[1-9][0-9]{1,4}x[1-9][0-9]{1,4}$","description":"The requested output resolution, formatted as \"WIDTHxHEIGHT\" (for example \"1280x800\"). The output uses the closest supported resolution in the matching 1K or 2K tier. Omit `aspect_ratio` when supplying a resolution. If `resolution_tier` is also supplied, it must match the tier these dimensions fall in. Combining a shape-changing value with `image_weight` requires the 1K tier."},"aspect_ratio":{"$ref":"#/components/schemas/IdeogramV4AspectRatio","description":"The requested output aspect ratio. Omit it to keep the source image's shape. `auto` also keeps the source shape. Omit `resolution` when supplying a concrete value. Combining a shape-changing value with `image_weight` requires the 1K tier."},"resolution_tier":{"$ref":"#/components/schemas/V2ImageRemixAutoPostRequestBodyContentMultipartFormDataSchemaResolutionTier","description":"The output resolution tier. When omitted, the tier is inferred from `resolution`, or defaults to 1k. A color palette, style codes, style preset, or non-`auto` style type are only supported at 1k."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). Defaults to `auto`. The selected model decides how to interpret it."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Optional. Only honored when the request uses a model that supports reproducible remixes; results from the default model are not reproducible. The response reports the seed used."},"style_preset":{"$ref":"#/components/schemas/IdeogramV3StylePreset","description":"A predefined style preset to apply. Limits the request to a model that supports it and requires the 1K resolution tier. Cannot be combined with style codes."},"color_palette":{"$ref":"#/components/schemas/IdeogramColorPalette","description":"A color palette to apply. Limits the request to a model that supports palettes and requires the 1K resolution tier."},"style_codes":{"type":"array","items":{"$ref":"#/components/schemas/StyleCode"},"description":"A list of 8-character hexadecimal codes representing the style of the image. Refer to each endpoint for supported combinations with style types, presets, and reference images."},"style_type":{"$ref":"#/components/schemas/IdeogramV3StyleType","description":"The style type to generate with. A value other than `auto` limits the request to a model that supports it and requires the 1K resolution tier."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Run copyright detection on the generated images. Adds latency; flagged images are returned with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt","image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/remix/ideogram-4":{"post":{"operationId":"imagesRemix_post_remix_image_v2_ideogram_v4","summary":"Remix with Ideogram 4.0","description":"Transform an existing image with Ideogram 4.0, guided by a text\nprompt. Upload the source `image` using `multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-remix"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The remixed images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemixImageIdeogramV4Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"A referenced resource was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"Use `multipart/form-data` to upload the source `image`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt that guides the remix. It is always read as an editing instruction, so there is no `magic_prompt` option."},"image":{"type":"string","format":"binary","description":"The image to transform (max 50MB). JPEG, PNG, and WEBP are supported. Multipart requests only. The uploaded image is saved to your account as the remix's source. Omit `resolution` to keep its shape."},"image_weight":{"type":"integer","minimum":1,"maximum":100,"description":"Optional. How closely the result should follow the source image, from 1 to 100. When omitted the server chooses a value from your prompt, which is the usual case. Only accepted when the output keeps the source image's shape: combining `image_weight` with a `resolution` whose aspect ratio differs from the source's is rejected with a 400."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"resolution":{"$ref":"#/components/schemas/ResolutionV4","description":"Optional. When supplied, the images are generated at this\nresolution. When omitted, the source image's shape is kept. A\nresolution whose aspect ratio differs from the source's cannot\nbe combined with `image_weight`.\n"},"rendering_speed":{"$ref":"#/components/schemas/V2ImageRemixIdeogram4PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed","default":"default","description":"The rendering speed to use."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Opt this request into post-generation copyright detection. Adds detection latency; flagged images come back with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll for completion and results with `GET /v2/generations/{generation_id}` using the returned `generation_id`."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt","image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/remix/ideogram-3":{"post":{"operationId":"imagesRemix_post_remix_image_v2_ideogram_v3","summary":"Remix with Ideogram 3.0","description":"Transform an existing image with Ideogram 3.0, guided by a text\nprompt. Upload the source `image` using `multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-remix"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The remixed images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemixImageIdeogramV3Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"A referenced resource was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"Use `multipart/form-data` to upload the source `image` and any `style_reference_images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt that guides the remix."},"image":{"type":"string","format":"binary","description":"The image to transform (max 50MB). JPEG, PNG, and WEBP are supported. Multipart requests only. The uploaded image is saved to your account as the remix's source. Omit `resolution` and `aspect_ratio` to keep its shape; a different requested shape center-crops the source to fit first."},"image_weight":{"type":"integer","minimum":1,"maximum":100,"description":"Optional. How closely the result should follow the source image, from 1 to 100. When omitted the server chooses a value from your prompt, which is the usual case."},"negative_prompt":{"type":"string","maxLength":10000,"description":"Description of what to exclude from the images. Descriptions in the prompt take precedence over descriptions in the negative prompt."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"resolution":{"$ref":"#/components/schemas/ResolutionV3"},"aspect_ratio":{"$ref":"#/components/schemas/AspectRatioV3"},"rendering_speed":{"$ref":"#/components/schemas/V2ImageRemixIdeogram3PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed","default":"default","description":"The rendering speed to use."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). Defaults to `auto`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"color_palette":{"$ref":"#/components/schemas/IdeogramColorPalette"},"style_codes":{"type":"array","items":{"$ref":"#/components/schemas/StyleCode"},"description":"A list of 8-character hexadecimal codes representing the style of the image. Refer to each endpoint for supported combinations with style types, presets, and reference images."},"style_type":{"$ref":"#/components/schemas/IdeogramV3StyleType","default":"general"},"style_preset":{"$ref":"#/components/schemas/IdeogramV3StylePreset","description":"A predefined style preset to apply to the remixed images. Cannot be combined with style codes or style references."},"style_reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Images to use as style references (max 10, max 25MB each). JPEG, PNG, and WEBP are supported."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Opt this request into post-generation copyright detection. Adds detection latency; flagged images come back with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll for completion and results with `GET /v2/generations/{generation_id}` using the returned `generation_id`."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt","image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/remix/ideogram-3-character":{"post":{"operationId":"imagesRemix_post_remix_image_v2_ideogram_v3_character","summary":"Remix a consistent character with Ideogram 3.0","description":"Transform an existing image with Ideogram 3.0 so it features a\nconsistent character, guided by a text prompt. Upload the source\n`image` and a `character_reference_images` image (or use a saved\ncharacter) using `multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-remix"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The remixed images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemixImageIdeogramV3CharacterResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"A referenced resource was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"Use `multipart/form-data` to upload the source `image` and any `character_reference_images` or `style_reference_images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt that guides the remix."},"image":{"type":"string","format":"binary","description":"The image to transform (max 50MB). JPEG, PNG, and WEBP are supported. Multipart requests only. The uploaded image is saved to your account as the remix's source. Omit `resolution` and `aspect_ratio` to keep its shape; a different requested shape center-crops the source to fit first."},"image_weight":{"type":"integer","minimum":1,"maximum":100,"description":"Optional. How closely the result should follow the source image, from 1 to 100. When omitted the server chooses a value from your prompt, which is the usual case."},"negative_prompt":{"type":"string","maxLength":10000,"description":"Description of what to exclude from the images. Descriptions in the prompt take precedence over descriptions in the negative prompt."},"character_reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"An image to use as the character reference (max 25MB). JPEG, PNG, and WEBP are supported."},"character_reference_mask":{"type":"string","format":"binary","description":"Optional grayscale mask for the character reference image, the same size as that image, marking where the character is. Only JPEG, PNG, and WEBP formats are supported. Multipart requests only; cannot be combined with `character_reference_collection_id`."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"resolution":{"$ref":"#/components/schemas/ResolutionV3"},"aspect_ratio":{"$ref":"#/components/schemas/AspectRatioV3"},"rendering_speed":{"$ref":"#/components/schemas/V2ImageRemixIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed","default":"default","description":"The rendering speed to use."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). Defaults to `auto`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"style_type":{"$ref":"#/components/schemas/V2ImageRemixIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaStyleType","default":"auto","description":"The style type to remix the character with. Defaults to `auto`."},"style_reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Images to use as style references (max 10, max 25MB each). JPEG, PNG, and WEBP are supported."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Opt this request into post-generation copyright detection. Adds detection latency; flagged images come back with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll for completion and results with `GET /v2/generations/{generation_id}` using the returned `generation_id`."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt","image","character_reference_images"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/remix/ideogram-3-custom-model":{"post":{"operationId":"imagesRemix_post_remix_image_v2_ideogram_v3_custom_model","summary":"Remix with a custom Ideogram 3.0 model","description":"Transform an existing image with a custom Ideogram 3.0 model that your\nuser or organization can access, guided by a text prompt. Upload the\nsource `image` using `multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-remix"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The remixed images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemixImageIdeogramV3CustomModelResponse"}}}},"400":{"description":"Invalid input or an unsupported model option.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"The custom model does not exist or is not accessible to this user or organization.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"A referenced resource was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"Use `multipart/form-data` to upload the source `image` and any `style_reference_images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt that guides the remix."},"custom_model_uri":{"type":"string","pattern":"^model/[^/]+/version/[^/]+$","minLength":1,"maxLength":512,"description":"The custom model URI returned by the custom-model API, in the form `model/<model_name>/version/<version_name>`. The authenticated user or organization must have access to the model."},"image":{"type":"string","format":"binary","description":"The image to transform (max 50MB). JPEG, PNG, and WEBP are supported. Multipart requests only. The uploaded image is saved to your account as the remix's source. Omit `resolution` and `aspect_ratio` to keep its shape; a different requested shape center-crops the source to fit first."},"image_weight":{"type":"integer","minimum":1,"maximum":100,"description":"Optional. How closely the result should follow the source image, from 1 to 100. When omitted the server chooses a value from your prompt, which is the usual case."},"negative_prompt":{"type":"string","maxLength":10000,"description":"Description of what to exclude from the images. Descriptions in the prompt take precedence over descriptions in the negative prompt."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"resolution":{"$ref":"#/components/schemas/ResolutionV3"},"aspect_ratio":{"$ref":"#/components/schemas/AspectRatioV3"},"rendering_speed":{"$ref":"#/components/schemas/V2ImageRemixIdeogram3CustomModelPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed","description":"The rendering speed to use. When omitted, the server chooses a speed supported by the selected custom model."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). Defaults to `auto`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"color_palette":{"$ref":"#/components/schemas/IdeogramColorPalette"},"style_codes":{"type":"array","items":{"$ref":"#/components/schemas/StyleCode"},"description":"A list of 8-character hexadecimal codes representing the style of the image. Refer to each endpoint for supported combinations with style types, presets, and reference images."},"style_preset":{"$ref":"#/components/schemas/IdeogramV3StylePreset","description":"A predefined style preset to apply to the remixed images. Cannot be combined with style codes or style references."},"style_reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Images to use as style references (max 10, max 25MB each). JPEG, PNG, and WEBP are supported. Multipart requests only."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Opt this request into post-generation copyright detection. Adds detection latency; flagged images come back with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll for completion and results with `GET /v2/generations/{generation_id}` using the returned `generation_id`."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt","custom_model_uri","image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/remix/ideogram-2a":{"post":{"operationId":"imagesRemix_post_remix_image_v2_ideogram_v2_a","summary":"Remix with Ideogram 2a","description":"Transform an existing image with Ideogram 2a, guided by a text\nprompt. Upload the source `image` using `multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-remix"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The remixed images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemixImageIdeogramV2AResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"A referenced resource was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"Use `multipart/form-data` to upload the source `image`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt that guides the remix."},"image":{"type":"string","format":"binary","description":"The image to transform (max 50MB). JPEG, PNG, and WEBP are supported. Multipart requests only. The uploaded image is saved to your account as the remix's source. Omit `aspect_ratio` to keep its shape; a different requested shape center-crops the source to fit first."},"image_weight":{"type":"integer","minimum":1,"maximum":100,"description":"Optional. How closely the result should follow the source image, from 1 to 100."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"aspect_ratio":{"$ref":"#/components/schemas/AspectRatioV3"},"rendering_speed":{"$ref":"#/components/schemas/V2ImageRemixIdeogram2APostRequestBodyContentMultipartFormDataSchemaRenderingSpeed","default":"default","description":"The rendering speed to use. `turbo` generates faster at a lower cost, while `quality` prioritizes the highest-quality result."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). Defaults to `auto`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"style_type":{"$ref":"#/components/schemas/IdeogramV2StyleType"},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Opt this request into post-generation copyright detection. Adds detection latency; flagged images come back with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll for completion and results with `GET /v2/generations/{generation_id}` using the returned `generation_id`."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt","image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/remix/ideogram-2":{"post":{"operationId":"imagesRemix_post_remix_image_v2_ideogram_v2","summary":"Remix with Ideogram 2.0","description":"Transform an existing image with Ideogram 2.0, guided by a text\nprompt. Upload the source `image` using `multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-remix"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The remixed images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemixImageIdeogramV2Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"A referenced resource was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"Use `multipart/form-data` to upload the source `image`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt that guides the remix."},"image":{"type":"string","format":"binary","description":"The image to transform (max 50MB). JPEG, PNG, and WEBP are supported. Multipart requests only. The uploaded image is saved to your account as the remix's source. Omit `aspect_ratio` to keep its shape; a different requested shape center-crops the source to fit first."},"image_weight":{"type":"integer","minimum":1,"maximum":100,"description":"Optional. How closely the result should follow the source image, from 1 to 100."},"negative_prompt":{"type":"string","maxLength":10000,"description":"Description of what to exclude from the images. The prompt takes precedence over the negative prompt."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"aspect_ratio":{"$ref":"#/components/schemas/AspectRatioV3"},"rendering_speed":{"$ref":"#/components/schemas/V2ImageRemixIdeogram2PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed","default":"default","description":"The rendering speed to use. `turbo` generates faster at a lower cost, while `quality` prioritizes the highest-quality result."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). Defaults to `auto`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"style_type":{"$ref":"#/components/schemas/IdeogramV2StyleType"},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Opt this request into post-generation copyright detection. Adds detection latency; flagged images come back with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll for completion and results with `GET /v2/generations/{generation_id}` using the returned `generation_id`."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt","image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/inpaint/ideogram-3":{"post":{"operationId":"imagesInpaint_post_inpaint_image_v2_ideogram_v3","summary":"Inpaint with Ideogram 3.0","description":"Repaint the masked region of a source image with Ideogram 3.0, guided\nby a text prompt. Upload the source `image` and its `mask` using\n`multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.","tags":["images-inpaint"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The repainted images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InpaintImageIdeogramV3Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"A referenced resource was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"Use `multipart/form-data` to upload the source `image`, its `mask`, and any `style_reference_images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt describing the repainted result."},"image":{"type":"string","format":"binary","description":"The source image to repaint (max 25MB). JPEG, PNG, and WEBP are supported. Multipart requests only. The output matches its size, snapped to the nearest supported resolution."},"mask":{"type":"string","format":"binary","description":"A black-and-white mask the same size as the source image. Black marks the region to repaint. JPEG, PNG, and WEBP are supported. Multipart requests only."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). Defaults to `auto`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"rendering_speed":{"$ref":"#/components/schemas/V2ImageInpaintIdeogram3PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed","default":"default","description":"The rendering speed to use."},"style_type":{"$ref":"#/components/schemas/IdeogramV3StyleType","default":"general"},"style_preset":{"$ref":"#/components/schemas/IdeogramV3StylePreset","description":"A predefined style preset to apply to the repainted images. Cannot be combined with style codes or style references."},"style_codes":{"type":"array","items":{"$ref":"#/components/schemas/StyleCode"},"description":"A list of 8-character hexadecimal codes representing the style of the image. Refer to each endpoint for supported combinations with style types, presets, and reference images."},"style_reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Images to use as style references (max 10, max 25MB each). JPEG, PNG, and WEBP are supported."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Opt this request into post-generation copyright detection. Adds detection latency; flagged images come back with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the repainted images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll for completion and results with `GET /v2/generations/{generation_id}` using the returned `generation_id`."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt","image","mask"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/inpaint/ideogram-3-character":{"post":{"operationId":"imagesInpaint_post_inpaint_image_v2_ideogram_v3_character","summary":"Inpaint a consistent character with Ideogram 3.0","description":"Repaint the masked region of a source image with Ideogram 3.0 so it\nfeatures a consistent character. Upload the source `image`, its\n`mask`, and a `character_reference_images` image (or use a saved\ncharacter) using `multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.","tags":["images-inpaint"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The repainted images (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InpaintImageIdeogramV3CharacterResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"A referenced resource was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"Use `multipart/form-data` to upload the source `image`, its `mask`, and any `character_reference_images` or `style_reference_images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt describing the repainted result."},"image":{"type":"string","format":"binary","description":"The source image to repaint (max 25MB). JPEG, PNG, and WEBP are supported. Multipart requests only. The output matches its size, snapped to the nearest supported resolution."},"mask":{"type":"string","format":"binary","description":"A black-and-white mask the same size as the source image. Black marks the region to repaint. JPEG, PNG, and WEBP are supported. Multipart requests only."},"character_reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"An image to use as the character reference (max 25MB). JPEG, PNG, and WEBP are supported."},"character_reference_mask":{"type":"string","format":"binary","description":"Optional grayscale mask for the character reference image, the same size as that image, marking where the character is. Only JPEG, PNG, and WEBP formats are supported. Multipart requests only; cannot be combined with `character_reference_collection_id`."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). Defaults to `auto`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"rendering_speed":{"$ref":"#/components/schemas/V2ImageInpaintIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed","default":"default","description":"The rendering speed to use."},"style_type":{"$ref":"#/components/schemas/V2ImageInpaintIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaStyleType","default":"auto","description":"The style type to repaint the character with. Defaults to `auto`. `realistic` and `fiction` are supported for character-only requests; style codes or style references (not both) require `auto`. For API-key callers, combining a style with a character requires that feature to be enabled for their account."},"style_codes":{"type":"array","items":{"$ref":"#/components/schemas/StyleCode"},"description":"A list of 8-character hexadecimal codes representing the style of the image. Refer to each endpoint for supported combinations with style types, presets, and reference images."},"style_reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Images to use as style references (max 10, max 25MB each). JPEG, PNG, and WEBP are supported. Cannot be combined with `style_codes`."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Opt this request into post-generation copyright detection. Adds detection latency; flagged images come back with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the repainted images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll for completion and results with `GET /v2/generations/{generation_id}` using the returned `generation_id`."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt","image","mask","character_reference_images"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/inpaint/ideogram-3-custom-model":{"post":{"operationId":"imagesInpaint_post_inpaint_image_v2_ideogram_v3_custom_model","summary":"Inpaint with a custom Ideogram 3.0 model","description":"Repaint the masked region of a source image with a custom Ideogram 3.0\nmodel, passed as `custom_model_uri`. Upload the source `image` and its\n`mask` using `multipart/form-data`. Returns results directly by\ndefault; set `async` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.","tags":["images-inpaint"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The repainted images, or an acknowledgement for an asynchronous request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InpaintImageIdeogramV3CustomModelResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"The caller cannot use the requested custom model.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"A referenced resource was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"Use `multipart/form-data` to upload the source `image`, its `mask`, and any `style_reference_images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt describing the repainted result."},"custom_model_uri":{"type":"string","pattern":"^model/[^/]+/version/[^/]+$","minLength":1,"maxLength":512,"description":"The custom model URI returned by the custom-model API, in the form `model/<model_name>/version/<version_name>`. The authenticated user or organization must have access to the model."},"image":{"type":"string","format":"binary","description":"The source image to repaint (max 25MB), as JPEG, PNG, or WEBP. Multipart requests only."},"mask":{"type":"string","format":"binary","description":"A black-and-white mask the same size as the source image, as JPEG, PNG, or WEBP. Black marks the region to repaint. Multipart requests only."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). Defaults to `auto`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"rendering_speed":{"$ref":"#/components/schemas/V2ImageInpaintIdeogram3CustomModelPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed","description":"The rendering speed to use. When omitted, the server chooses a speed supported by the selected custom model."},"style_preset":{"$ref":"#/components/schemas/IdeogramV3StylePreset","description":"A predefined style preset. Cannot be combined with style codes or style references."},"style_codes":{"type":"array","items":{"$ref":"#/components/schemas/StyleCode"},"description":"A list of 8-character hexadecimal codes representing the style of the image. Refer to each endpoint for supported combinations with style types, presets, and reference images."},"style_reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Images to use as style references (max 10, max 25MB each), as JPEG, PNG, or WEBP."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Opt this request into post-generation copyright detection. Adds detection latency; flagged images return `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false, wait until the images are ready. When true, return as soon as the request is accepted and poll `GET /v2/generations/{generation_id}`."}},"required":["prompt","custom_model_uri","image","mask"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/reframe/ideogram-3":{"post":{"operationId":"reframe_ideogramV3","summary":"Reframe with Ideogram 3.0","description":"Expand an image to a new Ideogram 3.0 resolution, keeping the source\npixels in the center and filling the new area. Upload the source\n`image` using `multipart/form-data`. Returns results directly by\ndefault; set `async` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["reframe"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The reframed images, or an acknowledgement for an asynchronous request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReframeImageIdeogramV3Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"A referenced resource was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"Use `multipart/form-data` to upload the source `image` and any `style_reference_images`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The JPEG, PNG, or WEBP image to reframe (max 25MB). Multipart requests only."},"resolution":{"$ref":"#/components/schemas/ResolutionV3"},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"rendering_speed":{"$ref":"#/components/schemas/V2ImageReframeIdeogram3PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed","default":"default"},"style_preset":{"$ref":"#/components/schemas/IdeogramV3StylePreset"},"color_palette":{"$ref":"#/components/schemas/IdeogramColorPalette"},"style_codes":{"type":"array","items":{"$ref":"#/components/schemas/StyleCode"},"description":"A list of 8-character hexadecimal codes representing the style of the image. Refer to each endpoint for supported combinations with style types, presets, and reference images."},"style_reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"JPEG, PNG, or WEBP style reference images (max 10, max 25MB each). Multipart requests only. Cannot be combined with `style_preset` or `style_codes`."},"async":{"type":"boolean","default":false,"description":"Return immediately instead of waiting for reframed images."}},"required":["image","resolution"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/reframe/nano-banana-2":{"post":{"operationId":"reframe_nanoBanana2","summary":"Reframe with Nano Banana 2","description":"Expand an image to a new aspect ratio with Nano Banana 2. Upload the\nsource `image` using `multipart/form-data`. Always asynchronous:\nreturns a `generation_id`; poll `GET /v2/generations/{generation_id}`\nfor results.\n","tags":["reframe"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"An acknowledgement to poll with `GET /v2/generations/{generation_id}`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReframeImageNanoBanana2Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"A referenced resource was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The JPEG, PNG, or WEBP image to reframe (max 50MB)."},"aspect_ratio":{"$ref":"#/components/schemas/NanoBanana2ReframeAspectRatio"},"num_images":{"type":"integer","minimum":1,"maximum":4,"default":1,"description":"The number of output images to generate."}},"required":["image","aspect_ratio"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/upscale/auto":{"post":{"operationId":"tools_post_upscale","summary":"Upscale with automatic model selection","description":"Upscale an image to 2x, 4x, or 8x its original resolution with a model\nIdeogram picks per request; the choice may change over time. Upload the\nsource `image` using `multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["tools"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The upscaled image (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpscaleToolResponse"}}}},"400":{"description":"Invalid input provided, or the output would exceed the 8K limit.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"Not authorized to upscale images.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"The source image was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to upscale one image. Upload the source `image` using `multipart/form-data`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source image to upscale, in a common format such as JPEG, PNG, or WEBP, up to 50MB. Multipart requests only. The uploaded image is used for this request only and is not stored."},"upscale_factor":{"$ref":"#/components/schemas/V2ImageUpscaleAutoPostRequestBodyContentMultipartFormDataSchemaUpscaleFactor","default":"x2","description":"How much to enlarge the source image: 2x, 4x, or 8x its original width and height. Rejected when the output would exceed 8192px on either side."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request blocks until the upscaled image is ready and returns it in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/upscale/nano-banana-pro":{"post":{"operationId":"imagesUpscale_post_upscale_image_nano_banana_pro","summary":"Upscale with Nano Banana Pro","description":"Regenerate an image at a higher `resolution_tier` (1K, 2K, or 4K) while\npreserving its content, composition, and style. Upload the source\n`image` using `multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-upscale"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The upscaled image (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpscaleImageNanoBananaProResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"The source image was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to upscale one image with Nano Banana Pro. Upload the source `image` using `multipart/form-data`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source image to upscale, in a common format such as JPEG, PNG, or WEBP, up to 50MB. Multipart requests only. The uploaded image is used for this request only and is not stored."},"prompt":{"type":"string","maxLength":2000,"description":"Optional short guidance for the enhancement, appended to the model's upscaling instruction. When omitted, the image is upscaled as-is."},"resolution_tier":{"$ref":"#/components/schemas/V2ImageUpscaleNanoBananaProPostRequestBodyContentMultipartFormDataSchemaResolutionTier","default":"2K","description":"The output resolution tier. The model sizes its output by tier at the source image's aspect ratio; exact pixel dimensions cannot be requested. Rejected when the source is already at or above the requested tier. Defaults to \"2K\"."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request blocks until the upscaled image is ready and returns it in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/upscale/topaz-bloom-2":{"post":{"operationId":"imagesUpscale_post_upscale_image_topaz_bloom2","summary":"Upscale with Topaz Bloom 2","description":"Creatively upscale an image to 2x, 4x, or 8x its original resolution,\noptionally guided by a `prompt`. Upload the source `image` using\n`multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-upscale"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The upscaled image (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpscaleImageTopazBloom2Response"}}}},"400":{"description":"Invalid input provided, or the output would exceed the 8K limit.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"The source image was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to upscale one image with Topaz Bloom 2. Upload the source `image` using `multipart/form-data`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source image to upscale, in a common format such as JPEG, PNG, or WEBP, up to 50MB. Multipart requests only. The uploaded image is used for this request only and is not stored."},"upscale_factor":{"$ref":"#/components/schemas/V2ImageUpscaleTopazBloom2PostRequestBodyContentMultipartFormDataSchemaUpscaleFactor","default":"x2","description":"How much to enlarge the source image: 2x, 4x, or 8x its original width and height. Rejected when the output would exceed 8192px on either side."},"prompt":{"type":"string","maxLength":1024,"default":"","description":"An optional prompt guiding the detail the model regenerates while enlarging the image. Leave empty to enhance the source image as-is."},"creativity":{"type":"integer","minimum":1,"maximum":9,"default":3,"description":"How strongly the model reinterprets the source while enlarging it, from 1 (most faithful) to 9 (most creative)."},"color_preservation":{"type":"boolean","default":true,"description":"When true (the default), the output keeps the source image's colors. Set to false to let the model adjust colors while enhancing."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request blocks until the upscaled image is ready and returns it in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/upscale/topaz-redefine":{"post":{"operationId":"imagesUpscale_post_upscale_image_topaz_redefine","summary":"Upscale with Topaz Redefine","description":"Creatively upscale an image to 2x, 4x, or 8x its original resolution,\nguided by an optional `prompt` or `autoprompt`. Upload the source\n`image` using `multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-upscale"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The upscaled image (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpscaleImageTopazRedefineResponse"}}}},"400":{"description":"Invalid input provided, or the output would exceed the 8K limit.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"The source image was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to upscale one image with Topaz Redefine. Upload the source `image` using `multipart/form-data`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source image to upscale, in a common format such as JPEG, PNG, or WEBP, up to 50MB. Multipart requests only. The uploaded image is used for this request only and is not stored."},"upscale_factor":{"$ref":"#/components/schemas/V2ImageUpscaleTopazRedefinePostRequestBodyContentMultipartFormDataSchemaUpscaleFactor","default":"x2","description":"How much to enlarge the source image: 2x, 4x, or 8x its original width and height. Rejected when the output would exceed 8192px on either side."},"prompt":{"type":"string","maxLength":1024,"default":"","description":"An optional prompt guiding the detail the model regenerates while enlarging the image. Leave empty to enhance the source image as-is."},"creativity":{"type":"integer","minimum":1,"maximum":9,"default":3,"description":"How strongly the model reinterprets the source while enlarging it, from 1 (most faithful) to 9 (most creative)."},"autoprompt":{"type":"boolean","default":false,"description":"When true, the model describes the image itself and any `prompt` is ignored."},"texture":{"type":"integer","minimum":1,"maximum":5,"default":1,"description":"How much fine texture the model adds, from 1 to 5. Keep it low at low creativity."},"detail":{"type":"boolean","default":false,"description":"Apply a detail adjustment after rendering. When true, `detail_strength` sets how much."},"detail_strength":{"type":"string","title":"float","description":"Detail adjustment intensity, from 0 to 10."},"sharpen":{"type":"string","title":"float","description":"Edge sharpening applied after enlarging, from 0 to 1. Omit to let the model choose per image."},"denoise":{"type":"string","title":"float","description":"Noise and grain reduction, from 0 to 1. Omit to let the model choose per image."},"face_enhancement":{"type":"boolean","description":"Recover detail in faces. When true, `face_enhancement_strength` and `face_enhancement_creativity` are required."},"face_enhancement_strength":{"type":"string","title":"float","description":"How strongly faces are recovered, from 0 to 1."},"face_enhancement_creativity":{"type":"string","title":"float","description":"How freely face recovery may reinterpret features, from 0 (faithful) to 1 (creative)."},"subject_detection":{"$ref":"#/components/schemas/V2ImageUpscaleTopazRedefinePostRequestBodyContentMultipartFormDataSchemaSubjectDetection","description":"Where enhancements apply. Omit to let the model choose per image."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request blocks until the upscaled image is ready and returns it in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/upscale/topaz-standard-2":{"post":{"operationId":"imagesUpscale_post_upscale_image_topaz_standard_v2","summary":"Upscale with Topaz Standard V2","description":"Upscale an image to 2x, 4x, or 8x its original resolution; no prompt is\nneeded. Upload the source `image` using `multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-upscale"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The upscaled image (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpscaleImageTopazStandardV2Response"}}}},"400":{"description":"Invalid input provided, or the output would exceed the 8K limit.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"The source image was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to upscale one image with Topaz Standard V2. Upload the source `image` using `multipart/form-data`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source image to upscale, in a common format such as JPEG, PNG, or WEBP, up to 50MB. Multipart requests only. The uploaded image is used for this request only and is not stored."},"upscale_factor":{"$ref":"#/components/schemas/V2ImageUpscaleTopazStandard2PostRequestBodyContentMultipartFormDataSchemaUpscaleFactor","default":"x2","description":"How much to enlarge the source image: 2x, 4x, or 8x its original width and height. Rejected when the output would exceed 8192px on either side."},"strength":{"type":"string","title":"float","description":"Overall intensity of the enhancement model, from 0.01 to 1. Higher values look crisper but can turn unrealistic. Omit to let the model choose per image."},"sharpen":{"type":"string","title":"float","description":"Edge sharpening applied after enlarging, from 0 to 1. Omit to let the model choose per image."},"denoise":{"type":"string","title":"float","description":"Noise and grain reduction, from 0 to 1. Omit to let the model choose per image."},"fix_compression":{"type":"string","title":"float","description":"Compression artifact removal, from 0 to 1. Omit to let the model choose per image."},"face_enhancement":{"type":"boolean","description":"Recover detail in faces. When true, `face_enhancement_strength` and `face_enhancement_creativity` are required."},"face_enhancement_strength":{"type":"string","title":"float","description":"How strongly faces are recovered, from 0 to 1."},"face_enhancement_creativity":{"type":"string","title":"float","description":"How freely face recovery may reinterpret features, from 0 (faithful) to 1 (creative)."},"subject_detection":{"$ref":"#/components/schemas/V2ImageUpscaleTopazStandard2PostRequestBodyContentMultipartFormDataSchemaSubjectDetection","description":"Where enhancements apply. Omit to let the model choose per image."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request blocks until the upscaled image is ready and returns it in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/upscale/topaz-text-refine":{"post":{"operationId":"imagesUpscale_post_upscale_image_topaz_text_refine","summary":"Upscale with Topaz Text Refine","description":"Upscale an image to 2x, 4x, or 8x its original resolution; no prompt is\nneeded. Upload the source `image` using `multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-upscale"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The upscaled image (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpscaleImageTopazTextRefineResponse"}}}},"400":{"description":"Invalid input provided, or the output would exceed the 8K limit.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"The source image was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to upscale one image with Topaz Text Refine. Upload the source `image` using `multipart/form-data`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source image to upscale, in a common format such as JPEG, PNG, or WEBP, up to 50MB. Multipart requests only. The uploaded image is used for this request only and is not stored."},"upscale_factor":{"$ref":"#/components/schemas/V2ImageUpscaleTopazTextRefinePostRequestBodyContentMultipartFormDataSchemaUpscaleFactor","default":"x2","description":"How much to enlarge the source image: 2x, 4x, or 8x its original width and height. Rejected when the output would exceed 8192px on either side."},"strength":{"type":"string","title":"float","description":"Overall intensity of the enhancement model, from 0.01 to 1. Higher values look crisper but can turn unrealistic. Omit to let the model choose per image."},"sharpen":{"type":"string","title":"float","description":"Edge sharpening applied after enlarging, from 0 to 1. Omit to let the model choose per image."},"denoise":{"type":"string","title":"float","description":"Noise and grain reduction, from 0 to 1. Omit to let the model choose per image."},"fix_compression":{"type":"string","title":"float","description":"Compression artifact removal, from 0 to 1. Omit to let the model choose per image."},"face_enhancement":{"type":"boolean","description":"Recover detail in faces. When true, `face_enhancement_strength` and `face_enhancement_creativity` are required."},"face_enhancement_strength":{"type":"string","title":"float","description":"How strongly faces are recovered, from 0 to 1."},"face_enhancement_creativity":{"type":"string","title":"float","description":"How freely face recovery may reinterpret features, from 0 (faithful) to 1 (creative)."},"subject_detection":{"$ref":"#/components/schemas/V2ImageUpscaleTopazTextRefinePostRequestBodyContentMultipartFormDataSchemaSubjectDetection","description":"Where enhancements apply. Omit to let the model choose per image."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request blocks until the upscaled image is ready and returns it in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/upscale/topaz-wonder-3-5":{"post":{"operationId":"imagesUpscale_post_upscale_image_topaz_wonder35","summary":"Upscale with Topaz Wonder 3.5","description":"Upscale an image to 2x, 4x, or 8x its original resolution, with\n`enhancement_strength` controlling how strongly detail is reconstructed.\nUpload the source `image` using `multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-upscale"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The upscaled image (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpscaleImageTopazWonder35Response"}}}},"400":{"description":"Invalid input provided, or the output would exceed the 8K limit.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"The source image was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to upscale one image with Topaz Wonder 3.5. Upload the source `image` using `multipart/form-data`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source image to upscale, in a common format such as JPEG, PNG, or WEBP, up to 50MB. Multipart requests only. The uploaded image is used for this request only and is not stored."},"upscale_factor":{"$ref":"#/components/schemas/V2ImageUpscaleTopazWonder35PostRequestBodyContentMultipartFormDataSchemaUpscaleFactor","default":"x2","description":"How much to enlarge the source image: 2x, 4x, or 8x its original width and height. Rejected when the output would exceed 8192px on either side."},"enhancement_strength":{"$ref":"#/components/schemas/V2ImageUpscaleTopazWonder35PostRequestBodyContentMultipartFormDataSchemaEnhancementStrength","default":"high","description":"How strongly the generative model reconstructs detail while upscaling. Lower values stay closer to the source image; higher values produce a more enhanced result."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request blocks until the upscaled image is ready and returns it in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/upscale/topaz-wonder-4":{"post":{"operationId":"imagesUpscale_post_upscale_image_topaz_wonder4","summary":"Upscale with Topaz Wonder 4","description":"Upscale an image to 2x or 4x its original resolution while removing\nnoise, blur, and compression artifacts and recovering faces in one\npass; no prompt or model settings are needed. Output is limited to 100\nmegapixels. Upload the source `image` using `multipart/form-data`.\nReturns results directly by default; set `async` or supply a\n`webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["images-upscale"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The upscaled image (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpscaleImageTopazWonder4Response"}}}},"400":{"description":"Invalid input provided, or the output would exceed 100 megapixels.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"The endpoint is not enabled for this account.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"The source image was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to upscale one image with Topaz Wonder 4. Upload the source `image` using `multipart/form-data`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source image to upscale, in a common format such as JPEG, PNG, or WEBP, up to 50MB. Multipart requests only. The uploaded image is used for this request only and is not stored."},"upscale_factor":{"$ref":"#/components/schemas/V2ImageUpscaleTopazWonder4PostRequestBodyContentMultipartFormDataSchemaUpscaleFactor","default":"x2","description":"How much to enlarge the source image: 2x or 4x its original width and height. Rejected when the output would exceed 100 megapixels."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request blocks until the upscaled image is ready and returns it in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/replace-background/ideogram-3":{"post":{"operationId":"tool_replaceBackgroundIdeogramV3","summary":"Replace background with Ideogram 3.0","description":"Replace the background of an image from a text prompt with Ideogram 3.0,\nkeeping the automatically detected foreground subject; no mask is\nneeded. Upload the source `image` using `multipart/form-data`.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}`\nor supply a `webhook_url`.\n","tags":["tool"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Background replacement accepted for asynchronous processing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceBackgroundResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"Not authorized to replace backgrounds.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"The source image was not found or is not readable.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"503":{"description":"Background replacement is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"The source image and a prompt describing its new background.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source image. JPEG, PNG, WEBP, HEIF, AVIF, GIF, BMP, TIFF, and\nMPO are supported, up to 50 MB. Multipart requests only.\nThe longer side must be at most 3 times the shorter side; wider\naspect ratios are rejected with a 400.\n"},"prompt":{"type":"string","pattern":"\\S","minLength":1,"maxLength":4000,"description":"Plain-language description of the desired new background."},"rendering_speed":{"$ref":"#/components/schemas/V2ImageReplaceBackgroundIdeogram3PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed","default":"default","description":"The rendering speed to use."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"private":{"type":"boolean","description":"Whether to keep the result private. When omitted, defaults to your\nplan's setting. Enterprise generations are always private.\n"},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image","prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/replace-background/gpt-image-2":{"post":{"operationId":"tool_replaceBackground","summary":"Replace background with GPT Image 2","description":"Replace the background of an image from a text prompt while keeping the\nautomatically detected foreground subject; no mask is needed. Upload\nthe source `image` using `multipart/form-data`.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}`\nor supply a `webhook_url`.\n","tags":["tool"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Background replacement accepted for asynchronous processing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceBackgroundResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"Not authorized to replace backgrounds.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"The source image was not found or is not readable.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"503":{"description":"Background replacement is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"The source image and a prompt describing its new background.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source image. JPEG, PNG, WEBP, HEIF, AVIF, GIF, BMP, TIFF, and\nMPO are supported, up to 50 MB. Multipart requests only.\n"},"prompt":{"type":"string","pattern":"\\S","minLength":1,"maxLength":4000,"description":"Plain-language description of the desired new background."},"quality":{"$ref":"#/components/schemas/ReplaceBackgroundQuality","default":"high","description":"The generation quality level. Defaults to `high`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"private":{"type":"boolean","description":"Whether to keep the result private. When omitted, defaults to your\nplan's setting. Enterprise generations are always private.\n"},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image","prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/remove-background/ideogram-1":{"post":{"operationId":"tool_removeBackground","summary":"Remove background","description":"Remove the background from an image and return the foreground as a\ntransparent PNG. Upload the source `image` using `multipart/form-data`.\nReturns the result directly by default; set `async` to get a\n`generation_id` and poll `GET /v2/generations/{generation_id}`.\n","tags":["tool"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The foreground image (synchronous requests), or an acknowledgement to poll (`async` requests). If a synchronous request fails after the response has started streaming, the HTTP status is already 200; the body contains `error` and `status_code` instead.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveBackgroundV2Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"Not authorized to remove backgrounds.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"The source image was not found or is not readable.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"The background-removal request failed.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"Background removal is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source image. JPEG, PNG, or WebP, up to 25MB. Multipart requests only."},"private":{"type":"boolean","description":"Whether to keep the result out of the public gallery. When omitted,\ndefaults to your plan's setting, or public if your plan has none.\nEnterprise generations are always private.\n"},"async":{"type":"boolean","default":false,"description":"When false (the default), wait for and return the foreground image. When true, return as soon as the request is accepted; poll `GET /v2/generations/{generation_id}` for the result."}},"required":["image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/remove-object/ideogram-1":{"post":{"operationId":"objectRemoval_post_remove_object_from_v2_assets","summary":"Remove an object","description":"Remove a masked object from an image. Upload the source `image` and a\n`mask` of the same size using `multipart/form-data`. Returns a\n`generation_id`; poll `GET /v2/generations/{generation_id}` for the\nresult.\n","tags":["object-removal"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Object removal request accepted; poll for completion with `GET /v2/generations/{generation_id}`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveObjectFromV2AssetsResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"Not authorized to remove an object.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"The source image or mask was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"413":{"description":"An uploaded source or mask image is too large.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"The source `image` and `mask`, uploaded using `multipart/form-data`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source image to remove an object from. JPEG, PNG, or WEBP, up to 50MB. Multipart requests only."},"mask":{"type":"string","format":"binary","description":"A black-and-white mask the same size as the image; white (>= 128) marks the region to remove. JPEG, PNG, or WEBP, up to 50MB. Multipart requests only."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["image","mask"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/describe/ideogram-4":{"post":{"operationId":"imageDescribe_post_describe_image_ideogram_v4","summary":"Describe with Ideogram 4.0","description":"Describe an image as a structured `V4JsonPrompt` with Ideogram's 4.0\nimage captioner (a fine-tune of the Qwen3-VL vision-language model).\nUpload the image as `image` using `multipart/form-data`; the\n`json_prompt` is returned directly and can be passed to the\n`/v1/ideogram-v4/generate` endpoints.\n","tags":["image-describe"],"responses":{"200":{"description":"Structured prompt generated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DescribeImageIdeogramV4Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"The source image was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"Image failed the safety check.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageSafetyError"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to describe one image. Send it as `multipart/form-data` with the `image` to describe.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The image to describe (max 10MB). JPEG, PNG, and WebP are supported. Multipart requests only."},"include_bbox":{"type":"boolean","default":true,"description":"Whether to include bounding boxes for the subjects and text in the returned `json_prompt`. Defaults to true, so the prompt preserves the layout of the described image."},"include_style_descriptions":{"type":"boolean","default":false,"description":"Whether to include a free-form style description in the returned `json_prompt`. Defaults to false."},"include_tags":{"type":"boolean","default":false,"description":"Whether to include free-form tags in the returned `json_prompt`. Defaults to false."}},"required":["image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/describe/ideogram-3":{"post":{"operationId":"imageDescribe_post_describe_image_ideogram_v3","summary":"Describe with Ideogram 3.0","description":"Generate a natural-language description of an image with Ideogram's 3.0\nimage captioner (a fine-tune of the Qwen2-VL vision-language model).\nUpload the image as `image` using `multipart/form-data`; the description\nis returned directly.\n","tags":["image-describe"],"responses":{"200":{"description":"Description(s) generated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DescribeImageIdeogramV3Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"404":{"description":"The source image was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"Image failed the safety check.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageSafetyError"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to describe one image. Send it as `multipart/form-data` with the `image` to describe.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The image to describe (max 10MB). JPEG, PNG, and WebP are supported. Multipart requests only."}},"required":["image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/design/layerize/ideogram-3":{"post":{"operationId":"design_post_layerize_design_ideogram_v3","summary":"Layerize text with Ideogram 3.0","description":"Turn a flat image into an editable design: detected text is returned as\npositioned text blocks with matched fonts, sizes, and colors, alongside\na text-free base image. Upload the image as `image` using\n`multipart/form-data`. Returns results directly by default; set `async`\nor supply a `webhook_url` to get a `generation_id` and poll\n`GET /v2/generations/{generation_id}`.\n","tags":["design"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The layerized design (synchronous requests), or an acknowledgement to poll with `GET /v2/generations/{generation_id}` (`async` requests).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LayerizeDesignIdeogramV3Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"Not authorized to layerize images.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"The source image was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to layerize the text in one image. Send it as `multipart/form-data` with the source `image`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source image to layerize (max 50MB). Common image formats such as JPEG, PNG, and WEBP are supported. Multipart requests only."},"prompt":{"type":["string","null"],"maxLength":10000,"description":"A description of the image, used to guide text detection. When omitted, detection runs on the image alone."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"font_candidate_files":{"type":"array","items":{"type":"string","format":"binary"},"description":"Candidate font files to make available for text style matching. Supported formats .ttf, .otf, .woff, .woff2 (max 5MB each, maximum 5 files). Multipart requests only."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until layerization is complete and returns the result in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/video/generate/kling-3-standard-image-to-video":{"post":{"operationId":"videoGenerate_post_generate_video_kling_v3_standard_image_to_video","summary":"Image to video with Kling v3 Standard","description":"Generate a video from a first-frame image and a text prompt with Kling\nv3 Standard. Upload the first frame as `image`, and optionally a final\nframe as `end_image`, using `multipart/form-data`.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}`\nor supply a `webhook_url`.\n","tags":["video-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"An acknowledgement to poll with `GET /v2/generations/{generation_id}`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVideoKlingV3Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"This account does not have access to this model.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"The first-frame image was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate a video from a first-frame image with Kling v3 Standard. Upload the first frame as `image` using `multipart/form-data`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The first-frame image to animate, in a common format such as JPEG, PNG, or WEBP, up to 50MB. Multipart requests only. The uploaded image is used for this request only and is not stored."},"end_image":{"type":"string","format":"binary","description":"An optional final frame, in a common format such as JPEG, PNG, or WEBP, up to 50MB. Multipart requests only. When supplied, the video transitions from the first frame to this one."},"prompt":{"type":"string","minLength":1,"maxLength":2000,"description":"A natural-language prompt describing how the first frame should animate."},"negative_prompt":{"type":"string","maxLength":2000,"description":"Description of what to keep out of the video. Descriptions in the prompt take precedence over descriptions in the negative prompt."},"duration":{"type":"integer","minimum":3,"maximum":15,"description":"The length of the generated video in seconds. Defaults to 5 seconds\nwhen omitted.\n"},"generate_audio":{"type":"boolean","default":false,"description":"Whether to generate an audio track for the video. Audio roughly\ndoubles the provider cost and is subject to stricter output moderation.\n"},"shot_type":{"$ref":"#/components/schemas/KlingV3ShotType","default":"customize"},"cfg_scale":{"type":"string","title":"float","description":"How closely the video follows the prompt, from 0 to 1. Lower values\nleave the model more freedom. Defaults to 0.5 when omitted.\n"},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image","prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/video/generate/kling-3-standard-text-to-video":{"post":{"operationId":"videoGenerate_post_generate_video_kling_v3_standard_text_to_video","summary":"Text to video with Kling v3 Standard","description":"Generate a video from a text prompt with Kling v3 Standard.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}`\nor supply a `webhook_url`.\n","tags":["video-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"An acknowledgement to poll with `GET /v2/generations/{generation_id}`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVideoKlingV3Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"This account does not have access to this model.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate a video from a text prompt with Kling v3 Standard.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVideoKlingV3StandardTextToVideoRequest"}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/video/generate/kling-4":{"post":{"operationId":"videoGenerate_post_generate_video_kling4","summary":"Generate a video with Kling 4.0","description":"Generate a video from a text prompt with Kling 4.0, at up to 1080p and\n30 seconds. Every other input is optional and they combine freely:\n\n- Frames: up to 10 `frames` in timeline order. The first opens the video,\n  the last of two or more closes it, and the video passes through the\n  rest in between.\n- References: up to 10 `reference_images` and 5 reference videos the\n  prompt refers to as `[Image1]`, `[Video1]`, and so on.\n\nUpload images using `multipart/form-data`, or pass stored assets by\nidentifier. Returns a `generation_id`; poll\n`GET /v2/generations/{generation_id}` or supply a `webhook_url`.\n","tags":["video-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"An acknowledgement to poll with `GET /v2/generations/{generation_id}`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVideoKling4Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"This account does not have access to this model.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"A frame or reference was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate a video with Kling 4.0. Upload images using `multipart/form-data`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":11000,"description":"A natural-language prompt describing the video to generate. Refer to references by position, as in \"[Image1] walks toward the camera\"."},"frames":{"type":"array","items":{"type":"string","format":"binary"},"description":"Images for the video to pass through, in timeline order, in a common format such as JPEG, PNG, or WEBP, up to 50MB each. The first opens the video and, with two or more, the last closes it. Multipart requests only. Uploaded images are used for this request only and are not stored."},"reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Reference images, in prompt order. Common formats such as JPEG, PNG, and WEBP are supported, up to 50MB each. Multipart requests only. Uploaded images are used for this request only and are not stored."},"aspect_ratio":{"$ref":"#/components/schemas/Kling4AspectRatio"},"resolution":{"$ref":"#/components/schemas/Kling4Resolution","default":"1080p"},"duration":{"type":"integer","minimum":3,"maximum":30,"default":10,"description":"The length of the generated video in seconds."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/video/generate/minimax-h3-image-to-video":{"post":{"operationId":"videoGenerate_post_generate_video_minimax_h3_image_to_video","summary":"Image to video with MiniMax H3","description":"Generate a video from a first-frame image and a text prompt with\nMiniMax H3. Upload the first frame as `image`, and optionally a final\nframe as `end_image`, using `multipart/form-data`.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}`\nor supply a `webhook_url`.\n","tags":["video-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"An acknowledgement to poll with `GET /v2/generations/{generation_id}`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVideoMinimaxH3Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"This account does not have access to this model.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"The first-frame image was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate a video from a first-frame image with MiniMax H3. Upload the first frame as `image` using `multipart/form-data`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The first-frame image to animate, in a common format such as JPEG, PNG, or WEBP, up to 50MB. Multipart requests only. The uploaded image is used for this request only and is not stored."},"end_image":{"type":"string","format":"binary","description":"An optional final frame, in a common format such as JPEG, PNG, or WEBP, up to 50MB. Multipart requests only. When supplied, the video transitions from the first frame to this one."},"prompt":{"type":"string","minLength":1,"maxLength":2000,"description":"A natural-language prompt describing how the first frame should animate."},"resolution":{"$ref":"#/components/schemas/MinimaxH3Resolution","default":"2K"},"duration":{"type":"integer","minimum":5,"maximum":15,"default":5,"description":"The length of the generated video in seconds."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image","prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/video/generate/minimax-h3-reference-to-video":{"post":{"operationId":"videoEdit_post_edit_video_minimax_h3_reference_to_video","summary":"Reference to video with MiniMax H3","description":"Produce a video from a text prompt and optional reference media with\nMiniMax H3. Upload `reference_images` and `reference_audios` using\n`multipart/form-data`, and address them in the prompt by position\n(`Image 1`, `Audio 1`, …). Returns a `generation_id`; poll\n`GET /v2/generations/{generation_id}` or supply a `webhook_url`.\n","tags":["video-edit"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"An acknowledgement to poll with `GET /v2/generations/{generation_id}`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVideoMinimaxH3Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"This account does not have access to this model.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"A referenced asset was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to produce a video from reference media with MiniMax H3. Use `multipart/form-data` to upload reference media.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":2000,"description":"A natural-language prompt describing the video to produce. Reference media is addressed by position, as in \"Image 1 walks toward the camera with the motion of Video 1\"."},"reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Images to use as references (max size 50MB each), as raw bytes, in prompt order; only common image formats such as JPEG, PNG, and WEBP are supported. Uploaded images are used for this request only and are not stored."},"reference_audios":{"type":"array","items":{"type":"string","format":"binary"},"description":"MP3 or WAV audio references, in prompt order as Audio 1, Audio 2, and Audio 3. Multipart uploads only; up to 15 MB per file and 2–15 seconds each. Audio and video references must total no more than 15 seconds. Requires a reference image or video. At most 12 references across images, videos, and audio. Used only for this request and not saved as assets."},"aspect_ratio":{"$ref":"#/components/schemas/MinimaxH3AspectRatio","default":"16x9"},"resolution":{"$ref":"#/components/schemas/MinimaxH3Resolution","default":"2K"},"duration":{"type":"integer","minimum":5,"maximum":15,"default":5,"description":"The length of the generated video in seconds."},"prompt_expansion_mode":{"$ref":"#/components/schemas/MinimaxH3PromptExpansionMode","default":"balanced"},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/video/generate/minimax-h3-text-to-video":{"post":{"operationId":"videoGenerate_post_generate_video_minimax_h3_text_to_video","summary":"Text to video with MiniMax H3","description":"Generate a video from a text prompt with MiniMax H3.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}`\nor supply a `webhook_url`.\n","tags":["video-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"An acknowledgement to poll with `GET /v2/generations/{generation_id}`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVideoMinimaxH3Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"This account does not have access to this model.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate a video from a text prompt with MiniMax H3.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVideoMinimaxH3TextToVideoRequest"}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/video/generate/seedance-2-5-image-to-video":{"post":{"operationId":"videoGenerate_post_generate_video_seed_dance25_image_to_video","summary":"Image to video with Seedance 2.5","description":"Generate a video from a first-frame image and a text prompt with\nSeedance 2.5. Upload the first frame as `image`, and optionally a final\nframe as `end_image`, using `multipart/form-data`.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}`\nor supply a `webhook_url`.\n","tags":["video-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"An acknowledgement to poll with `GET /v2/generations/{generation_id}`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVideoSeedDance25Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"This account does not have access to this model.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"The first-frame image was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate a video from a first-frame image with Seedance 2.5. Upload the first frame as `image` using `multipart/form-data`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The first-frame image to animate, in a common format such as JPEG, PNG, or WEBP, up to 50MB. Multipart requests only. The uploaded image is used for this request only and is not stored."},"end_image":{"type":"string","format":"binary","description":"An optional final frame, in a common format such as JPEG, PNG, or WEBP, up to 50MB. Multipart requests only. When supplied, the video transitions from the first frame to this one."},"prompt":{"type":"string","minLength":1,"maxLength":30000,"description":"A natural-language prompt describing how the first frame should animate."},"resolution":{"$ref":"#/components/schemas/SeedDance25Resolution","default":"720p"},"duration":{"type":"integer","minimum":4,"maximum":30,"description":"The length of the generated video in seconds. When omitted, the model\npicks the best duration for the prompt (\"auto\").\n"},"generate_audio":{"type":"boolean","default":false,"description":"Whether to generate an audio track for the video. Audio roughly\ndoubles the provider cost and is subject to stricter output moderation.\n"},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image","prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/video/generate/seedance-2-5-reference-to-video":{"post":{"operationId":"videoGenerate_post_generate_video_seed_dance25_reference_to_video","summary":"Reference to video with Seedance 2.5","description":"Generate a video from a text prompt and reference media with\nSeedance 2.5. Upload at least one image in `reference_images`, plus optional\n`reference_audios`, using `multipart/form-data`.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}`\nor supply a `webhook_url`.\n","tags":["video-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"An acknowledgement to poll with `GET /v2/generations/{generation_id}`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVideoSeedDance25Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"This account does not have access to this model.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"A reference was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to produce a video from reference media with Seedance 2.5. Upload the references using `multipart/form-data`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":30000,"description":"A natural-language prompt describing the video to produce. Refer to references by position, as in \"[Image1] walks toward the camera\"."},"reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Reference images, in prompt order. Common formats such as JPEG, PNG, and WEBP are supported, up to 50MB each. Multipart requests only. Uploaded images are used for this request only and are not stored."},"reference_audios":{"type":"array","items":{"type":"string","format":"binary"},"description":"MP3 or WAV audio references, in prompt order. Multipart requests only. Each file must be at most 15 MB and between 2 and 30 seconds long, with a combined duration of at most 30 seconds. Requires at least one reference image. Audio is used for this request only and is not saved to your library."},"aspect_ratio":{"$ref":"#/components/schemas/SeedDance2AspectRatio","default":"auto"},"resolution":{"$ref":"#/components/schemas/SeedDance25Resolution","default":"720p"},"duration":{"type":"integer","minimum":4,"maximum":30,"description":"The length of the generated video in seconds. When omitted, the model\npicks the best duration for the prompt (\"auto\").\n"},"generate_audio":{"type":"boolean","default":false,"description":"Whether to generate an audio track for the video. Audio roughly\ndoubles the provider cost and is subject to stricter output moderation.\n"},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/video/generate/seedance-2-5-text-to-video":{"post":{"operationId":"videoGenerate_post_generate_video_seed_dance25_text_to_video","summary":"Text to video with Seedance 2.5","description":"Generate a video from a text prompt with Seedance 2.5, at up to 1080p and\n30 seconds. Returns a `generation_id`; poll `GET /v2/generations/{generation_id}`\nor supply a `webhook_url`.\n","tags":["video-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"An acknowledgement to poll with `GET /v2/generations/{generation_id}`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVideoSeedDance25Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"This account does not have access to this model.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate a video from a text prompt with Seedance 2.5.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVideoSeedDance25TextToVideoRequest"}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/video/generate/seedance-2-image-to-video":{"post":{"operationId":"videoGenerate_post_generate_video_seed_dance2_image_to_video","summary":"Image to video with Seedance 2.0","description":"Generate one or more videos from a first-frame image and a text prompt\nwith Seedance 2.0. Upload the first frame as `image`, and optionally a final\nframe as `end_image`, using `multipart/form-data`.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}`\nor supply a `webhook_url`.\n","tags":["video-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"An acknowledgement to poll with `GET /v2/generations/{generation_id}`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVideoSeedDance2Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"This account does not have access to this model.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"The first-frame image was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate videos from a first-frame image with Seedance 2.0. Upload the first frame as `image` using `multipart/form-data`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The first-frame image to animate, in a common format such as JPEG, PNG, or WEBP, up to 50MB. Multipart requests only. The uploaded image is used for this request only and is not stored."},"end_image":{"type":"string","format":"binary","description":"An optional final frame, in a common format such as JPEG, PNG, or WEBP, up to 50MB. Multipart requests only. When supplied, the video transitions from the first frame to this one."},"prompt":{"type":"string","minLength":1,"maxLength":2000,"description":"A natural-language prompt describing how the first frame should animate."},"aspect_ratio":{"$ref":"#/components/schemas/SeedDance2AspectRatio","default":"auto"},"resolution":{"$ref":"#/components/schemas/SeedDance2Resolution","default":"720p"},"duration":{"type":"integer","minimum":4,"maximum":15,"description":"The length of the generated video in seconds. When omitted, the model\npicks the best duration for the prompt (\"auto\").\n"},"generate_audio":{"type":"boolean","default":false,"description":"Whether to generate an audio track for the video. Audio roughly\ndoubles the provider cost and is subject to stricter output moderation.\n"},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image","prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/video/generate/seedance-2-reference-to-video":{"post":{"operationId":"videoGenerate_post_generate_video_seed_dance2_reference_to_video","summary":"Reference to video with Seedance 2.0","description":"Generate a video from a text prompt and reference media with\nSeedance 2.0. Upload at least one image in `reference_images`, plus optional\n`reference_audios`, using `multipart/form-data`.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}`\nor supply a `webhook_url`.\n","tags":["video-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"An acknowledgement to poll with `GET /v2/generations/{generation_id}`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVideoSeedDance2Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"This account does not have access to this model.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"A reference was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to produce a video from reference media with Seedance 2.0. Upload the references using `multipart/form-data`.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":2000,"description":"A natural-language prompt describing the video to produce. Refer to references by position, as in \"@Image1 walks toward the camera\"."},"reference_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Reference images, in prompt order. Common formats such as JPEG, PNG, and WEBP are supported, up to 50MB each. Multipart requests only. Uploaded images are used for this request only and are not stored."},"reference_audios":{"type":"array","items":{"type":"string","format":"binary"},"description":"MP3 or WAV audio references, in prompt order. Multipart requests only. Each file must be at most 15 MB and between 2 and 15 seconds long, with a combined duration of at most 15 seconds. Requires at least one reference image. Audio is used for this request only and is not saved to your library."},"aspect_ratio":{"$ref":"#/components/schemas/SeedDance2AspectRatio","default":"auto"},"resolution":{"$ref":"#/components/schemas/SeedDance2Resolution","default":"720p"},"duration":{"type":"integer","minimum":4,"maximum":15,"description":"The length of the generated video in seconds. When omitted, the model\npicks the best duration for the prompt (\"auto\").\n"},"generate_audio":{"type":"boolean","default":false,"description":"Whether to generate an audio track for the video. Audio roughly\ndoubles the provider cost and is subject to stricter output moderation.\n"},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/video/generate/seedance-2-text-to-video":{"post":{"operationId":"videoGenerate_post_generate_video_seed_dance2_text_to_video","summary":"Text to video with Seedance 2.0","description":"Generate one or more videos from a text prompt with Seedance 2.0.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}`\nor supply a `webhook_url`.\n","tags":["video-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"An acknowledgement to poll with `GET /v2/generations/{generation_id}`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVideoSeedDance2Response"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"This account does not have access to this model.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt did not pass safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"The endpoint is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"A request to generate videos from a text prompt with Seedance 2.0.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateVideoSeedDance2TextToVideoRequest"}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/svg/generate/ideogram-vector-1":{"post":{"operationId":"svgGenerate_post_generate_svg","summary":"Generate SVG","description":"Generates SVG artwork from a prompt and optional image references.","tags":["svg-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Generation accepted. Dry runs return a PriceQuote.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateSvgResponse"}}}},"400":{"description":"Invalid prompt, references, or settings.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"description":"Any type"}}}},"403":{"description":"Access denied.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Reference not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"503":{"description":"Generation is unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":9500},"image_asset_identifiers":{"type":"array","items":{"$ref":"#/components/schemas/AssetIdentifier"},"description":"Existing uploaded or generated image references. Takes priority over images when both are supplied. The first image is the primary source; any others are additional references."},"images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Source images to transform, supplied as multipart file uploads. The first image is the primary source; any others are additional references."},"aspect_ratio":{"$ref":"#/components/schemas/IdeogramV4AspectRatio","default":"auto"},"quality":{"$ref":"#/components/schemas/V2SvgGenerateIdeogramVector1PostRequestBodyContentMultipartFormDataSchemaQuality","default":"medium"},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1},"seed":{"type":"integer","minimum":0,"maximum":2147483647},"private":{"type":"boolean","description":"Outputs are private by default. Enterprise outputs are always private."},"target_collection_id":{"type":"string","description":"URL-safe base64 ID of a writable destination collection."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/svg/vectorize/ideogram-vector-1":{"post":{"operationId":"svgGenerate_post_vectorizer","summary":"Vectorizer","description":"Converts an image to SVG asynchronously.","tags":["svg-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Conversion accepted; dry runs return the shared PriceQuote response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VectorizerResponse"}}}},"400":{"description":"Invalid source image or input combination.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"Access denied.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Source not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"503":{"description":"Conversion is unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"JPEG, PNG or WEBP source; at most 50 MB. Multipart only."},"image_asset_identifier":{"$ref":"#/components/schemas/AssetIdentifier"},"mode":{"$ref":"#/components/schemas/V2SvgVectorizeIdeogramVector1PostRequestBodyContentMultipartFormDataSchemaMode","default":"auto","description":"Simple uses fewer shapes; detailed preserves fine detail; auto chooses the level of detail that best suits the image."},"private":{"type":"boolean","description":"Outputs are private by default. Enterprise outputs are always private."},"target_collection_id":{"type":"string","description":"URL-safe base64 ID of a writable destination collection."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}}}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/tool/ad-localizer":{"post":{"operationId":"editWorkflow_post_ad_localizer","summary":"Ad Localizer","description":"Rebuilds an ad in one target language, preserving its layout, logos,\nbrand type, and product so only the visible marketing copy changes.\nUpload the source ad as `image` using `multipart/form-data`; the copy\nis translated unless you supply `exact_copy`.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}` or\nsupply a `webhook_url`.\n","tags":["edit-workflow"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Ad localization accepted for asynchronous processing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdLocalizerResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"Not authorized to use Ad Localizer.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"An input asset was not found or is not readable.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The instruction did not pass prompt safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}}},"requestBody":{"description":"The source ad and the target language.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source ad to localize (max size 25MB). Its layout, logos, brand\ntype, and product are preserved, and the output keeps its shape, so\nno size or aspect ratio is needed. JPEG, PNG, and WEBP formats are\nsupported. Multipart requests only.\n"},"language":{"$ref":"#/components/schemas/V2ToolAdLocalizerPostRequestBodyContentMultipartFormDataSchemaLanguage","description":"The target language for the copy. Arabic is rendered right-to-left. Each request covers one language; send one request per language."},"exact_copy":{"type":"string","maxLength":4000,"description":"Pre-approved wording, one `original => replacement` mapping per line. Each mapping names the text element showing `original` and sets it to `replacement`, placed character for character rather than translated. Any text element not listed is left as it is in the source. When omitted, all visible marketing copy is translated."},"prompt":{"type":"string","maxLength":2000,"description":"Optional additional direction for the localization, for example \"keep the badge in English\". Anything it explicitly asks to change takes priority over the preservation rules."},"quality":{"$ref":"#/components/schemas/AdLocalizerQuality"},"num_images":{"type":"integer","minimum":1,"maximum":4,"default":1,"description":"Number of localized variations to create for this language."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image","language"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/tool/ad-resizer":{"post":{"operationId":"editWorkflow_post_ad_resizer","summary":"Ad Resizer","description":"Reframes an ad creative to an exact ad resolution, regenerating the\nlayout so text and key elements stay legible at the new size. Upload\nthe source creative as `image` using `multipart/form-data`, and supply\n`platform` to keep the ad inside that platform's safe zone.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}` or\nsupply a `webhook_url`.","tags":["edit-workflow"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Ad resize accepted for asynchronous processing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdResizerResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"Not authorized to resize an ad.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Source asset not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt was rejected by safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}}},"requestBody":{"description":"The source creative, the target ad resolution, and optionally the platform whose safe zone the ad must stay inside.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source creative to reframe (max size 25MB). JPEG, PNG, and\nWEBP formats are supported. Multipart requests only.\n"},"resolution":{"$ref":"#/components/schemas/V2ToolAdResizerPostRequestBodyContentMultipartFormDataSchemaResolution","description":"Target ad resolution, formatted as `WIDTHxHEIGHT`. Any value not in\nthe list is rejected with a 400. Each output image has exactly these\npixel dimensions, with or without a `platform`.\n"},"platform":{"$ref":"#/components/schemas/V2ToolAdResizerPostRequestBodyContentMultipartFormDataSchemaPlatform","description":"The ad platform whose published safe zone the ad must stay inside.\nThe ad is generated inside the largest rectangle that fits the\nplatform's safe zone for the requested aspect ratio, and the space\naround it is filled in so the output is still exactly the requested\n`resolution`. `google` covers YouTube and Google Ads placements.\nUse `meta_stories` or `meta_reels` for Meta placements; Reels uses\nthe largest rectangle inside its notched safe zone. The legacy\n`meta` value is still supported and uses a more conservative safe\nzone. When omitted, the ad fills the whole frame and every\nsupported `resolution` is accepted. Any other value is rejected\nwith a 400.\n\nEach platform accepts only the resolutions for which it publishes a\nsafe zone; any other `resolution` is rejected with a 400:\n\n| Platform | Accepted resolutions |\n| --- | --- |\n| `google` | `1920x1080`, `3840x2160`, `1080x1080`, `2400x2400`, `2880x2880`, `1080x1920`, `2160x3840` |\n| `tiktok` | `1920x1080`, `3840x2160`, `1080x1080`, `2400x2400`, `2880x2880`, `1080x1920`, `2160x3840` |\n| `meta_stories` | `1080x1920`, `2160x3840` |\n| `meta_reels` | `1080x1920`, `2160x3840` |\n| `meta` (legacy) | `1080x1920`, `2160x3840` |\n| `snapchat` | `1080x1920`, `2160x3840` |\n"},"prompt":{"type":"string","description":"Optional edit instruction to apply while reframing, for example \"remove the logo\" or \"put the price bottom-right\"."},"quality":{"$ref":"#/components/schemas/AdResizerQuality"},"num_images":{"type":"integer","minimum":1,"maximum":4,"default":1,"description":"The number of reframed variations to generate."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image","resolution"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/tool/ad-variations":{"post":{"operationId":"editWorkflow_post_ad_variations","summary":"Ad Variations","description":"Creates on-brand variations of an ad along one axis, preserving logos,\nbrand colors, the product, and all on-image text. Upload the source\ncreative as `image` using `multipart/form-data` and choose a\n`variation_type`.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}` or\nsupply a `webhook_url`.\n","tags":["edit-workflow"],"responses":{"200":{"description":"Ad variation accepted for asynchronous processing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdVariationsResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"Not authorized to generate ad variations.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Source asset not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The prompt was rejected by safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}}},"requestBody":{"description":"The source creative and the variation axis.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source creative to vary (max size 25MB). JPEG, PNG, and WEBP\nformats are supported. Multipart requests only. Each output keeps\nthe source's aspect ratio, capped at 3:1 between the long and short\nsides.\n"},"variation_type":{"$ref":"#/components/schemas/V2ToolAdVariationsPostRequestBodyContentMultipartFormDataSchemaVariationType","description":"The axis to vary. `people`\nreplaces the people in the ad with different talent. `setting`\nmoves the same subject and product to a different environment.\n`group_size` changes how many people appear. `scene` shifts the\nmoment or occasion (time of day, season, or activity).\n"},"prompt":{"type":"string","description":"Optional direction to steer the variation, for example \"set it on a beach\" or \"make the models older\". Anything it explicitly asks to change takes priority over the default preservation rules."},"quality":{"$ref":"#/components/schemas/AdVariationsQuality"},"num_images":{"type":"integer","minimum":1,"maximum":4,"default":1,"description":"The number of variations to generate along the requested axis."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image","variation_type"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/tool/colorways":{"post":{"operationId":"editWorkflow_post_colorways","summary":"Colorways","description":"Recolors masked regions of a product photo, each to its own target\ncolor, preserving the product's geometry, materials, prints, logos, and\neverything outside the masks. Upload the `image` and up to 4 `masks`\nusing `multipart/form-data`, with one entry in `colors` per mask.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}` or\nsupply a `webhook_url`.\n","tags":["edit-workflow"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Colorway accepted for asynchronous processing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ColorwaysResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"Not authorized to create a colorway.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}}},"requestBody":{"description":"The product photo, one mask or several masks marking the regions to recolor, and one target color per mask.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The product photo to recolor (max size 25MB). JPEG, PNG, and WEBP\nformats are supported.\n"},"masks":{"type":"array","items":{"type":"string","format":"binary"},"description":"Masks marking the regions to recolor (max 4, max size 25MB each),\npaired by position with `colors`. JPEG, PNG, and WEBP formats are\nsupported. Every mask must have the same pixel dimensions as the\nproduct photo. White pixels mark the region to recolor and black\npixels are preserved; alpha-only masks also work (opaque =\nrecolor, transparent = preserve).\n"},"colors":{"type":"array","items":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"description":"One target color per mask in `masks`, as six-digit hex codes like\n`#B3202C`, paired by position. The product's shape, construction,\nmaterials, prints, and logos are always preserved.\n"},"aspect_ratio":{"type":"string","pattern":"^(1:1|3:4|4:3|16:9|9:16)$","description":"Output aspect ratio. Defaults to the product photo's aspect ratio,\nwhich keeps the original framing. A different ratio extends the\nscene to fill the new shape rather than cropping, so part of the\nframe is newly generated. Supported values are `1:1`, `3:4`,\n`4:3`, `16:9`, and `9:16`.\n"},"quality":{"$ref":"#/components/schemas/ColorwaysQuality"},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image","colors"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/tool/ghost-mannequin":{"post":{"operationId":"editWorkflow_post_ghost_mannequin","summary":"Ghost Mannequin","description":"Turns photos of one garment into a ghost-mannequin product image on a\nclean white studio background, removing the person, mannequin, hanger,\nand other clothing. Upload the photos using `multipart/form-data`, in\nthe directional fields (such as `front_image`) when the camera\ndirection is known and in `garment_images` otherwise.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}` or\nsupply a `webhook_url`.\n","tags":["edit-workflow"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Ghost-mannequin generation accepted for asynchronous processing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GhostMannequinResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"Not authorized to create ghost-mannequin images.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"An input asset was not found or is not readable.","content":{"application/json":{"schema":{"description":"Any type"}}}},"413":{"description":"The combined raw image uploads exceed 100 MB.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The instruction did not pass prompt safety validation.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}}},"requestBody":{"description":"The garment photos and the requested output view.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"garment_images":{"type":"array","items":{"type":"string","format":"binary"},"description":"Additional photos of the same garment, up to 50 MB each. JPEG,\nPNG, WEBP, HEIF, AVIF, GIF, BMP, TIFF, and MPO are supported.\nMultipart requests only.\n"},"front_image":{"type":"string","format":"binary","description":"Optional front-view garment photo, up to 50 MB. Multipart requests\nonly.\n"},"back_image":{"type":"string","format":"binary","description":"Optional back-view garment photo, up to 50 MB. Multipart requests\nonly.\n"},"left_image":{"type":"string","format":"binary","description":"Optional left-view garment photo, up to 50 MB. Multipart requests\nonly.\n"},"right_image":{"type":"string","format":"binary","description":"Optional right-view garment photo, up to 50 MB. Multipart requests\nonly.\n"},"top_image":{"type":"string","format":"binary","description":"Optional top-view garment photo, up to 50 MB. Multipart requests\nonly.\n"},"bottom_image":{"type":"string","format":"binary","description":"Optional bottom-view garment photo, up to 50 MB. Multipart\nrequests only.\n"},"output_reference_asset_identifier":{"$ref":"#/components/schemas/AssetIdentifier"},"output_reference_image":{"type":"string","format":"binary","description":"Optional presentation example, up to 50 MB. Multipart requests only.\nGuides pose, framing, and lighting without copying its garment,\ncolors, text, or branding. Garment photos remain authoritative for\nproduct identity; view and aspect_ratio take precedence, and the\nbackground remains white. Does not replace a required garment photo.\nMutually exclusive with `output_reference_asset_identifier`.\n"},"view":{"$ref":"#/components/schemas/V2ToolGhostMannequinPostRequestBodyContentMultipartFormDataSchemaView","description":"Camera view for the output garment."},"instruction":{"type":"string","maxLength":2000,"description":"Optional reconstruction guidance or identity-critical garment\ndetails to check against the photos. The output always uses a clean\nwhite studio background.\n"},"metadata":{"type":"string","maxLength":8000,"description":"Optional JSON object serialized as a string containing factual\nproduct context, such as title, brand, category, color, material,\nitem code, and exact printed text. Metadata helps disambiguate the\ngarment photos but does not add features they do not show.\n"},"aspect_ratio":{"type":"string","pattern":"^(1:1|3:4|4:3|16:9|9:16)$","description":"Output aspect ratio. Defaults to `1:1` when omitted. Supported\nvalues are `1:1`, `3:4`, `4:3`, `16:9`, and `9:16`.\n"},"quality":{"$ref":"#/components/schemas/GhostMannequinQuality"},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["view"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/tool/material-swap":{"post":{"operationId":"editWorkflow_post_material_swap","summary":"Material Swap","description":"Re-renders masked regions of a product photo in the materials shown in\nreference images, preserving the product's construction and everything\noutside the masks. Upload the `image`, up to 4 `masks`, and the\n`materials` using `multipart/form-data`.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}` or\nsupply a `webhook_url`.\n","tags":["edit-workflow"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Material swap accepted for asynchronous processing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaterialSwapResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"Not authorized to create a material swap.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}}},"requestBody":{"description":"The product photo, one mask or several masks marking the regions to change, and either one shared material reference or one per mask.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The product photo to edit (max size 25MB). JPEG, PNG, and WEBP\nformats are supported.\n"},"masks":{"type":"array","items":{"type":"string","format":"binary"},"description":"Masks marking the regions to change (max 4, max size 25MB each).\nJPEG, PNG, and WEBP formats are supported. Every mask must have the\nsame pixel dimensions as the product photo. White pixels mark the\nregion to change and black pixels are preserved; alpha-only masks\nalso work (opaque = change, transparent = preserve).\n"},"materials":{"type":"array","items":{"type":"string","format":"binary"},"description":"Material reference images (max size 25MB each). JPEG, PNG, and WEBP\nformats are supported. Only their material (color, texture, pattern\nscale, and orientation) is applied to the masked regions. Send one\nmaterial for every mask, or exactly one per mask, paired by\nposition.\n"},"aspect_ratio":{"type":"string","pattern":"^(1:1|3:4|4:3|16:9|9:16)$","description":"Output aspect ratio. Defaults to the product photo's aspect ratio,\nwhich keeps the original framing. A different ratio extends the\nscene to fill the new shape rather than cropping, so part of the\nframe is newly generated. Supported values are `1:1`, `3:4`,\n`4:3`, `16:9`, and `9:16`.\n"},"quality":{"$ref":"#/components/schemas/MaterialSwapQuality"},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/tool/model-pose-variants":{"post":{"operationId":"editWorkflow_post_model_pose_variants","summary":"Model Pose Variants","description":"Changes the model's pose or camera angle in a fashion image while\npreserving the model, garment, styling, and scene. Upload the\n`source_image` using `multipart/form-data` and describe the new pose in\n`instruction`.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}` or\nsupply a `webhook_url`.\n","tags":["edit-workflow"],"responses":{"200":{"description":"Pose-variant generation accepted for asynchronous processing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelPoseVariantsResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"Not authorized to generate pose variants.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"An input asset was not found or is not readable.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The instruction did not pass prompt safety checks.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}}},"requestBody":{"description":"The fashion image to edit and the pose direction.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"source_image":{"type":"string","format":"binary","description":"Fashion image to edit (max size 50MB). JPEG, PNG, WEBP, HEIF,\nAVIF, GIF, BMP, TIFF, and MPO formats are supported. Multipart\nrequests only.\n"},"instruction":{"type":"string","minLength":1,"maxLength":4000,"description":"Plain-language pose or camera direction, such as a front-facing\ncatalog stance or right-facing walking profile.\n"},"aspect_ratio":{"type":"string","pattern":"^(1:1|3:4|4:3|16:9|9:16)$","description":"Output aspect ratio. When omitted, the nearest supported ratio is\nderived from the source image. Supported values are `1:1`, `3:4`,\n`4:3`, `16:9`, and `9:16`.\n"},"quality":{"$ref":"#/components/schemas/ModelPoseVariantsQuality"},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"Number of pose variants to create."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["source_image","instruction"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/tool/sketch-to-render":{"post":{"operationId":"editWorkflow_post_sketch_to_render","summary":"Sketch to Render","description":"Turns a fashion sketch into photorealistic garment or product imagery,\npreserving its silhouette, construction, colors, and design details.\nUpload the `sketch_image` using `multipart/form-data` and describe\nmaterials and rendering in `instruction`.\nReturns a `generation_id`; poll `GET /v2/generations/{generation_id}` or\nsupply a `webhook_url`.\n","tags":["edit-workflow"],"responses":{"200":{"description":"Sketch rendering accepted for asynchronous processing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SketchToRenderResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"Not authorized to render sketches.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"The referenced sketch was not found or is not readable.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"The instruction did not pass prompt safety validation.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}}},"requestBody":{"description":"The source sketch and the material and rendering direction to apply.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"sketch_image":{"type":"string","format":"binary","description":"The fashion sketch to render, up to 50 MB. JPEG, PNG, WEBP, HEIF,\nAVIF, GIF, BMP, TIFF, and MPO are supported. Multipart requests\nonly.\n"},"instruction":{"type":"string","minLength":1,"maxLength":4000,"description":"Material and rendering direction, plus any construction or design\ndetails that are not legible in the sketch.\n"},"aspect_ratio":{"type":"string","pattern":"^(1:1|3:4|4:3|16:9|9:16)$","description":"Aspect ratio of each output image. Defaults to `1:1` when omitted."},"quality":{"$ref":"#/components/schemas/SketchToRenderQuality"},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"Number of product renders to create."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["sketch_image","instruction"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/generations/{generation_id}":{"get":{"operationId":"generations_get_generation_v2","summary":"Poll a generation","description":"Retrieves the current status of an asynchronous generation, and its\nresults once complete. Use the `generation_id` returned by any `/v2`\nendpoint that runs asynchronously: every video and tool endpoint, and\nany image endpoint called with `async` or a `webhook_url`.\n\nWhile the generation is `pending` or has `failed`, the response\ncontains only `generation_id`, `status`, and `created` (plus\n`failure_reason` once failed). Once `status` is `completed`, the\nresponse includes `response_type` and `data`. Each `data` item carries\nan `object_type` that identifies its shape, so image and video results\ncan be told apart. `usage_cost_usd_micros` reports the amount billed\nwhen the request uses variable usage-based pricing.\n\nPolling is rate limited per organization; a 429 response carries a\n`Retry-After` header with the number of seconds to wait.","tags":["generations"],"parameters":[{"name":"generation_id","in":"path","description":"URL-safe base64 ID of the generation, as returned when the request was accepted.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Generation status retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationResponse"}}}},"400":{"description":"The generation ID is not a valid URL-safe base64 ID.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Not authorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Generation not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/account/api-keys":{"get":{"operationId":"account_get_account_api_keys","summary":"List API keys","description":"Lists the API keys in your organization. Key material is redacted —\nthe full key is only shown once, when it is created. Disabled and\narchived keys are included (see each key's `status`) so historical\nusage can always be matched to the key that generated it.\n\nRequires an API key whose owner is an organization admin. Keys owned\nby other members receive a 404.\n","tags":["account"],"responses":{"200":{"description":"The organization's API keys, redacted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAccountApiKeysResponse"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"No organization with billing access was found for this credential.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/account/invoices":{"get":{"operationId":"account_get_account_invoices","summary":"List invoices","description":"Returns your organization's invoices with their line items — the\nbilling record your usage reports reconcile against. Amounts are\ndecimal strings in the invoice's currency.\n\nRequires an API key whose owner is an organization admin. Keys owned\nby other members receive a 404.\n","tags":["account"],"responses":{"200":{"description":"The organization's invoices. Empty when no billing history exists yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAccountInvoicesResponse"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"No organization with billing access was found for this credential.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/account/usage":{"get":{"operationId":"account_get_account_usage","summary":"Get usage and spend","description":"Returns your organization's billed API usage as dense time buckets of\nline items. Every line item carries the billed dollar amount; products\nbilled per item also carry `billed_units` (unit, quantity, and unit\nprice, where `quantity × unit_price = cost_total`). Usage-priced\nproducts (billed by metered provider usage) report `cost_total` only.\n\nBuckets cover the requested range completely — a bucket with no line\nitems means no billed usage in that window. Line items are unique per\nbucket on (`product`, `dimensions`, `api_key.id`, unit price). Usage\nbilled without an API key (requests authenticated as a user session)\nis included with `api_key` absent, so totals always reconcile with\nyour invoices.\n`product` and `endpoint` are stable identifiers safe to aggregate on;\n`description` is display text and may be reworded at any time.\n\nUsage data may lag live traffic by a few minutes, and responses may be\ncached briefly, so this endpoint is for reporting rather than\nreal-time monitoring.\n\nRequires an API key whose owner is an organization admin. Keys owned\nby other members receive a 404.\n","tags":["account"],"parameters":[{"name":"start_time","in":"query","description":"Start of the reporting range (RFC 3339). Snapped down to the containing bucket boundary (UTC).","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"end_time","in":"query","description":"End of the reporting range (RFC 3339), exclusive. Snapped up to the next bucket boundary (UTC). Defaults to now.","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"bucket_width","in":"query","description":"Bucket granularity. `1d` allows ranges up to 92 days per request; `1h` allows up to 168 hours. Page through longer histories by moving `start_time` back across successive requests.","required":false,"schema":{"$ref":"#/components/schemas/V2AccountUsageGetParametersBucketWidth","default":"1d"}},{"name":"sources","in":"query","description":"Which billing sources to include. `api` is usage from API requests; `app` is web-app usage, attributed to the member who generated it. Defaults to both, so report totals reconcile with invoices.","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/V2AccountUsageGetParametersSourcesSchemaItems"},"default":["api","app"]}}],"responses":{"200":{"description":"Bucketed usage for the requested range.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAccountUsageResponse"}}}},"400":{"description":"Invalid time range, bucket width, or filters.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"No organization with billing access was found for this credential.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/design/html/{layerize_id}":{"get":{"operationId":"editWorkflow_get_layerize_html","summary":"Download Layerize HTML","description":"Return a standalone HTML document built from the current editable layers.\nImages and fonts are embedded in the response. Use `layerize_id` from a\ncompleted Layerize result. Uploaded fonts supplied through the API may\nexpire, so this request can stop succeeding after their cache lifetime.","tags":["edit-workflow"],"parameters":[{"name":"layerize_id","in":"path","description":"URL-safe base64 Layerize ID returned by a completed result.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Standalone HTML document.","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid Layerize ID.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Layerize result or one of its required assets was not found.","content":{"application/json":{"schema":{"description":"Any type"}}}},"503":{"description":"HTML rendering is unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/image/replace-background/ideogram-4-5":{"post":{"operationId":"tool_replaceBackgroundIdeogram45","summary":"Replace background with Ideogram 4.5","description":"Rebuild the background of an image as the setting shown in a\n`background_reference` image, with Ideogram 4.5 at its highest\nquality. The people in the source image are kept, people in the\nreference are left out, and results keep the source image's aspect\nratio. Returns a `generation_id`; poll\n`GET /v2/generations/{generation_id}` or supply a `webhook_url`.\n","tags":["tool"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Background replacement accepted for asynchronous processing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceBackgroundResponse"}}}},"400":{"description":"Invalid input provided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"description":"Any type"}}}},"402":{"description":"Insufficient credits or quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"403":{"description":"Not authorized to replace backgrounds.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"An image was not found or is not readable.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"503":{"description":"Background replacement is temporarily unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"The source image and the background reference.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary","description":"The source image. JPEG, PNG, WEBP, HEIF, AVIF, GIF, BMP, TIFF, and\nMPO are supported, up to 50 MB. Its longer side may be at most the\nmodel's maximum aspect ratio times its shorter side; a more extreme\nproportion is rejected with a 400 that states the allowed range.\nMultipart requests only.\n"},"background_reference":{"type":"string","format":"binary","description":"A photo of the setting the new background should match. Its people\nare not copied. It is held to the same aspect-ratio limit as\n`image`. Multipart requests only.\n"},"num_images":{"type":"integer","minimum":1,"maximum":4,"default":1,"description":"The number of images to generate."},"private":{"type":"boolean","description":"Whether to keep the result private. When omitted, the result is\nprivate. Enterprise generations are always private.\n"},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["image","background_reference"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/svg/generate/gpt-image-2-6-flare":{"post":{"operationId":"svgGenerate_post_generate_svg_gpt_image26_flare","summary":"Generate SVG with GPT Image 2.6 Flare","description":"Generates SVG artwork from a prompt with GPT Image 2.6 Flare. The model renders an image and writes it out as SVG markup. Text prompts only: reference images are not supported.","tags":["svg-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Generation accepted. Dry runs return a PriceQuote.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateSvgResponse"}}}},"400":{"description":"Invalid prompt or settings.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"description":"Any type"}}}},"403":{"description":"Access denied.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"503":{"description":"Generation is unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateSvgGptImage26FlareRequest"}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/svg/generate/gpt-image-2-6-sunburst":{"post":{"operationId":"svgGenerate_post_generate_svg_gpt_image26_sunburst","summary":"Generate SVG with GPT Image 2.6 Sunburst","description":"Generates SVG artwork from a prompt with GPT Image 2.6 Sunburst. The model renders an image and writes it out as SVG markup. Text prompts only: reference images are not supported.","tags":["svg-generate"],"parameters":[{"name":"dry_run","in":"query","description":"When true, the request is validated and priced but not run: nothing is\ngenerated, stored, or billed, and no safety review is performed. The\nresponse is a `PriceQuote` object instead of the usual response for this\nendpoint. Send exactly the request you would send to generate, so the\nquote reflects the same options.\n","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Generation accepted. Dry runs return a PriceQuote.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateSvgResponse"}}}},"400":{"description":"Invalid prompt or settings.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Authentication required.","content":{"application/json":{"schema":{"description":"Any type"}}}},"403":{"description":"Access denied.","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationErrorResponse"}}}},"503":{"description":"Generation is unavailable.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateSvgGptImage26SunburstRequest"}}}},"security":[{"ApiKeyAuth":[]}]}}},"tags":[{"name":"images-precise-edit"},{"name":"auto-model"},{"name":"images-generate"},{"name":"images-remix"},{"name":"images-inpaint"},{"name":"reframe"},{"name":"tools"},{"name":"images-upscale"},{"name":"tool"},{"name":"object-removal"},{"name":"image-describe"},{"name":"design"},{"name":"video-generate"},{"name":"video-edit"},{"name":"svg-generate"},{"name":"edit-workflow"},{"name":"generations"},{"name":"account"}],"servers":[{"url":"https://api.ideogram.ai","description":"https://api.ideogram.ai"}],"components":{"schemas":{"V2ImagePreciseEditIdeogram45PostRequestBodyContentMultipartFormDataSchemaQuality":{"type":"string","enum":["very_low","low","medium","high"],"default":"medium","description":"The rendering quality to use. `very_low` is the fastest and cheapest, and `high` takes longer and is priced higher. This is the only field that affects the price: the size of the image you send does not change it, and neither does `context_window`.","title":"V2ImagePreciseEditIdeogram45PostRequestBodyContentMultipartFormDataSchemaQuality"},"GenerationKind":{"type":"string","enum":["sampling","workflow"],"description":"The kind of generation identified by generation_id. Both kinds can be polled through GET /v2/generations/{generation_id}.","title":"GenerationKind"},"GeneratedImageObject":{"type":"object","properties":{"url":{"type":["string","null"],"format":"uri","description":"The direct link to the generated image. Empty when the image did not pass safety checks."},"prompt":{"type":"string","description":"The final prompt the image was generated from."},"resolution":{"type":"string","description":"The resolution of the generated image, formatted as \"WIDTHxHEIGHT\"."},"is_image_safe":{"type":"boolean","description":"Whether the image passed safety checks. If false, `url` is empty."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["prompt","resolution","is_image_safe","seed"],"description":"One generated output image.","title":"GeneratedImageObject"},"PreciseEditImageIdeogram45Response":{"type":"object","properties":{"generation_kind":{"$ref":"#/components/schemas/GenerationKind"},"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The edited images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","description":"The seed that was used, including when you did not set one."}},"required":["generation_kind"],"description":"Response returned by `POST /v2/image/precise-edit/ideogram-4-5`.\nSynchronous requests (the default) include the edited images in `data`.\nAsynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`.\n","title":"PreciseEditImageIdeogram45Response"},"GenerationRejectReason":{"type":"string","enum":["insufficient_funds","subscription_required","daily_limit","priority_credit_required","inflight_limit","feature_limit","app_user_limit"],"description":"The account or usage limit that rejected a generation request.","title":"GenerationRejectReason"},"GenerationErrorResponseTaskCompletionSpeed":{"type":"string","enum":["fast","slow"],"description":"The queue this request resolved to. Present when `reject_reason`\nis `inflight_limit`.\n","title":"GenerationErrorResponseTaskCompletionSpeed"},"GenerationErrorResponse":{"type":"object","properties":{"error":{"type":"string","description":"A message describing why the generation request was rejected."},"reject_reason":{"$ref":"#/components/schemas/GenerationRejectReason"},"max_inflight_requests":{"type":"integer","minimum":1,"description":"How many generations the account may have in progress at once on\nthe queue this request resolved to. Present when `reject_reason`\nis `inflight_limit`.\n"},"task_completion_speed":{"$ref":"#/components/schemas/GenerationErrorResponseTaskCompletionSpeed","description":"The queue this request resolved to. Present when `reject_reason`\nis `inflight_limit`.\n"}},"required":["error","reject_reason"],"description":"A generation request rejected by an account or usage limit.","title":"GenerationErrorResponse"},"V2ImageGenerateAutoPostRequestBodyContentMultipartFormDataSchemaResolutionTier":{"type":"string","enum":["1k","2k","4k"],"description":"The output resolution tier. Affects which model serves the request, since not every model offers every tier. When omitted, the selected model's default tier is used.","title":"V2ImageGenerateAutoPostRequestBodyContentMultipartFormDataSchemaResolutionTier"},"MagicPromptMode":{"type":"string","enum":["auto","on","off"],"description":"Determine if MagicPrompt should be used in generating the request or not.","title":"MagicPromptMode"},"GenerateImageV2AutoResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/auto`. Synchronous\nrequests (the default) include the generated images in `data`.\nAsynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageV2AutoResponse"},"V2ImageGenerateIdeogram45PostRequestBodyContentMultipartFormDataSchemaBackground":{"type":"string","enum":["auto","transparent","opaque"],"default":"auto","description":"The output background. `transparent` returns images with an alpha channel, `opaque` returns a solid one, and `auto` decides for you.","title":"V2ImageGenerateIdeogram45PostRequestBodyContentMultipartFormDataSchemaBackground"},"V2ImageGenerateIdeogram45PostRequestBodyContentMultipartFormDataSchemaQuality":{"type":"string","enum":["very_low","low","medium","high"],"description":"The rendering quality to use. Higher quality takes longer and costs more. Defaults to `medium` with source images and `high` without. `very_low`, the fastest and cheapest, requires source images.","title":"V2ImageGenerateIdeogram45PostRequestBodyContentMultipartFormDataSchemaQuality"},"GenerateImageIdeogram45Response":{"type":"object","properties":{"generation_kind":{"$ref":"#/components/schemas/GenerationKind"},"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_kind","generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/ideogram-4-5`.\nSynchronous requests (the default) include the generated images in\n`data`. Asynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageIdeogram45Response"},"ResolutionV4":{"type":"string","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"],"description":"The 1K and 2K resolutions supported for Ideogram 4.0 image generation.","title":"ResolutionV4"},"GenerateImageIdeogramV4RequestRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"default":"default","description":"The rendering speed to use.","title":"GenerateImageIdeogramV4RequestRenderingSpeed"},"GenerateImageIdeogramV4Request":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from, in natural language or as a\nstructured Ideogram 4.0 JSON prompt. A structured JSON prompt is\nused as is and skips magic prompt unless `magic_prompt` is `on`.\n"},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls how a natural-language prompt is prepared. `auto` (the\ndefault) and `on` rewrite and expand the prompt before generation.\n`off` keeps your wording and only converts it into a structured\nprompt. A valid structured JSON prompt skips magic prompt unless\n`magic_prompt` is `on`.\n"},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"resolution":{"$ref":"#/components/schemas/ResolutionV4","description":"Optional. When supplied, the images are generated at this\nresolution. When omitted, an aspect ratio is picked automatically\nbased on the prompt.\n"},"rendering_speed":{"$ref":"#/components/schemas/GenerateImageIdeogramV4RequestRenderingSpeed","default":"default","description":"The rendering speed to use."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Run copyright detection on the generated images. Adds latency; flagged images are returned with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"],"title":"GenerateImageIdeogramV4Request"},"GenerateImageIdeogramV4Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/ideogram-4`.\nSynchronous requests (the default) include the generated images in\n`data`. Asynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageIdeogramV4Response"},"GenerateImageIdeogramV4CustomModelRequestRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"description":"The rendering speed to use. When omitted, a speed supported by the custom model is used.","title":"GenerateImageIdeogramV4CustomModelRequestRenderingSpeed"},"GenerateImageIdeogramV4CustomModelRequest":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from, in natural language or as a\nstructured Ideogram 4.0 JSON prompt. A structured JSON prompt is\nused as is and skips magic prompt unless `magic_prompt` is `on`.\n"},"custom_model_uri":{"type":"string","pattern":"^model/[^/]+/version/[^/]+$","minLength":1,"maxLength":512,"description":"The custom model URI, in the form `model/<model_name>/version/<version_name>`. You or your organization must have access to the model. The model determines which rendering speeds are supported."},"transparent_background":{"type":"boolean","default":false,"description":"Remove the background after generation and return transparent PNG images. Included in the custom model generation price at no extra charge. When false, the model's automatic background removal behavior still applies."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls how a natural-language prompt is prepared. `auto` (the\ndefault) and `on` rewrite and expand the prompt before generation.\n`off` keeps your wording and only converts it into a structured\nprompt. A valid structured JSON prompt skips magic prompt unless\n`magic_prompt` is `on`.\n"},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"resolution":{"$ref":"#/components/schemas/ResolutionV4","description":"Optional. When supplied, the images are generated at this\nresolution. When omitted, an aspect ratio is picked automatically\nbased on the prompt.\n"},"rendering_speed":{"$ref":"#/components/schemas/GenerateImageIdeogramV4CustomModelRequestRenderingSpeed","description":"The rendering speed to use. When omitted, a speed supported by the custom model is used."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Run copyright detection on the generated images. Adds latency; flagged images are returned with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt","custom_model_uri"],"title":"GenerateImageIdeogramV4CustomModelRequest"},"GenerateImageIdeogramV4CustomModelResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/ideogram-4-custom-model`.\nSynchronous requests (the default) include the generated images in\n`data`. Asynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageIdeogramV4CustomModelResponse"},"IdeogramV4AspectRatio":{"type":"string","enum":["auto","1x4","1x3","1x2","9x16","10x16","2x3","3x4","4x5","1x1","5x4","4x3","3x2","16x10","16x9","2x1","3x1","4x1"],"default":"auto","description":"Supported output aspect ratios. The operation defines whether `auto`\npreserves the source shape or selects a shape from the prompt.\n","title":"IdeogramV4AspectRatio"},"GenerateImageIdeogramV4TransparentRequestOutputResolution":{"type":"string","enum":["1k","2k","4k","8k"],"default":"1k","description":"The output resolution tier. Each tier is a total pixel budget equal\nto a square of the named size (for example, `8k` delivers at most\n8192x8192 pixels in total). Wide and tall aspect ratios keep the\nsame budget, so one side may exceed the named size. Tiers above\n2k are produced by upscaling after generation. Defaults to 1k.\n","title":"GenerateImageIdeogramV4TransparentRequestOutputResolution"},"GenerateImageIdeogramV4TransparentRequestRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"default":"default","description":"The rendering speed to use.","title":"GenerateImageIdeogramV4TransparentRequestRenderingSpeed"},"GenerateImageIdeogramV4TransparentRequest":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from, in natural language or as a\nstructured Ideogram 4.0 JSON prompt. A structured JSON prompt is\nused as is and skips magic prompt, except that its background\ndescription is replaced with a transparent background.\n"},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls how a natural-language prompt is prepared. `auto` (the\ndefault) and `on` rewrite and expand the prompt before generation.\n`off` keeps your wording and only converts it into a structured\nprompt. A valid structured JSON prompt skips magic prompt unless\n`magic_prompt` is `on`.\n"},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"aspect_ratio":{"$ref":"#/components/schemas/IdeogramV4AspectRatio","default":"auto"},"output_resolution":{"$ref":"#/components/schemas/GenerateImageIdeogramV4TransparentRequestOutputResolution","default":"1k","description":"The output resolution tier. Each tier is a total pixel budget equal\nto a square of the named size (for example, `8k` delivers at most\n8192x8192 pixels in total). Wide and tall aspect ratios keep the\nsame budget, so one side may exceed the named size. Tiers above\n2k are produced by upscaling after generation. Defaults to 1k.\n"},"rendering_speed":{"$ref":"#/components/schemas/GenerateImageIdeogramV4TransparentRequestRenderingSpeed","default":"default","description":"The rendering speed to use."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Run copyright detection on the generated images. Adds latency; flagged images are returned with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"],"title":"GenerateImageIdeogramV4TransparentRequest"},"GenerateImageIdeogramV4TransparentResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by\n`POST /v2/image/generate/ideogram-4-transparent`. Synchronous\nrequests (the default) include the generated images in `data`.\nAsynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageIdeogramV4TransparentResponse"},"ResolutionV3":{"type":"string","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"],"description":"The resolutions supported for Ideogram 3.0.","title":"ResolutionV3"},"IdeogramV3AspectRatio":{"type":"string","enum":["auto","1x3","3x1","1x2","2x1","9x16","16x9","10x16","16x10","2x3","3x2","3x4","4x3","4x5","5x4","1x1"],"description":"The aspect ratio for an Ideogram 3.x or 2.x generation. `auto` lets the\nmodel select a ratio from the prompt; any other value pins the ratio.\nCannot be combined with `resolution`. Omitting the field is not `auto`:\nit uses `1x1`.\n","title":"IdeogramV3AspectRatio"},"V2ImageGenerateIdeogram3PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"default":"default","description":"The rendering speed to use.","title":"V2ImageGenerateIdeogram3PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed"},"IdeogramColorPalettePresetName":{"type":"string","enum":["ember","fresh","jungle","magic","melon","mosaic","pastel","ultramarine"],"description":"A color palette preset value.","title":"IdeogramColorPalettePresetName"},"IdeogramColorPaletteWithPresetName":{"type":"object","properties":{"name":{"$ref":"#/components/schemas/IdeogramColorPalettePresetName"}},"required":["name"],"description":"A color palette specified only via its name. Cannot be used in conjunction with members.","title":"IdeogramColorPaletteWithPresetName"},"ColorPaletteMember":{"type":"object","properties":{"color_hex":{"type":"string","pattern":"^#(?:[0-9a-fA-F]{3}){1,2}$","description":"The hexadecimal representation of the color with an optional chosen weight."},"color_weight":{"type":"number","format":"double","minimum":0.05,"maximum":1,"description":"The weight of the color in the color palette."}},"required":["color_hex"],"description":"A member of a color palette.","title":"ColorPaletteMember"},"ColorPaletteWithMembers":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/ColorPaletteMember"},"description":"A list of ColorPaletteMembers that define the color palette. Each color palette member\nconsists of a required color hex and an optional weight between 0.05 and 1.0 (inclusive).\nIt is recommended that these weights descend from highest to lowest for the color hexes provided.\n"}},"required":["members"],"description":"A color palette represented only via its members. Cannot be used in conjunction with preset name.","title":"ColorPaletteWithMembers"},"IdeogramColorPalette":{"oneOf":[{"$ref":"#/components/schemas/IdeogramColorPaletteWithPresetName"},{"$ref":"#/components/schemas/ColorPaletteWithMembers"}],"description":"A color palette for generation, must EITHER be specified via one of the presets (name) or explicitly via hexadecimal representations of the color with optional weights (members).","title":"IdeogramColorPalette"},"StyleCode":{"type":"string","pattern":"^[0-9a-fA-F]{8}$","description":"The 8 character hexadecimal representation of the style code.","title":"StyleCode"},"IdeogramV3StyleType":{"type":"string","enum":["auto","general","realistic","design","custom","fiction","stylized"],"default":"general","description":"The style type to generate with.","title":"IdeogramV3StyleType"},"IdeogramV3StylePreset":{"type":"string","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"],"description":"A predefined style preset that applies a specific artistic style to the generated image.","title":"IdeogramV3StylePreset"},"GenerateImageIdeogramV3Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/ideogram-3`.\nSynchronous requests (the default) include the generated images in\n`data`. Asynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageIdeogramV3Response"},"V2ImageGenerateIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"default":"default","description":"The rendering speed to use.","title":"V2ImageGenerateIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed"},"V2ImageGenerateIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaStyleType":{"type":"string","enum":["auto","realistic","fiction"],"default":"auto","description":"The style type to generate the character with. Defaults to `auto`.","title":"V2ImageGenerateIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaStyleType"},"GenerateImageIdeogramV3CharacterResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/ideogram-3-character`.\nSynchronous requests (the default) include the generated images in\n`data`. Asynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageIdeogramV3CharacterResponse"},"V2ImageGenerateIdeogram3CustomModelPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"description":"The rendering speed to use. When omitted, a speed supported by the custom model is used.","title":"V2ImageGenerateIdeogram3CustomModelPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed"},"GenerateImageIdeogramV3CustomModelResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/ideogram-3-custom-model`.\nSynchronous requests (the default) include the generated images in\n`data`. Asynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageIdeogramV3CustomModelResponse"},"GenerateImageIdeogramV3TransparentRequestUpscaleFactor":{"type":"string","enum":["x1","x2","x4"],"default":"x1","description":"Optional enhancement factor applied after generation. `x1` (the default) delivers the base render.","title":"GenerateImageIdeogramV3TransparentRequestUpscaleFactor"},"GenerateImageIdeogramV3TransparentRequestRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"default":"default","description":"The rendering speed to use.","title":"GenerateImageIdeogramV3TransparentRequestRenderingSpeed"},"GenerateImageIdeogramV3TransparentRequest":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from."},"negative_prompt":{"type":"string","maxLength":10000,"description":"Description of what to exclude from the images. The prompt takes precedence over the negative prompt."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"upscale_factor":{"$ref":"#/components/schemas/GenerateImageIdeogramV3TransparentRequestUpscaleFactor","default":"x1","description":"Optional enhancement factor applied after generation. `x1` (the default) delivers the base render."},"aspect_ratio":{"$ref":"#/components/schemas/IdeogramV3AspectRatio"},"rendering_speed":{"$ref":"#/components/schemas/GenerateImageIdeogramV3TransparentRequestRenderingSpeed","default":"default","description":"The rendering speed to use."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). Defaults to `auto`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Run copyright detection on the generated images. Adds latency; flagged images are returned with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"],"title":"GenerateImageIdeogramV3TransparentRequest"},"GenerateImageIdeogramV3TransparentResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by\n`POST /v2/image/generate/ideogram-3-transparent`. Synchronous\nrequests (the default) include the generated images in `data`.\nAsynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageIdeogramV3TransparentResponse"},"GenerateImageIdeogramV2ARequestRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"default":"default","description":"The rendering speed to use. `turbo` generates faster at a lower cost, while `quality` prioritizes the highest-quality result.","title":"GenerateImageIdeogramV2ARequestRenderingSpeed"},"IdeogramV2StyleType":{"type":"string","enum":["auto","general","realistic","design","render_3d","anime"],"description":"The style type to generate with. When omitted, the model's default styling is used; pass `auto` to have a style selected automatically from the prompt.","title":"IdeogramV2StyleType"},"GenerateImageIdeogramV2ARequest":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"aspect_ratio":{"$ref":"#/components/schemas/IdeogramV3AspectRatio"},"rendering_speed":{"$ref":"#/components/schemas/GenerateImageIdeogramV2ARequestRenderingSpeed","default":"default","description":"The rendering speed to use. `turbo` generates faster at a lower cost, while `quality` prioritizes the highest-quality result."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). Defaults to `auto`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"style_type":{"$ref":"#/components/schemas/IdeogramV2StyleType"},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Run copyright detection on the generated images. Adds latency; flagged images are returned with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"],"title":"GenerateImageIdeogramV2ARequest"},"GenerateImageIdeogramV2AResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/ideogram-2a`.\nSynchronous requests (the default) include the generated images in\n`data`. Asynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageIdeogramV2AResponse"},"GenerateImageIdeogramV2RequestRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"default":"default","description":"The rendering speed to use. `turbo` generates faster at a lower cost, while `quality` prioritizes the highest-quality result.","title":"GenerateImageIdeogramV2RequestRenderingSpeed"},"GenerateImageIdeogramV2Request":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from."},"negative_prompt":{"type":"string","maxLength":10000,"description":"Description of what to exclude from the images. The prompt takes precedence over the negative prompt."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"aspect_ratio":{"$ref":"#/components/schemas/IdeogramV3AspectRatio"},"rendering_speed":{"$ref":"#/components/schemas/GenerateImageIdeogramV2RequestRenderingSpeed","default":"default","description":"The rendering speed to use. `turbo` generates faster at a lower cost, while `quality` prioritizes the highest-quality result."},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). Defaults to `auto`."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"style_type":{"$ref":"#/components/schemas/IdeogramV2StyleType"},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Run copyright detection on the generated images. Adds latency; flagged images are returned with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"],"title":"GenerateImageIdeogramV2Request"},"GenerateImageIdeogramV2Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/ideogram-2`.\nSynchronous requests (the default) include the generated images in\n`data`. Asynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageIdeogramV2Response"},"V2ImageGenerateGptImage25FlarePostRequestBodyContentMultipartFormDataSchemaBackground":{"type":"string","enum":["auto","transparent","opaque"],"default":"auto","description":"The output background. `transparent` returns images with an alpha channel, `opaque` forces a solid background, and `auto` lets the model decide from the prompt.","title":"V2ImageGenerateGptImage25FlarePostRequestBodyContentMultipartFormDataSchemaBackground"},"V2ImageGenerateGptImage25FlarePostRequestBodyContentMultipartFormDataSchemaQuality":{"type":"string","enum":["auto","low","medium","high"],"default":"auto","description":"How much rendering effort the model spends. Lower tiers return sooner and cost less; `auto` lets the model choose, which it currently renders at `high`.","title":"V2ImageGenerateGptImage25FlarePostRequestBodyContentMultipartFormDataSchemaQuality"},"GenerateImageGptImage25FlareResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/gpt-image-2-5-flare`.\nSynchronous requests (the default) include the generated images in\n`data`. Asynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageGptImage25FlareResponse"},"V2ImageGenerateGptImage25SunburstPostRequestBodyContentMultipartFormDataSchemaBackground":{"type":"string","enum":["auto","transparent","opaque"],"default":"auto","description":"The output background. `transparent` returns images with an alpha channel, `opaque` forces a solid background, and `auto` lets the model decide from the prompt.","title":"V2ImageGenerateGptImage25SunburstPostRequestBodyContentMultipartFormDataSchemaBackground"},"V2ImageGenerateGptImage25SunburstPostRequestBodyContentMultipartFormDataSchemaQuality":{"type":"string","enum":["auto","low","medium","high"],"default":"auto","description":"How much rendering effort the model spends. Lower tiers return sooner and cost less; `auto` lets the model choose, which it currently renders at `high`.","title":"V2ImageGenerateGptImage25SunburstPostRequestBodyContentMultipartFormDataSchemaQuality"},"GenerateImageGptImage25SunburstResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/gpt-image-2-5-sunburst`.\nSynchronous requests (the default) include the generated images in\n`data`. Asynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageGptImage25SunburstResponse"},"GenerateImageGptImage2Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/gpt-image-2`.\nSynchronous requests (the default) include the generated images in\n`data`. Asynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageGptImage2Response"},"NanoBanana2AspectRatio":{"type":"string","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"],"default":"auto","description":"Output aspect ratios Nano Banana 2 serves. `auto` lets the model choose the shape; an edit keeps its source image's shape.","title":"NanoBanana2AspectRatio"},"V2ImageGenerateNanoBanana2PostRequestBodyContentMultipartFormDataSchemaResolutionTier":{"type":"string","enum":["1K","2K","4K"],"default":"1K","description":"The output resolution tier.","title":"V2ImageGenerateNanoBanana2PostRequestBodyContentMultipartFormDataSchemaResolutionTier"},"GenerateImageNanoBanana2Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/nano-banana-2`.\nSynchronous requests (the default) include the generated images in\n`data`. Asynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageNanoBanana2Response"},"NanoBanana21AspectRatio":{"type":"string","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"],"default":"auto","description":"Output aspect ratios Nano Banana 2.1 serves. `auto` lets the model choose the shape; an edit keeps its source image's shape.","title":"NanoBanana21AspectRatio"},"V2ImageGenerateNanoBanana21PostRequestBodyContentMultipartFormDataSchemaResolutionTier":{"type":"string","enum":["1K","2K","4K"],"default":"1K","description":"The output resolution tier.","title":"V2ImageGenerateNanoBanana21PostRequestBodyContentMultipartFormDataSchemaResolutionTier"},"GenerateImageNanoBanana21Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/nano-banana-2-1`.\nSynchronous requests (the default) include the generated images in\n`data`. Asynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageNanoBanana21Response"},"NanoBananaProAspectRatio":{"type":"string","enum":["auto","1:1","3:2","2:3","4:3","3:4","5:4","4:5","16:9","9:16","21:9"],"default":"auto","description":"Output aspect ratios Nano Banana Pro serves. `auto` lets the model choose the shape; an edit keeps its source image's shape.","title":"NanoBananaProAspectRatio"},"V2ImageGenerateNanoBananaProPostRequestBodyContentMultipartFormDataSchemaResolutionTier":{"type":"string","enum":["1K","2K","4K"],"default":"1K","description":"The output resolution tier.","title":"V2ImageGenerateNanoBananaProPostRequestBodyContentMultipartFormDataSchemaResolutionTier"},"GenerateImageNanoBananaProResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/nano-banana-pro`.\nSynchronous requests (the default) include the generated images in\n`data`. Asynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageNanoBananaProResponse"},"GenerationQuality":{"type":"string","enum":["very_low","low","medium","high","very_high"],"description":"The generation quality level. Higher levels may use more inference steps\nor additional prompt processing. `very_high` has noticeably higher latency\nand cost than the other levels.\n","title":"GenerationQuality"},"GenerateImagePImageIdeogramRequestResolution":{"type":"string","enum":["1k","2k"],"description":"The output size tier. Defaults to `1k`. Cannot be combined with `custom_width`/`custom_height`.","title":"GenerateImagePImageIdeogramRequestResolution"},"AspectRatioV3":{"type":"string","enum":["1x3","3x1","1x2","2x1","9x16","16x9","10x16","16x10","2x3","3x2","3x4","4x3","4x5","5x4","1x1"],"description":"Output aspect ratio. Cannot be combined with resolution. Generation defaults to 1x1; remix keeps the source ratio when both fields are omitted.","title":"AspectRatioV3"},"GenerateImagePImageIdeogramRequest":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from, in natural language or as a\nstructured Ideogram 4.0 JSON prompt.\n"},"magic_prompt":{"$ref":"#/components/schemas/MagicPromptMode","default":"auto","description":"Controls magic prompt (automatic prompt rewriting). `off` disables magic prompt entirely. Defaults to `auto`."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"quality":{"$ref":"#/components/schemas/GenerationQuality","default":"medium","description":"The generation quality level. Defaults to `medium`."},"resolution":{"oneOf":[{"$ref":"#/components/schemas/GenerateImagePImageIdeogramRequestResolution"},{"type":"null"}],"description":"The output size tier. Defaults to `1k`. Cannot be combined with `custom_width`/`custom_height`."},"aspect_ratio":{"$ref":"#/components/schemas/AspectRatioV3","default":"1x1","description":"The output aspect ratio. Defaults to `1x1`."},"custom_width":{"type":["integer","null"],"description":"Optional. An exact output width in pixels, used together with\n`custom_height` for output sizes outside the preset tiers. Must\nbe a positive multiple of 16 between 16 and 4096, and\n`custom_width` × `custom_height` must not exceed 4,194,304 pixels\n(2048×2048). Cannot be combined with `resolution` or\n`aspect_ratio`; the request is billed at the resolution tier\nmatching its total pixel count.\n"},"custom_height":{"type":["integer","null"],"description":"Optional. An exact output height in pixels, used together with\n`custom_width`. See `custom_width` for the accepted range and\nbilling behavior.\n"},"enable_copyright_detection":{"type":["boolean","null"],"description":"Optional. Run copyright detection on the generated images. Adds latency; flagged images are returned with `is_image_safe: false`."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"],"title":"GenerateImagePImageIdeogramRequest"},"GenerateImagePImageIdeogramResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/p-image-ideogram`.\nSynchronous requests (the default) include the generated images in\n`data`. Asynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImagePImageIdeogramResponse"},"GenerateImageZImageRequest":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":10000,"description":"The prompt to generate images from."},"resolution":{"type":["string","null"],"description":"Exact output resolution, formatted as \"WIDTHxHEIGHT\". Each side must be a positive multiple of 16 and the total area must not exceed 1,048,576 pixels (1024×1024). When omitted, the model's default 1024×1024 is used."},"num_inference_steps":{"type":["integer","null"],"minimum":1,"maximum":128,"description":"Optional number of diffusion steps. When omitted, the model's\ndefault is used. Higher values improve quality but take longer.\n"},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1,"description":"The number of images to generate."},"async":{"type":"boolean","default":false,"description":"When false (the default), the request waits until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll `GET /v2/generations/{generation_id}` with the returned `generation_id` for the result."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"],"title":"GenerateImageZImageRequest"},"GenerateImageZImageResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The generated images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/generate/z-image`. Synchronous\nrequests (the default) include the generated images in `data`.\nAsynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"GenerateImageZImageResponse"},"V2ImageRemixAutoPostRequestBodyContentMultipartFormDataSchemaResolutionTier":{"type":"string","enum":["1k","2k"],"description":"The output resolution tier. When omitted, the tier is inferred from `resolution`, or defaults to 1k. A color palette, style codes, style preset, or non-`auto` style type are only supported at 1k.","title":"V2ImageRemixAutoPostRequestBodyContentMultipartFormDataSchemaResolutionTier"},"Seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation.","title":"Seed"},"ToolRemixResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The remixed images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"$ref":"#/components/schemas/Seed","description":"The seed attached to the request. Reusing it does not guarantee a reproducible result, because the selected model may not honor seeds."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/remix/auto`. Synchronous\nrequests (the default) include the remixed images in `data`.\nAsynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`.\n","title":"ToolRemixResponse"},"V2ImageRemixIdeogram4PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"default":"default","description":"The rendering speed to use.","title":"V2ImageRemixIdeogram4PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed"},"RemixedImageObject":{"type":"object","properties":{"url":{"type":["string","null"],"format":"uri","description":"The direct link to the remixed image. Empty when the image did not pass safety checks."},"prompt":{"type":"string","description":"The final prompt the image was generated from."},"resolution":{"type":"string","description":"The resolution of the remixed image, formatted as \"WIDTHxHEIGHT\"."},"is_image_safe":{"type":"boolean","description":"Whether the image passed safety checks. If false, `url` is empty."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["prompt","resolution","is_image_safe","seed"],"description":"One remixed output image.","title":"RemixedImageObject"},"RemixImageIdeogramV4Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the accepted generation. Accepted by the\n`GET /v2/generations/{generation_id}` polling endpoint.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/RemixedImageObject"},"description":"The remixed images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/remix/ideogram-4`.\nSynchronous requests (the default) include the remixed images in\n`data`. Requests with `async` set to true omit `data`; poll for\ncompletion and results with `GET /v2/generations/{generation_id}`\nusing the returned `generation_id`. The seed reports the value the\nrequest resolved to.\n","title":"RemixImageIdeogramV4Response"},"V2ImageRemixIdeogram3PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"default":"default","description":"The rendering speed to use.","title":"V2ImageRemixIdeogram3PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed"},"RemixImageIdeogramV3Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the accepted generation. Accepted by the\n`GET /v2/generations/{generation_id}` polling endpoint.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/RemixedImageObject"},"description":"The remixed images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/remix/ideogram-3`.\nSynchronous requests (the default) include the remixed images in\n`data`. Requests with `async` set to true omit `data`; poll for\ncompletion and results with `GET /v2/generations/{generation_id}`\nusing the returned `generation_id`. The seed reports the value the\nrequest resolved to when the caller left it unset.\n","title":"RemixImageIdeogramV3Response"},"V2ImageRemixIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"default":"default","description":"The rendering speed to use.","title":"V2ImageRemixIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed"},"V2ImageRemixIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaStyleType":{"type":"string","enum":["auto","realistic","fiction"],"default":"auto","description":"The style type to remix the character with. Defaults to `auto`.","title":"V2ImageRemixIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaStyleType"},"RemixImageIdeogramV3CharacterResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the accepted generation. Accepted by the\n`GET /v2/generations/{generation_id}` polling endpoint.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/RemixedImageObject"},"description":"The remixed images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/remix/ideogram-3-character`.\nSynchronous requests (the default) include the remixed images in\n`data`. Requests with `async` set to true omit `data`; poll for\ncompletion and results with `GET /v2/generations/{generation_id}`\nusing the returned `generation_id`. The seed reports the value the\nrequest resolved to when the caller left it unset.\n","title":"RemixImageIdeogramV3CharacterResponse"},"V2ImageRemixIdeogram3CustomModelPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"description":"The rendering speed to use. When omitted, the server chooses a speed supported by the selected custom model.","title":"V2ImageRemixIdeogram3CustomModelPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed"},"RemixImageIdeogramV3CustomModelResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the accepted generation. Accepted by the\n`GET /v2/generations/{generation_id}` polling endpoint.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/RemixedImageObject"},"description":"The remixed images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/remix/ideogram-3-custom-model`.\nSynchronous requests (the default) include the remixed images in\n`data`. Requests with `async` set to true omit `data`; poll for\ncompletion and results with `GET /v2/generations/{generation_id}`\nusing the returned `generation_id`. The seed reports the value the\nrequest resolved to when the caller left it unset.\n","title":"RemixImageIdeogramV3CustomModelResponse"},"V2ImageRemixIdeogram2APostRequestBodyContentMultipartFormDataSchemaRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"default":"default","description":"The rendering speed to use. `turbo` generates faster at a lower cost, while `quality` prioritizes the highest-quality result.","title":"V2ImageRemixIdeogram2APostRequestBodyContentMultipartFormDataSchemaRenderingSpeed"},"RemixImageIdeogramV2AResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the accepted generation. Accepted by the\n`GET /v2/generations/{generation_id}` polling endpoint.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/RemixedImageObject"},"description":"The remixed images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/remix/ideogram-2a`.\nSynchronous requests (the default) include the remixed images in\n`data`. Requests with `async` set to true omit `data`; poll for\ncompletion and results with `GET /v2/generations/{generation_id}`\nusing the returned `generation_id`. The seed reports the value the\nrequest resolved to.\n","title":"RemixImageIdeogramV2AResponse"},"V2ImageRemixIdeogram2PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"default":"default","description":"The rendering speed to use. `turbo` generates faster at a lower cost, while `quality` prioritizes the highest-quality result.","title":"V2ImageRemixIdeogram2PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed"},"RemixImageIdeogramV2Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the accepted generation. Accepted by the\n`GET /v2/generations/{generation_id}` polling endpoint.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/RemixedImageObject"},"description":"The remixed images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/image/remix/ideogram-2`.\nSynchronous requests (the default) include the remixed images in\n`data`. Requests with `async` set to true omit `data`; poll for\ncompletion and results with `GET /v2/generations/{generation_id}`\nusing the returned `generation_id`. The seed reports the value the\nrequest resolved to.\n","title":"RemixImageIdeogramV2Response"},"V2ImageInpaintIdeogram3PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"default":"default","description":"The rendering speed to use.","title":"V2ImageInpaintIdeogram3PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed"},"InpaintedImageObject":{"type":"object","properties":{"url":{"type":["string","null"],"format":"uri","description":"The direct link to the repainted image. Empty when the image did not pass safety checks."},"prompt":{"type":"string","description":"The final prompt the image was generated from."},"resolution":{"type":"string","description":"The resolution of the repainted image, formatted as \"WIDTHxHEIGHT\"."},"is_image_safe":{"type":"boolean","description":"Whether the image passed safety checks. If false, `url` is empty."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["prompt","resolution","is_image_safe","seed"],"description":"One repainted output image.","title":"InpaintedImageObject"},"InpaintImageIdeogramV3Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the accepted generation. Accepted by the\n`GET /v2/generations/{generation_id}` polling endpoint.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/InpaintedImageObject"},"description":"The repainted images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"width":{"type":"integer","description":"The output width in pixels this request resolved to."},"height":{"type":"integer","description":"The output height in pixels this request resolved to."}},"required":["generation_id","seed","width","height"],"description":"Response returned by `POST /v2/image/inpaint/ideogram-3`.\nSynchronous requests (the default) include the repainted images in\n`data`. Requests with `async` set to true omit `data`; poll for\ncompletion and results with `GET /v2/generations/{generation_id}`\nusing the returned `generation_id`. The seed, width, and height report\nthe values the request resolved to when the caller left them unset.\n","title":"InpaintImageIdeogramV3Response"},"V2ImageInpaintIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"default":"default","description":"The rendering speed to use.","title":"V2ImageInpaintIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed"},"V2ImageInpaintIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaStyleType":{"type":"string","enum":["auto","realistic","fiction"],"default":"auto","description":"The style type to repaint the character with. Defaults to `auto`. `realistic` and `fiction` are supported for character-only requests; style codes or style references (not both) require `auto`. For API-key callers, combining a style with a character requires that feature to be enabled for their account.","title":"V2ImageInpaintIdeogram3CharacterPostRequestBodyContentMultipartFormDataSchemaStyleType"},"InpaintImageIdeogramV3CharacterResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the accepted generation. Accepted by the\n`GET /v2/generations/{generation_id}` polling endpoint.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/InpaintedImageObject"},"description":"The repainted images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"width":{"type":"integer","description":"The output width in pixels this request resolved to."},"height":{"type":"integer","description":"The output height in pixels this request resolved to."}},"required":["generation_id","seed","width","height"],"description":"Response returned by `POST /v2/image/inpaint/ideogram-3-character`.\nSynchronous requests (the default) include the repainted images in\n`data`. Requests with `async` set to true omit `data`; poll for\ncompletion and results with `GET /v2/generations/{generation_id}`\nusing the returned `generation_id`. The seed, width, and height report\nthe values the request resolved to when the caller left them unset.\n","title":"InpaintImageIdeogramV3CharacterResponse"},"V2ImageInpaintIdeogram3CustomModelPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"description":"The rendering speed to use. When omitted, the server chooses a speed supported by the selected custom model.","title":"V2ImageInpaintIdeogram3CustomModelPostRequestBodyContentMultipartFormDataSchemaRenderingSpeed"},"InpaintImageIdeogramV3CustomModelResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID accepted by the generation polling endpoint."},"data":{"type":"array","items":{"$ref":"#/components/schemas/InpaintedImageObject"},"description":"The repainted images, in generation order. Present only for synchronous requests."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"width":{"type":"integer","description":"The output width in pixels."},"height":{"type":"integer","description":"The output height in pixels."}},"required":["generation_id","seed","width","height"],"description":"Response returned by\n`POST /v2/image/inpaint/ideogram-3-custom-model`. Synchronous\nrequests include the repainted images in `data`; asynchronous requests\nomit `data` and can be polled with\n`GET /v2/generations/{generation_id}`.\n","title":"InpaintImageIdeogramV3CustomModelResponse"},"V2ImageReframeIdeogram3PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"default":"default","title":"V2ImageReframeIdeogram3PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed"},"ReframeImageIdeogramV3Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the accepted generation. Accepted by the\n`GET /v2/generations/{generation_id}` polling endpoint.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedImageObject"},"description":"The reframed images, in generation order. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Synchronous requests (the default) include the reframed images in\n`data`. Requests with `async` set to true omit `data`; poll for\ncompletion and results with `GET /v2/generations/{generation_id}`.\nThe seed reports the value the request resolved to when the caller\nleft it unset.\n","title":"ReframeImageIdeogramV3Response"},"NanoBanana2ReframeAspectRatio":{"type":"string","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"],"description":"Aspect ratios Nano Banana 2 can reframe an image to.","title":"NanoBanana2ReframeAspectRatio"},"ReframeImageNanoBanana2Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the accepted generation. Accepted by the\n`GET /v2/generations/{generation_id}` polling endpoint.\n"},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"width":{"type":"integer","description":"The resolved 1K output width in pixels."},"height":{"type":"integer","description":"The resolved 1K output height in pixels."}},"required":["generation_id","seed","width","height"],"description":"Acknowledges an accepted asynchronous Reframe request. Poll\n`GET /v2/generations/{generation_id}` for completion and output\nimages. The seed, width, and height report the values the request\nresolved to when the caller left them unset.\n","title":"ReframeImageNanoBanana2Response"},"V2ImageUpscaleAutoPostRequestBodyContentMultipartFormDataSchemaUpscaleFactor":{"type":"string","enum":["x2","x4","x8"],"default":"x2","description":"How much to enlarge the source image: 2x, 4x, or 8x its original width and height. Rejected when the output would exceed 8192px on either side.","title":"V2ImageUpscaleAutoPostRequestBodyContentMultipartFormDataSchemaUpscaleFactor"},"UpscaleImageObject":{"type":"object","properties":{"url":{"type":["string","null"],"format":"uri","description":"The direct link to the upscaled image. Empty when the image did not pass safety checks."},"resolution":{"type":"string","description":"The resolution of the upscaled image, formatted as \"WIDTHxHEIGHT\"."},"is_image_safe":{"type":"boolean","description":"Whether the image passed safety checks. If false, `url` is empty."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["resolution","is_image_safe","seed"],"description":"One upscaled output image.","title":"UpscaleImageObject"},"UpscaleToolResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"The generation ID to poll with `GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/UpscaleImageObject"},"description":"The upscaled image. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"width":{"type":"integer","description":"The output width in pixels."},"height":{"type":"integer","description":"The output height in pixels."}},"required":["generation_id","seed","width","height"],"description":"Synchronous requests (the default) include the upscaled image in `data`.\nAsync requests omit `data`; poll `GET /v2/generations/{generation_id}`\nwith the returned `generation_id`. `seed` is the seed actually used,\nand `width` and `height` are the output dimensions.\n","title":"UpscaleToolResponse"},"V2ImageUpscaleNanoBananaProPostRequestBodyContentMultipartFormDataSchemaResolutionTier":{"type":"string","enum":["1K","2K","4K"],"default":"2K","description":"The output resolution tier. The model sizes its output by tier at the source image's aspect ratio; exact pixel dimensions cannot be requested. Rejected when the source is already at or above the requested tier. Defaults to \"2K\".","title":"V2ImageUpscaleNanoBananaProPostRequestBodyContentMultipartFormDataSchemaResolutionTier"},"UpscaleImageNanoBananaProResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"The generation ID to poll with `GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/UpscaleImageObject"},"description":"The upscaled image. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"width":{"type":"integer","description":"The output width in pixels."},"height":{"type":"integer","description":"The output height in pixels."}},"required":["generation_id","seed","width","height"],"description":"Synchronous requests (the default) include the upscaled image in `data`.\nAsync requests omit `data`; poll `GET /v2/generations/{generation_id}`\nwith the returned `generation_id`. `seed` is the seed actually used,\nand `width` and `height` are the output dimensions.\n","title":"UpscaleImageNanoBananaProResponse"},"V2ImageUpscaleTopazBloom2PostRequestBodyContentMultipartFormDataSchemaUpscaleFactor":{"type":"string","enum":["x2","x4","x8"],"default":"x2","description":"How much to enlarge the source image: 2x, 4x, or 8x its original width and height. Rejected when the output would exceed 8192px on either side.","title":"V2ImageUpscaleTopazBloom2PostRequestBodyContentMultipartFormDataSchemaUpscaleFactor"},"UpscaleImageTopazBloom2Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"The generation ID to poll with `GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/UpscaleImageObject"},"description":"The upscaled image. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"width":{"type":"integer","description":"The output width in pixels."},"height":{"type":"integer","description":"The output height in pixels."}},"required":["generation_id","seed","width","height"],"description":"Synchronous requests (the default) include the upscaled image in `data`.\nAsync requests omit `data`; poll `GET /v2/generations/{generation_id}`\nwith the returned `generation_id`. `seed` is the seed actually used,\nand `width` and `height` are the output dimensions.\n","title":"UpscaleImageTopazBloom2Response"},"V2ImageUpscaleTopazRedefinePostRequestBodyContentMultipartFormDataSchemaUpscaleFactor":{"type":"string","enum":["x2","x4","x8"],"default":"x2","description":"How much to enlarge the source image: 2x, 4x, or 8x its original width and height. Rejected when the output would exceed 8192px on either side.","title":"V2ImageUpscaleTopazRedefinePostRequestBodyContentMultipartFormDataSchemaUpscaleFactor"},"V2ImageUpscaleTopazRedefinePostRequestBodyContentMultipartFormDataSchemaSubjectDetection":{"type":"string","enum":["all","foreground","background"],"description":"Where enhancements apply. Omit to let the model choose per image.","title":"V2ImageUpscaleTopazRedefinePostRequestBodyContentMultipartFormDataSchemaSubjectDetection"},"UpscaleImageTopazRedefineResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"The generation ID to poll with `GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/UpscaleImageObject"},"description":"The upscaled image. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"width":{"type":"integer","description":"The output width in pixels."},"height":{"type":"integer","description":"The output height in pixels."}},"required":["generation_id","seed","width","height"],"description":"Synchronous requests (the default) include the upscaled image in `data`.\nAsync requests omit `data`; poll `GET /v2/generations/{generation_id}`\nwith the returned `generation_id`. `seed` is the seed actually used,\nand `width` and `height` are the output dimensions.\n","title":"UpscaleImageTopazRedefineResponse"},"V2ImageUpscaleTopazStandard2PostRequestBodyContentMultipartFormDataSchemaUpscaleFactor":{"type":"string","enum":["x2","x4","x8"],"default":"x2","description":"How much to enlarge the source image: 2x, 4x, or 8x its original width and height. Rejected when the output would exceed 8192px on either side.","title":"V2ImageUpscaleTopazStandard2PostRequestBodyContentMultipartFormDataSchemaUpscaleFactor"},"V2ImageUpscaleTopazStandard2PostRequestBodyContentMultipartFormDataSchemaSubjectDetection":{"type":"string","enum":["all","foreground","background"],"description":"Where enhancements apply. Omit to let the model choose per image.","title":"V2ImageUpscaleTopazStandard2PostRequestBodyContentMultipartFormDataSchemaSubjectDetection"},"UpscaleImageTopazStandardV2Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"The generation ID to poll with `GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/UpscaleImageObject"},"description":"The upscaled image. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"width":{"type":"integer","description":"The output width in pixels."},"height":{"type":"integer","description":"The output height in pixels."}},"required":["generation_id","seed","width","height"],"description":"Synchronous requests (the default) include the upscaled image in `data`.\nAsync requests omit `data`; poll `GET /v2/generations/{generation_id}`\nwith the returned `generation_id`. `seed` is the seed actually used,\nand `width` and `height` are the output dimensions.\n","title":"UpscaleImageTopazStandardV2Response"},"V2ImageUpscaleTopazTextRefinePostRequestBodyContentMultipartFormDataSchemaUpscaleFactor":{"type":"string","enum":["x2","x4","x8"],"default":"x2","description":"How much to enlarge the source image: 2x, 4x, or 8x its original width and height. Rejected when the output would exceed 8192px on either side.","title":"V2ImageUpscaleTopazTextRefinePostRequestBodyContentMultipartFormDataSchemaUpscaleFactor"},"V2ImageUpscaleTopazTextRefinePostRequestBodyContentMultipartFormDataSchemaSubjectDetection":{"type":"string","enum":["all","foreground","background"],"description":"Where enhancements apply. Omit to let the model choose per image.","title":"V2ImageUpscaleTopazTextRefinePostRequestBodyContentMultipartFormDataSchemaSubjectDetection"},"UpscaleImageTopazTextRefineResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"The generation ID to poll with `GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/UpscaleImageObject"},"description":"The upscaled image. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"width":{"type":"integer","description":"The output width in pixels."},"height":{"type":"integer","description":"The output height in pixels."}},"required":["generation_id","seed","width","height"],"description":"Synchronous requests (the default) include the upscaled image in `data`.\nAsync requests omit `data`; poll `GET /v2/generations/{generation_id}`\nwith the returned `generation_id`. `seed` is the seed actually used,\nand `width` and `height` are the output dimensions.\n","title":"UpscaleImageTopazTextRefineResponse"},"V2ImageUpscaleTopazWonder35PostRequestBodyContentMultipartFormDataSchemaUpscaleFactor":{"type":"string","enum":["x2","x4","x8"],"default":"x2","description":"How much to enlarge the source image: 2x, 4x, or 8x its original width and height. Rejected when the output would exceed 8192px on either side.","title":"V2ImageUpscaleTopazWonder35PostRequestBodyContentMultipartFormDataSchemaUpscaleFactor"},"V2ImageUpscaleTopazWonder35PostRequestBodyContentMultipartFormDataSchemaEnhancementStrength":{"type":"string","enum":["low","medium","high"],"default":"high","description":"How strongly the generative model reconstructs detail while upscaling. Lower values stay closer to the source image; higher values produce a more enhanced result.","title":"V2ImageUpscaleTopazWonder35PostRequestBodyContentMultipartFormDataSchemaEnhancementStrength"},"UpscaleImageTopazWonder35Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"The generation ID to poll with `GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/UpscaleImageObject"},"description":"The upscaled image. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"width":{"type":"integer","description":"The output width in pixels."},"height":{"type":"integer","description":"The output height in pixels."}},"required":["generation_id","seed","width","height"],"description":"Synchronous requests (the default) include the upscaled image in `data`.\nAsync requests omit `data`; poll `GET /v2/generations/{generation_id}`\nwith the returned `generation_id`. `seed` is the seed actually used,\nand `width` and `height` are the output dimensions.\n","title":"UpscaleImageTopazWonder35Response"},"V2ImageUpscaleTopazWonder4PostRequestBodyContentMultipartFormDataSchemaUpscaleFactor":{"type":"string","enum":["x2","x4"],"default":"x2","description":"How much to enlarge the source image: 2x or 4x its original width and height. Rejected when the output would exceed 100 megapixels.","title":"V2ImageUpscaleTopazWonder4PostRequestBodyContentMultipartFormDataSchemaUpscaleFactor"},"UpscaleImageTopazWonder4Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"The generation ID to poll with `GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/UpscaleImageObject"},"description":"The upscaled image. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"width":{"type":"integer","description":"The output width in pixels."},"height":{"type":"integer","description":"The output height in pixels."}},"required":["generation_id","seed","width","height"],"description":"Synchronous requests (the default) include the upscaled image in `data`.\nAsync requests omit `data`; poll `GET /v2/generations/{generation_id}`\nwith the returned `generation_id`. `width` and `height` are the output\ndimensions.\n","title":"UpscaleImageTopazWonder4Response"},"V2ImageReplaceBackgroundIdeogram3PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed":{"type":"string","enum":["turbo","default","quality"],"default":"default","description":"The rendering speed to use.","title":"V2ImageReplaceBackgroundIdeogram3PostRequestBodyContentMultipartFormDataSchemaRenderingSpeed"},"ReplaceBackgroundResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"The generation ID to poll with `GET /v2/generations/{generation_id}`."}},"required":["generation_id"],"description":"Acknowledgement that the request was accepted.","title":"ReplaceBackgroundResponse"},"ReplaceBackgroundQuality":{"type":"string","enum":["low","medium","high"],"description":"The quality tier for the edit. Higher tiers may improve detail and\ntake longer to complete.\n","title":"ReplaceBackgroundQuality"},"BackgroundRemovedImageObject":{"type":"object","properties":{"url":{"type":["string","null"],"format":"uri","description":"Direct link to the foreground PNG. Empty when the output fails safety checks."},"is_image_safe":{"type":"boolean","description":"Whether the foreground image passed safety checks."}},"required":["is_image_safe"],"title":"BackgroundRemovedImageObject"},"RemoveBackgroundV2Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"The generation ID to poll with `GET /v2/generations/{generation_id}`."},"data":{"type":"array","items":{"$ref":"#/components/schemas/BackgroundRemovedImageObject"},"description":"The single foreground image. Present only for synchronous requests."},"error":{"type":"string","description":"Error message for a failure after the response started streaming."},"status_code":{"type":"integer","description":"The HTTP status the failure would have returned before streaming began."}},"description":"Synchronous requests include exactly one foreground image in `data`.\nAsync requests omit `data`; poll with `generation_id` for the result.\nIf a synchronous request fails after the response has started\nstreaming, the body contains `error` and `status_code` instead of\n`generation_id`.\n","title":"RemoveBackgroundV2Response"},"RemoveObjectFromV2AssetsResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the accepted generation. Accepted by the\n`GET /v2/generations/{generation_id}` polling endpoint.\n"}},"required":["generation_id"],"description":"Acknowledgement that the request was accepted. Poll\n`GET /v2/generations/{generation_id}` with the returned `generation_id`\nfor the result.\n","title":"RemoveObjectFromV2AssetsResponse"},"V4StyleDescription":{"type":"object","properties":{"aesthetics":{"type":"string","description":"Aesthetic notes (mood, vibe, references)."},"art_style":{"type":"string","description":"Optional art-style hint (e.g., illustration, oil painting)."},"lighting":{"type":"string","description":"Lighting description."},"medium":{"type":"string","description":"Medium description (e.g., photograph, digital art)."},"photo":{"type":"string","description":"Optional photographic style notes (e.g., lens, film stock)."},"color_palette":{"type":"array","items":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"description":"Optional list of hex color strings (e.g. \"#FFD700\") that bias the\nIdeogram 4.0 output toward this palette. Applied as a soft color bias,\nnot an exact per-pixel lock.\n"}},"description":"Optional style description supplied alongside a V4 JSON prompt.","title":"V4StyleDescription"},"V4ObjPromptElementType":{"type":"string","enum":["obj"],"description":"Discriminator. Must be `obj`.","title":"V4ObjPromptElementType"},"V4TextPromptElementType":{"type":"string","enum":["text"],"description":"Discriminator. Must be `text`.","title":"V4TextPromptElementType"},"V4PromptElement":{"oneOf":[{"type":"object","properties":{"type":{"$ref":"#/components/schemas/V4ObjPromptElementType","description":"Discriminator. Must be `obj`."},"bbox":{"type":"array","items":{"type":"integer","minimum":0,"maximum":1000},"description":"Bounding box for an element, expressed as four integers in `[0, 1000]`\nwith `[y_min, x_min, y_max, x_max]` semantics (row-first). Values are\nnormalized so the canvas is `1000 x 1000` regardless of the final\nresolution.\n"},"desc":{"type":"string","description":"Description of the object element."},"color_palette":{"type":"array","items":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"description":"Optional list of hex color strings (e.g. \"#FFD700\") that bias the\nIdeogram 4.0 output toward this palette. Applied as a soft color bias,\nnot an exact per-pixel lock.\n"}},"required":["type","desc"],"description":"A non-text element (object, character, background detail) in the V4 prompt layout."},{"type":"object","properties":{"type":{"$ref":"#/components/schemas/V4TextPromptElementType","description":"Discriminator. Must be `text`."},"bbox":{"type":"array","items":{"type":"integer","minimum":0,"maximum":1000},"description":"Bounding box for an element, expressed as four integers in `[0, 1000]`\nwith `[y_min, x_min, y_max, x_max]` semantics (row-first). Values are\nnormalized so the canvas is `1000 x 1000` regardless of the final\nresolution.\n"},"text":{"type":"string","description":"The literal text to render in the image."},"desc":{"type":"string","description":"Description of the text element (style, role, placement notes)."},"color_palette":{"type":"array","items":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"description":"Optional list of hex color strings (e.g. \"#FFD700\") that bias the\nIdeogram 4.0 output toward this palette. Applied as a soft color bias,\nnot an exact per-pixel lock.\n"}},"required":["type","text","desc"],"description":"A text element to render in the V4 prompt layout."}],"discriminator":{"propertyName":"type"},"description":"A single element in the V4 prompt's compositional deconstruction.\nDiscriminated by the `type` field.\n","title":"V4PromptElement"},"V4CompositionalDeconstruction":{"type":"object","properties":{"background":{"type":"string","description":"Description of the background of the scene."},"elements":{"type":"array","items":{"$ref":"#/components/schemas/V4PromptElement"},"description":"Ordered list of elements (objects and text) composing the scene."}},"required":["background","elements"],"description":"The compositional breakdown of a V4 prompt — background plus an ordered list of elements.","title":"V4CompositionalDeconstruction"},"V4JsonPrompt":{"type":"object","properties":{"high_level_description":{"type":"string","description":"One- or two-sentence overall description of the desired image."},"style_description":{"$ref":"#/components/schemas/V4StyleDescription"},"compositional_deconstruction":{"$ref":"#/components/schemas/V4CompositionalDeconstruction"}},"required":["high_level_description","compositional_deconstruction"],"description":"Structured prompt for Ideogram 4.0 generation. When `json_prompt` is\nsupplied, magic-prompt is disabled and the diffusion model consumes\nthe JSON contract directly. Mutually exclusive with `text_prompt`\nand the legacy `prompt` field.\n","title":"V4JsonPrompt"},"DescribeImageIdeogramV4Response":{"type":"object","properties":{"description_id":{"type":"string","description":"URL-safe base64 ID of the description that was created."},"created":{"type":"string","format":"date-time","description":"The time the request was created."},"json_prompt":{"$ref":"#/components/schemas/V4JsonPrompt"}},"required":["description_id","created","json_prompt"],"description":"Response returned by `POST /v2/image/describe/ideogram-4`.\nThe `json_prompt` field is a structured `V4JsonPrompt` that can be\npassed back as `json_prompt` to the `/v1/ideogram-v4/generate` family\nof endpoints.\n","title":"DescribeImageIdeogramV4Response"},"ImageSafetyError":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"],"title":"ImageSafetyError"},"GeneratedDescription":{"type":"object","properties":{"text":{"type":"string","description":"The generated description for the provided image."}},"required":["text"],"title":"GeneratedDescription"},"DescribeImageIdeogramV3Response":{"type":"object","properties":{"description_id":{"type":"string","description":"URL-safe base64 ID of the description that was created."},"created":{"type":"string","format":"date-time","description":"The time the request was created."},"descriptions":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedDescription"},"description":"The generated description(s) for the provided image."}},"required":["description_id","created","descriptions"],"description":"Response returned by `POST /v2/image/describe/ideogram-3`.","title":"DescribeImageIdeogramV3Response"},"DetectedTextBlockAlignment":{"type":"string","enum":["left","center","right"],"description":"Detected text alignment.","title":"DetectedTextBlockAlignment"},"DetectedTextBlockFormattingItems":{"type":"string","enum":["bold","italic","underline","strikethrough","all_caps","small_caps","superscript","subscript"],"title":"DetectedTextBlockFormattingItems"},"DetectedTextBlockRole":{"type":"string","enum":["heading","subheading","body","caption"],"description":"Inferred typographic role of this text block.","title":"DetectedTextBlockRole"},"DetectedTextBlock":{"type":"object","properties":{"x":{"type":"integer","description":"X coordinate in pixels from the top-left corner."},"y":{"type":"integer","description":"Y coordinate in pixels from the top-left corner."},"width":{"type":"integer","description":"Width of the text region in pixels."},"height":{"type":"integer","description":"Height of the text region in pixels."},"text":{"type":"string","description":"The detected text content. Line breaks are represented as \\n."},"alignment":{"$ref":"#/components/schemas/DetectedTextBlockAlignment","description":"Detected text alignment."},"angle":{"type":"string","title":"float","description":"Rotation angle in degrees (clockwise). Defaults to 0.","default":0},"font_name":{"type":["string","null"],"description":"Best-matching font name from the font library."},"font_alternatives":{"type":["array","null"],"items":{"type":"string"},"description":"Alternative font matches, ranked by similarity."},"font_size":{"type":["integer","null"],"description":"Detected font size in points."},"line_height":{"type":["string","null"],"title":"float","description":"Line height multiplier (e.g., 1.2)."},"color":{"type":["string","null"],"pattern":"^#[0-9A-Fa-f]{6}$","description":"Detected text color in hex format."},"formatting":{"type":"array","items":{"$ref":"#/components/schemas/DetectedTextBlockFormattingItems"},"description":"Detected text formatting effects."},"role":{"oneOf":[{"$ref":"#/components/schemas/DetectedTextBlockRole"},{"type":"null"}],"description":"Inferred typographic role of this text block."}},"required":["x","y","width","height","text","alignment","formatting"],"description":"A single detected text region with its position, content, font information, and styling.","title":"DetectedTextBlock"},"LayerizedImageObject":{"type":"object","properties":{"url":{"type":["string","null"],"format":"uri","description":"The direct link to the design image with its text intact. Empty when the image did not pass safety checks."},"base_image_url":{"type":["string","null"],"format":"uri","description":"The direct link to the base image with all detected text removed. Empty when the image did not pass safety checks."},"resolution":{"type":"string","description":"The resolution of the design, formatted as \"WIDTHxHEIGHT\"."},"is_image_safe":{"type":"boolean","description":"Whether the image passed safety checks. If false, the image links are empty."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"text_blocks":{"type":"array","items":{"$ref":"#/components/schemas/DetectedTextBlock"},"description":"Flat list of detected text regions in the design."}},"required":["resolution","is_image_safe","seed","text_blocks"],"description":"One layerized design. Image links are available for a limited period\nof time; if you would like to keep an image, you must download it.\n","title":"LayerizedImageObject"},"LayerizeDesignIdeogramV3Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation. Use it to poll\n`GET /v2/generations/{generation_id}`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/LayerizedImageObject"},"description":"The layerized design. Present only for synchronous requests (`async` omitted or false)."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["generation_id","seed"],"description":"Response returned by `POST /v2/design/layerize/ideogram-3`.\nSynchronous requests (the default) include the layerized design in\n`data`. Asynchronous requests omit `data`; poll\n`GET /v2/generations/{generation_id}` with the returned\n`generation_id`. `seed` is the seed that was used, including when you\ndid not set one.\n","title":"LayerizeDesignIdeogramV3Response"},"KlingV3ShotType":{"type":"string","enum":["customize","intelligent"],"default":"customize","description":"How the prompt is staged. `customize` follows the prompt as written;\n`intelligent` lets the model break the prompt into its own shots.\n","title":"KlingV3ShotType"},"GenerateVideoKlingV3Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"The generation ID to poll with `GET /v2/generations/{generation_id}`.\n"},"created":{"type":"string","format":"date-time","description":"The time the request was accepted."}},"required":["generation_id","created"],"description":"Acknowledgement that the request was accepted. The generated video is not\npart of this response: poll `GET /v2/generations/{generation_id}` with\nthe returned `generation_id`, or receive it at your `webhook_url`.\nVideo links expire after a limited time, so download any video you\nwant to keep.\n","title":"GenerateVideoKlingV3Response"},"KlingV3AspectRatio":{"type":"string","enum":["16x9","9x16","1x1"],"default":"16x9","description":"The aspect ratio of the generated video.","title":"KlingV3AspectRatio"},"GenerateVideoKlingV3StandardTextToVideoRequest":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":2000,"description":"A natural-language prompt describing the video to generate."},"negative_prompt":{"type":"string","maxLength":2000,"description":"Description of what to keep out of the video. Descriptions in the prompt take precedence over descriptions in the negative prompt."},"aspect_ratio":{"$ref":"#/components/schemas/KlingV3AspectRatio","default":"16x9"},"duration":{"type":"integer","minimum":3,"maximum":15,"description":"The length of the generated video in seconds. Defaults to 5 seconds\nwhen omitted.\n"},"generate_audio":{"type":"boolean","default":false,"description":"Whether to generate an audio track for the video. Audio roughly\ndoubles the provider cost and is subject to stricter output moderation.\n"},"shot_type":{"$ref":"#/components/schemas/KlingV3ShotType","default":"customize"},"cfg_scale":{"type":"string","title":"float","description":"How closely the video follows the prompt, from 0 to 1. Lower values\nleave the model more freedom. Defaults to 0.5 when omitted.\n"},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"],"description":"Request body for Kling v3 Standard text-to-video generation.","title":"GenerateVideoKlingV3StandardTextToVideoRequest"},"Kling4AspectRatio":{"type":"string","enum":["16x9","9x16","1x1","21x9"],"description":"The aspect ratio of the generated video. Defaults to the ratio nearest the first frame's shape, or 16x9 without a first frame.","title":"Kling4AspectRatio"},"Kling4Resolution":{"type":"string","enum":["720p","1080p"],"default":"1080p","description":"The resolution tier of the generated video.","title":"Kling4Resolution"},"GenerateVideoKling4Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"The generation ID to poll with `GET /v2/generations/{generation_id}`.\n"},"created":{"type":"string","format":"date-time","description":"The time the request was accepted."}},"required":["generation_id","created"],"description":"Acknowledgement that the request was accepted. The generated video is not\npart of this response: poll `GET /v2/generations/{generation_id}` with\nthe returned `generation_id`, or receive it at your `webhook_url`.\nVideo links expire after a limited time, so download any video you\nwant to keep.\n","title":"GenerateVideoKling4Response"},"MinimaxH3Resolution":{"type":"string","enum":["480P","768P","2K","4K"],"default":"2K","description":"The resolution tier of the generated video, spelled the way MiniMax\nspells it. `480P` and `768P` are generated natively; `2K` and `4K` are\nupscaled from a `768P` result.\nHigher tiers cost more.\n","title":"MinimaxH3Resolution"},"GenerateVideoMinimaxH3Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the accepted generation. Accepted by the\n`GET /v2/generations/{generation_id}` polling endpoint.\n"},"created":{"type":"string","format":"date-time","description":"The time the request was accepted."}},"required":["generation_id","created"],"description":"Acknowledgement that the video request was accepted. The video is not\nincluded in this response: poll `GET /v2/generations/{generation_id}`\nwith the returned `generation_id`, or receive it at the `webhook_url`\nyou supplied. Video links expire after a limited time, so download any\nvideo you want to keep.\n","title":"GenerateVideoMinimaxH3Response"},"MinimaxH3AspectRatio":{"type":"string","enum":["21x9","16x9","4x3","1x1","3x4","9x16"],"default":"16x9","description":"The aspect ratio of the generated video.","title":"MinimaxH3AspectRatio"},"MinimaxH3PromptExpansionMode":{"type":"string","enum":["disabled","fast","balanced","quality"],"default":"balanced","description":"How much the model may rewrite the prompt before generating. `disabled`\nuses the prompt as written; the other modes trade latency for a richer\nrewrite.\n","title":"MinimaxH3PromptExpansionMode"},"GenerateVideoMinimaxH3TextToVideoRequest":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":2000,"description":"A natural-language prompt describing the video to generate."},"aspect_ratio":{"$ref":"#/components/schemas/MinimaxH3AspectRatio","default":"16x9"},"resolution":{"$ref":"#/components/schemas/MinimaxH3Resolution","default":"2K"},"duration":{"type":"integer","minimum":5,"maximum":15,"default":5,"description":"The length of the generated video in seconds."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"],"description":"Request body for MiniMax H3 text-to-video generation.","title":"GenerateVideoMinimaxH3TextToVideoRequest"},"SeedDance25Resolution":{"type":"string","enum":["480p","720p","1080p"],"default":"720p","description":"The resolution tier of the generated video.","title":"SeedDance25Resolution"},"GenerateVideoSeedDance25Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"The generation ID to poll with `GET /v2/generations/{generation_id}`.\n"},"created":{"type":"string","format":"date-time","description":"The time the request was accepted."}},"required":["generation_id","created"],"description":"Acknowledgement that the request was accepted. The generated video is not\npart of this response: poll `GET /v2/generations/{generation_id}` with\nthe returned `generation_id`, or receive it at your `webhook_url`.\nVideo links expire after a limited time, so download any video you\nwant to keep.\n","title":"GenerateVideoSeedDance25Response"},"SeedDance2AspectRatio":{"type":"string","enum":["auto","21x9","16x9","4x3","1x1","3x4","9x16"],"default":"auto","description":"The aspect ratio of the generated video. `auto` lets the model choose the\nmost suitable ratio from the prompt; any other value pins the ratio.\n","title":"SeedDance2AspectRatio"},"GenerateVideoSeedDance25TextToVideoRequest":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":30000,"description":"A natural-language prompt describing the video to generate."},"aspect_ratio":{"$ref":"#/components/schemas/SeedDance2AspectRatio","default":"auto"},"resolution":{"$ref":"#/components/schemas/SeedDance25Resolution","default":"720p"},"duration":{"type":"integer","minimum":4,"maximum":30,"description":"The length of the generated video in seconds. When omitted, the model\npicks the best duration for the prompt (\"auto\").\n"},"generate_audio":{"type":"boolean","default":false,"description":"Whether to generate an audio track for the video. Audio roughly\ndoubles the provider cost and is subject to stricter output moderation.\n"},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"],"description":"Request body for Seedance 2.5 text-to-video generation.","title":"GenerateVideoSeedDance25TextToVideoRequest"},"SeedDance2Resolution":{"type":"string","enum":["480p","720p"],"default":"720p","description":"The resolution tier of the generated video.","title":"SeedDance2Resolution"},"GenerateVideoSeedDance2Response":{"type":"object","properties":{"generation_id":{"type":"string","description":"The generation ID to poll with `GET /v2/generations/{generation_id}`.\n"},"created":{"type":"string","format":"date-time","description":"The time the request was accepted."}},"required":["generation_id","created"],"description":"Acknowledgement that the request was accepted. The generated video is not\npart of this response: poll `GET /v2/generations/{generation_id}` with\nthe returned `generation_id`, or receive it at your `webhook_url`.\nVideo links expire after a limited time, so download any video you\nwant to keep.\n","title":"GenerateVideoSeedDance2Response"},"GenerateVideoSeedDance2TextToVideoRequest":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":2000,"description":"A natural-language prompt describing the video to generate."},"aspect_ratio":{"$ref":"#/components/schemas/SeedDance2AspectRatio","default":"auto"},"resolution":{"$ref":"#/components/schemas/SeedDance2Resolution","default":"720p"},"duration":{"type":"integer","minimum":4,"maximum":15,"description":"The length of the generated video in seconds. When omitted, the model\npicks the best duration for the prompt (\"auto\").\n"},"generate_audio":{"type":"boolean","default":false,"description":"Whether to generate an audio track for the video. Audio roughly\ndoubles the provider cost and is subject to stricter output moderation.\n"},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"],"description":"Request body for Seedance 2.0 text-to-video generation.","title":"GenerateVideoSeedDance2TextToVideoRequest"},"AssetType":{"type":"string","enum":["ASSET","CANVAS_ASSET","LAYERED_ASSET","RESPONSE","UPLOAD"],"title":"AssetType"},"AssetIdentifier":{"type":"object","properties":{"asset_type":{"$ref":"#/components/schemas/AssetType"},"asset_id":{"type":"string"},"collection_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{22}$","minLength":22,"maxLength":22,"description":"Optional collection from which this asset was selected as a generation reference. Records usage attribution; does not grant access to the asset."}},"required":["asset_type","asset_id"],"description":"An identifier for an ideogram asset.","title":"AssetIdentifier"},"V2SvgGenerateIdeogramVector1PostRequestBodyContentMultipartFormDataSchemaQuality":{"type":"string","enum":["low","medium","high"],"default":"medium","title":"V2SvgGenerateIdeogramVector1PostRequestBodyContentMultipartFormDataSchemaQuality"},"GenerateSvgResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 generation ID. Poll the shared generations endpoint for SVG results."}},"required":["generation_id"],"title":"GenerateSvgResponse"},"V2SvgVectorizeIdeogramVector1PostRequestBodyContentMultipartFormDataSchemaMode":{"type":"string","enum":["simple","detailed","auto"],"default":"auto","description":"Simple uses fewer shapes; detailed preserves fine detail; auto chooses the level of detail that best suits the image.","title":"V2SvgVectorizeIdeogramVector1PostRequestBodyContentMultipartFormDataSchemaMode"},"VectorizerResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 generation ID."}},"required":["generation_id"],"title":"VectorizerResponse"},"V2ToolAdLocalizerPostRequestBodyContentMultipartFormDataSchemaLanguage":{"type":"string","enum":["ar","cs","da","de","en","es","fi","fr","fr-ca","hu","it","ja","nl","no","pl","pt","sv"],"description":"The target language for the copy. Arabic is rendered right-to-left. Each request covers one language; send one request per language.","title":"V2ToolAdLocalizerPostRequestBodyContentMultipartFormDataSchemaLanguage"},"AdLocalizerQuality":{"type":"string","enum":["low","medium","high"],"description":"The quality tier for the edit. Higher tiers may improve detail and\ntake longer to complete.\n","title":"AdLocalizerQuality"},"AdLocalizerResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID accepted by the generation polling endpoint."}},"required":["generation_id"],"description":"Acknowledgement that the ad localization was accepted. Poll\n`GET /v2/generations/{generation_id}` for status and results.\n","title":"AdLocalizerResponse"},"V2ToolAdResizerPostRequestBodyContentMultipartFormDataSchemaResolution":{"type":"string","enum":["300x250","336x280","300x600","1080x1080","1080x1350","1080x1920","1920x1080","728x90","160x600","970x250","320x50","300x50","320x100","1800x900","2400x2400","1200x3500","2880x2880","2560x3200","3200x2560","2448x3264","3264x2448","2336x3504","3504x2336","2240x3584","3584x2240","2160x3840","3840x2160","1920x3840","3840x1920","1280x3840","3840x1280"],"description":"Target ad resolution, formatted as `WIDTHxHEIGHT`. Any value not in\nthe list is rejected with a 400. Each output image has exactly these\npixel dimensions, with or without a `platform`.\n","title":"V2ToolAdResizerPostRequestBodyContentMultipartFormDataSchemaResolution"},"V2ToolAdResizerPostRequestBodyContentMultipartFormDataSchemaPlatform":{"type":"string","enum":["google","meta","meta_reels","meta_stories","snapchat","tiktok"],"description":"The ad platform whose published safe zone the ad must stay inside.\nThe ad is generated inside the largest rectangle that fits the\nplatform's safe zone for the requested aspect ratio, and the space\naround it is filled in so the output is still exactly the requested\n`resolution`. `google` covers YouTube and Google Ads placements.\nUse `meta_stories` or `meta_reels` for Meta placements; Reels uses\nthe largest rectangle inside its notched safe zone. The legacy\n`meta` value is still supported and uses a more conservative safe\nzone. When omitted, the ad fills the whole frame and every\nsupported `resolution` is accepted. Any other value is rejected\nwith a 400.\n\nEach platform accepts only the resolutions for which it publishes a\nsafe zone; any other `resolution` is rejected with a 400:\n\n| Platform | Accepted resolutions |\n| --- | --- |\n| `google` | `1920x1080`, `3840x2160`, `1080x1080`, `2400x2400`, `2880x2880`, `1080x1920`, `2160x3840` |\n| `tiktok` | `1920x1080`, `3840x2160`, `1080x1080`, `2400x2400`, `2880x2880`, `1080x1920`, `2160x3840` |\n| `meta_stories` | `1080x1920`, `2160x3840` |\n| `meta_reels` | `1080x1920`, `2160x3840` |\n| `meta` (legacy) | `1080x1920`, `2160x3840` |\n| `snapchat` | `1080x1920`, `2160x3840` |\n","title":"V2ToolAdResizerPostRequestBodyContentMultipartFormDataSchemaPlatform"},"AdResizerQuality":{"type":"string","enum":["low","medium","high"],"description":"The quality tier for the reframe. Higher tiers may improve detail and\ntake longer to complete.\n","title":"AdResizerQuality"},"AdResizerResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID accepted by the generation polling endpoint."}},"required":["generation_id"],"description":"Acknowledgement that the ad resize was accepted. Poll\n`GET /v2/generations/{generation_id}` for status and results.\n","title":"AdResizerResponse"},"V2ToolAdVariationsPostRequestBodyContentMultipartFormDataSchemaVariationType":{"type":"string","enum":["people","setting","group_size","scene"],"description":"The axis to vary. `people`\nreplaces the people in the ad with different talent. `setting`\nmoves the same subject and product to a different environment.\n`group_size` changes how many people appear. `scene` shifts the\nmoment or occasion (time of day, season, or activity).\n","title":"V2ToolAdVariationsPostRequestBodyContentMultipartFormDataSchemaVariationType"},"AdVariationsQuality":{"type":"string","enum":["low","medium","high"],"description":"The quality tier for the edit. Higher tiers may improve detail and\ntake longer to complete.\n","title":"AdVariationsQuality"},"AdVariationsResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID accepted by the generation polling endpoint."}},"required":["generation_id"],"description":"Acknowledgement that the ad variation was accepted. Poll\n`GET /v2/generations/{generation_id}` for status and results.\n","title":"AdVariationsResponse"},"ColorwaysQuality":{"type":"string","enum":["low","medium","high"],"description":"The quality tier for the edit. Higher tiers may improve detail and\ntake longer to complete.\n","title":"ColorwaysQuality"},"ColorwaysResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID accepted by the generation polling endpoint."}},"required":["generation_id"],"description":"Acknowledgement that the colorway was accepted. Poll\n`GET /v2/generations/{generation_id}` for status and results.\n","title":"ColorwaysResponse"},"V2ToolGhostMannequinPostRequestBodyContentMultipartFormDataSchemaView":{"type":"string","enum":["front","three_quarter","back"],"description":"Camera view for the output garment.","title":"V2ToolGhostMannequinPostRequestBodyContentMultipartFormDataSchemaView"},"GhostMannequinQuality":{"type":"string","enum":["low","medium","high"],"description":"The quality tier for the edit. Higher tiers may improve detail and\ntake longer to complete.\n","title":"GhostMannequinQuality"},"GhostMannequinResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID accepted by the generation polling endpoint."}},"required":["generation_id"],"description":"Acknowledgement that the ghost-mannequin request was accepted. Poll\n`GET /v2/generations/{generation_id}` for status and results.\n","title":"GhostMannequinResponse"},"MaterialSwapQuality":{"type":"string","enum":["low","medium","high"],"description":"The quality tier for the edit. Higher tiers may improve detail and\ntake longer to complete.\n","title":"MaterialSwapQuality"},"MaterialSwapResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID accepted by the generation polling endpoint."}},"required":["generation_id"],"description":"Acknowledgement that the material swap was accepted. Poll\n`GET /v2/generations/{generation_id}` for status and results.\n","title":"MaterialSwapResponse"},"ModelPoseVariantsQuality":{"type":"string","enum":["low","medium","high"],"description":"The quality tier for the edit. Higher tiers may improve detail and\ntake longer to complete.\n","title":"ModelPoseVariantsQuality"},"ModelPoseVariantsResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID accepted by the generation polling endpoint."}},"required":["generation_id"],"description":"Acknowledgement that pose-variant generation was accepted. Poll\n`GET /v2/generations/{generation_id}` for status and results.\n","title":"ModelPoseVariantsResponse"},"SketchToRenderQuality":{"type":"string","enum":["low","medium","high"],"description":"The quality tier for the edit. Higher tiers may improve detail and\ntake longer to complete.\n","title":"SketchToRenderQuality"},"SketchToRenderResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID accepted by the generation polling endpoint."}},"required":["generation_id"],"description":"Acknowledgement that the sketch rendering was accepted. Poll\n`GET /v2/generations/{generation_id}` for status and results.\n","title":"SketchToRenderResponse"},"GenerationResponseStatus":{"type":"string","enum":["pending","completed","failed"],"description":"Current status of the generation. `pending`: still in progress; the response contains only `generation_id`, `status`, and `created`. `completed`: finished successfully; the response includes `response_type` and `data`, and may include `usage_cost_usd_micros` when the request uses variable usage-based pricing. `failed`: generation did not succeed; the response contains only `generation_id`, `status`, and `created`.","title":"GenerationResponseStatus"},"GenerationResponseResponseType":{"type":"string","enum":["url"],"description":"Present when `status` is `completed`; always \"url\" for this shape.","title":"GenerationResponseResponseType"},"GenerationResponseDataInnerDiscriminatorMappingSvgGenerationMimeType":{"type":"string","enum":["image/svg+xml"],"title":"GenerationResponseDataInnerDiscriminatorMappingSvgGenerationMimeType"},"LayerizedTextBlockAlignment":{"type":"string","enum":["left","center","right"],"description":"Detected text alignment.","title":"LayerizedTextBlockAlignment"},"LayerizedTextBlockFormattingItems":{"type":"string","enum":["bold","italic","underline","strikethrough","all_caps","small_caps","superscript","subscript"],"title":"LayerizedTextBlockFormattingItems"},"LayerizedTextBlockRole":{"type":"string","enum":["heading","subheading","body","caption"],"description":"Inferred typographic role of this text block.","title":"LayerizedTextBlockRole"},"TextColorSpan":{"type":"object","properties":{"text":{"type":"string","description":"The characters in this run."},"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$","description":"Hex colour for this run."}},"required":["text","color"],"description":"One run of characters within a text block that shares a single colour. A block\nwhose letters are individually coloured returns one span per letter; a block in a\nsingle colour returns one span covering all of it. Concatenating `text` across a\nblock's spans in order reproduces the block's full text.\n","title":"TextColorSpan"},"LayerizedTextBlock":{"type":"object","properties":{"x":{"type":"integer","description":"X coordinate in pixels from the top-left corner."},"y":{"type":"integer","description":"Y coordinate in pixels from the top-left corner."},"width":{"type":"integer","description":"Width of the text region in pixels."},"height":{"type":"integer","description":"Height of the text region in pixels."},"text":{"type":"string","description":"The detected text content. Line breaks are represented as \\n."},"alignment":{"$ref":"#/components/schemas/LayerizedTextBlockAlignment","description":"Detected text alignment."},"angle":{"type":"string","title":"float","description":"Rotation angle in degrees (clockwise). Defaults to 0.","default":0},"font_name":{"type":["string","null"],"description":"Best-matching font name from the font library."},"font_alternatives":{"type":["array","null"],"items":{"type":"string"},"description":"Alternative font matches, ranked by similarity."},"font_size":{"type":["integer","null"],"description":"Detected font size in points."},"line_height":{"type":["string","null"],"title":"float","description":"Line height multiplier (e.g., 1.2)."},"color":{"type":["string","null"],"pattern":"^#[0-9A-Fa-f]{6}$","description":"Detected text color in hex format."},"formatting":{"type":"array","items":{"$ref":"#/components/schemas/LayerizedTextBlockFormattingItems"},"description":"Detected text formatting effects."},"role":{"oneOf":[{"$ref":"#/components/schemas/LayerizedTextBlockRole"},{"type":"null"}],"description":"Inferred typographic role of this text block."},"layer_id":{"type":"string","description":"Identifier of this block's layer in the page at `html_url`; pass it to the page's editing API."},"spans":{"type":["array","null"],"items":{"$ref":"#/components/schemas/TextColorSpan"},"description":"The block's colour runs in reading order. Present, with at least one\nrun, whenever `color` is set; concatenating the runs' `text` reproduces\nthe block's `text`. `color` reports the dominant colour.\n"}},"required":["x","y","width","height","text","alignment","formatting","layer_id"],"description":"A single detected text region with its position, content, font information, and styling.","title":"LayerizedTextBlock"},"LayerizedImageLayer":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"x":{"type":"integer"},"y":{"type":"integer"},"width":{"type":"integer"},"height":{"type":"integer"}},"required":["url","x","y","width","height"],"title":"LayerizedImageLayer"},"LayerizeDocumentSchemaVersion":{"type":"string","enum":["1"],"title":"LayerizeDocumentSchemaVersion"},"LayerizeCanvas":{"type":"object","properties":{"width":{"type":"integer","minimum":1},"height":{"type":"integer","minimum":1}},"required":["width","height"],"title":"LayerizeCanvas"},"LayerizeBox":{"type":"object","properties":{"x":{"type":"number","format":"double"},"y":{"type":"number","format":"double"},"width":{"type":"number","format":"double","minimum":0},"height":{"type":"number","format":"double","minimum":0}},"required":["x","y","width","height"],"title":"LayerizeBox"},"LayerizeAssetIdentifierAssetType":{"type":"string","enum":["RESPONSE","UPLOAD"],"title":"LayerizeAssetIdentifierAssetType"},"LayerizeAssetIdentifier":{"type":"object","properties":{"asset_type":{"$ref":"#/components/schemas/LayerizeAssetIdentifierAssetType"},"asset_id":{"type":"string","description":"URL-safe base64 asset ID."}},"required":["asset_type","asset_id"],"title":"LayerizeAssetIdentifier"},"LayerizeImageSource":{"type":"object","properties":{"asset_identifier":{"$ref":"#/components/schemas/LayerizeAssetIdentifier"},"url":{"type":"string","format":"uri","description":"Expiring URL added when the response is served."}},"required":["asset_identifier"],"title":"LayerizeImageSource"},"LayerizeTextSpanFormattingItems":{"type":"string","enum":["bold","italic","underline","strikethrough","all_caps","small_caps","superscript","subscript"],"title":"LayerizeTextSpanFormattingItems"},"LayerizeTextSpan":{"type":"object","properties":{"text":{"type":"string"},"color":{"type":"string"},"formatting":{"type":"array","items":{"$ref":"#/components/schemas/LayerizeTextSpanFormattingItems"}}},"required":["text"],"title":"LayerizeTextSpan"},"LayerizeFontStyle":{"type":"string","enum":["normal","italic","oblique"],"title":"LayerizeFontStyle"},"LayerizeFont":{"type":"object","properties":{"family":{"type":"string"},"file_url":{"type":"string","format":"uri","description":"Font URL added when served; never stored."},"size_px":{"type":"number","format":"double","minimum":0},"weight":{"type":"integer","minimum":100,"maximum":900},"style":{"$ref":"#/components/schemas/LayerizeFontStyle"},"horizontal_scale":{"type":"number","format":"double","minimum":0,"default":1}},"required":["family","size_px","weight","style"],"title":"LayerizeFont"},"LayerizeTextLayoutAlignment":{"type":"string","enum":["left","center","right","justify"],"title":"LayerizeTextLayoutAlignment"},"LayerizeTextLayoutVerticalAlignment":{"type":"string","enum":["top","middle","bottom"],"title":"LayerizeTextLayoutVerticalAlignment"},"LayerizeTextLayoutTextTransform":{"type":"string","enum":["none","uppercase","lowercase"],"title":"LayerizeTextLayoutTextTransform"},"LayerizeTextLayoutResizeMode":{"type":"string","enum":["auto_width","auto_height","fixed"],"title":"LayerizeTextLayoutResizeMode"},"LayerizeTextLayout":{"type":"object","properties":{"alignment":{"$ref":"#/components/schemas/LayerizeTextLayoutAlignment"},"vertical_alignment":{"$ref":"#/components/schemas/LayerizeTextLayoutVerticalAlignment"},"line_height":{"type":"number","format":"double"},"letter_spacing_em":{"type":"number","format":"double"},"text_transform":{"$ref":"#/components/schemas/LayerizeTextLayoutTextTransform"},"text_indent_px":{"type":"number","format":"double"},"resize_mode":{"$ref":"#/components/schemas/LayerizeTextLayoutResizeMode"}},"required":["alignment"],"title":"LayerizeTextLayout"},"LayerizePoint":{"type":"object","properties":{"x":{"type":"number","format":"double"},"y":{"type":"number","format":"double"}},"required":["x","y"],"title":"LayerizePoint"},"LayerizeTextLayer_shape":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["arc"],"description":"Discriminator value: arc"},"center_x":{"type":"number","format":"double"},"center_y":{"type":"number","format":"double"},"radius":{"type":"number","format":"double","minimum":0},"middle_angle":{"type":"number","format":"double"},"inward":{"type":"boolean"}},"required":["type","center_x","center_y","radius","middle_angle","inward"],"description":"LayerizeTextArc variant"},{"type":"object","properties":{"type":{"type":"string","enum":["path"],"description":"Discriminator value: path"},"points":{"type":"array","items":{"$ref":"#/components/schemas/LayerizePoint"}},"lean":{"type":"number","format":"double","minimum":0,"maximum":1}},"required":["type","points","lean"],"description":"LayerizeTextPath variant"},{"type":"object","properties":{"type":{"type":"string","enum":["envelope"],"description":"Discriminator value: envelope"},"top":{"type":"array","items":{"$ref":"#/components/schemas/LayerizePoint"}},"bottom":{"type":"array","items":{"$ref":"#/components/schemas/LayerizePoint"}}},"required":["type","top","bottom"],"description":"LayerizeTextEnvelope variant"}],"discriminator":{"propertyName":"type"},"title":"LayerizeTextLayer_shape"},"LayerizeGradientStop":{"type":"object","properties":{"position":{"type":"number","format":"double","minimum":0,"maximum":1},"color":{"type":"string"}},"required":["position","color"],"title":"LayerizeGradientStop"},"LayerizeTextLayer_fill":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["solid"],"description":"Discriminator value: solid"},"color":{"type":"string"}},"required":["type","color"],"description":"LayerizeSolidFill variant"},{"type":"object","properties":{"type":{"type":"string","enum":["gradient"],"description":"Discriminator value: gradient"},"angle_deg":{"type":"number","format":"double"},"stops":{"type":"array","items":{"$ref":"#/components/schemas/LayerizeGradientStop"}}},"required":["type","angle_deg","stops"],"description":"LayerizeGradientFill variant"}],"discriminator":{"propertyName":"type"},"title":"LayerizeTextLayer_fill"},"LayerizeStroke":{"type":"object","properties":{"width_px":{"type":"number","format":"double","minimum":0},"color":{"type":"string"}},"required":["width_px","color"],"title":"LayerizeStroke"},"LayerizeShadow":{"type":"object","properties":{"offset_x_px":{"type":"number","format":"double"},"offset_y_px":{"type":"number","format":"double"},"blur_px":{"type":"number","format":"double","minimum":0},"color":{"type":"string"}},"required":["offset_x_px","offset_y_px","blur_px","color"],"title":"LayerizeShadow"},"LayerizeDocumentLayersInnerDiscriminatorMappingTextBlendMode":{"type":"string","enum":["normal","multiply","screen","overlay","darken","lighten"],"title":"LayerizeDocumentLayersInnerDiscriminatorMappingTextBlendMode"},"LayerizeBorderSideStyle":{"type":"string","enum":["solid","dashed","dotted"],"title":"LayerizeBorderSideStyle"},"LayerizeBorderSide":{"type":"object","properties":{"width_px":{"type":"number","format":"double","minimum":0},"style":{"$ref":"#/components/schemas/LayerizeBorderSideStyle"},"color":{"type":"string"}},"required":["width_px","style","color"],"title":"LayerizeBorderSide"},"LayerizeContainerStyle":{"type":"object","properties":{"background_color":{"type":"string"},"opacity":{"type":"number","format":"double","minimum":0,"maximum":1},"border_radius_px":{"type":"number","format":"double","minimum":0},"border":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/LayerizeBorderSide"}},"box_shadow":{"$ref":"#/components/schemas/LayerizeShadow"}},"title":"LayerizeContainerStyle"},"LayerizeDocument_layers_inner":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["image"],"description":"Discriminator value: image"},"id":{"type":"string"},"box":{"$ref":"#/components/schemas/LayerizeBox"},"rotation":{"type":"number","format":"double"},"image":{"$ref":"#/components/schemas/LayerizeImageSource"}},"required":["type","id","box","image"],"description":"LayerizeImageLayer variant"},{"type":"object","properties":{"type":{"type":"string","enum":["text"],"description":"Discriminator value: text"},"id":{"type":"string"},"box":{"$ref":"#/components/schemas/LayerizeBox"},"rotation":{"type":"number","format":"double"},"text":{"type":"string"},"spans":{"type":"array","items":{"$ref":"#/components/schemas/LayerizeTextSpan"}},"font":{"$ref":"#/components/schemas/LayerizeFont"},"layout":{"$ref":"#/components/schemas/LayerizeTextLayout"},"shape":{"$ref":"#/components/schemas/LayerizeTextLayer_shape"},"fill":{"$ref":"#/components/schemas/LayerizeTextLayer_fill"},"strokes":{"type":"array","items":{"$ref":"#/components/schemas/LayerizeStroke"}},"shadows":{"type":"array","items":{"$ref":"#/components/schemas/LayerizeShadow"}},"opacity":{"type":"number","format":"double","minimum":0,"maximum":1},"blend_mode":{"$ref":"#/components/schemas/LayerizeDocumentLayersInnerDiscriminatorMappingTextBlendMode"}},"required":["type","id","box","text","font","layout","fill"],"description":"LayerizeTextLayer variant"},{"type":"object","properties":{"type":{"type":"string","enum":["container"],"description":"Discriminator value: container"},"id":{"type":"string"},"box":{"$ref":"#/components/schemas/LayerizeBox"},"rotation":{"type":"number","format":"double"},"style":{"$ref":"#/components/schemas/LayerizeContainerStyle"}},"required":["type","id","box","style"],"description":"LayerizeContainerLayer variant"}],"discriminator":{"propertyName":"type"},"title":"LayerizeDocument_layers_inner"},"LayerizeDocument":{"type":"object","properties":{"schema_version":{"$ref":"#/components/schemas/LayerizeDocumentSchemaVersion"},"canvas":{"$ref":"#/components/schemas/LayerizeCanvas"},"layers":{"type":"array","items":{"$ref":"#/components/schemas/LayerizeDocument_layers_inner"},"description":"Layers in back-to-front paint order."}},"required":["schema_version","canvas","layers"],"description":"Original editable document; URLs are added when served and are never stored.","title":"LayerizeDocument"},"GenerationResponse_data_inner":{"oneOf":[{"type":"object","properties":{"object_type":{"type":"string","enum":["image.without-prompt-or-seed"],"description":"Discriminator value: image.without-prompt-or-seed"},"url":{"type":["string","null"],"format":"uri","description":"The direct link to the reframed image."},"resolution":{"type":"string","description":"The exact dimensions of the reframed image, formatted as \"{width}x{height}\"."},"is_image_safe":{"type":"boolean","description":"Whether this image passes safety checks. If false, the url field is empty."}},"required":["object_type","resolution","is_image_safe"],"description":"An image result that does not expose its prompt or seed."},{"type":"object","properties":{"object_type":{"type":"string","enum":["svg.generation"],"description":"Discriminator value: svg.generation"},"asset_id":{"type":"string","description":"URL-safe base64 SVG asset ID."},"url":{"type":"string","format":"uri","description":"Signed download URL for the original SVG."},"mime_type":{"$ref":"#/components/schemas/GenerationResponseDataInnerDiscriminatorMappingSvgGenerationMimeType"},"width":{"type":"integer","minimum":1,"description":"Width of the output SVG canvas in pixels."},"height":{"type":"integer","minimum":1,"description":"Height of the output SVG canvas in pixels."}},"required":["object_type","asset_id","url","mime_type","width","height"],"description":"SvgGenerationObject variant"},{"type":"object","properties":{"object_type":{"type":"string","enum":["image.generation"],"description":"Discriminator value: image.generation"},"url":{"type":["string","null"],"format":"uri","description":"The direct link to the image generated."},"prompt":{"type":"string","description":"The prompt used for the generation. This may be different from the original prompt."},"resolution":{"type":"string","description":"The resolution of the generated image, formatted as \"{width}x{height}\"."},"is_image_safe":{"type":"boolean","description":"Whether this image passes safety checks. If false, the url field will be empty."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."}},"required":["object_type","prompt","resolution","is_image_safe","seed"],"description":"A single generated image. Model-agnostic shape returned by the generation polling endpoint."},{"type":"object","properties":{"object_type":{"type":"string","enum":["video.generation"],"description":"Discriminator value: video.generation"},"asset_id":{"type":"string","description":"The generated video's asset ID. Use it with asset_type RESPONSE in video_asset_identifier for a follow-up video edit. This is distinct from the generation ID used for polling."},"url":{"type":["string","null"],"format":"uri","description":"The direct link to the generated video."},"prompt":{"type":"string","description":"The prompt used for the generation."},"resolution":{"type":"string","description":"The resolution tier of the generated video."},"aspect_ratio":{"type":"string","description":"The actual aspect ratio of the produced video, formatted as \"{width}:{height}\"."},"duration":{"type":"integer","description":"The actual measured length of the produced video in seconds."}},"required":["object_type","prompt","resolution","aspect_ratio","duration"],"description":"A single generated video returned by the generation polling endpoint."},{"type":"object","properties":{"object_type":{"type":"string","enum":["layerized_image"],"description":"Discriminator value: layerized_image"},"url":{"type":["string","null"],"format":"uri","description":"The direct link to the design image with its text intact. Empty when the image did not pass safety checks."},"base_image_url":{"type":["string","null"],"format":"uri","description":"The direct link to the base image with all detected text removed. Empty when the image did not pass safety checks."},"resolution":{"type":"string","description":"The resolution of the design, formatted as \"WIDTHxHEIGHT\"."},"is_image_safe":{"type":"boolean","description":"Whether the image passed safety checks. If false, the image links are empty."},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"text_blocks":{"type":"array","items":{"$ref":"#/components/schemas/DetectedTextBlock"},"description":"Flat list of detected text regions in the design."}},"required":["object_type","resolution","is_image_safe","seed","text_blocks"],"description":"One layerized design. Image links are available for a limited period\nof time; if you would like to keep an image, you must download it.\n"},{"type":"object","properties":{"object_type":{"type":"string","enum":["layerized_design.generation"],"description":"Discriminator value: layerized_design.generation"},"is_image_safe":{"type":"boolean"},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"url":{"type":["string","null"],"format":"uri","description":"Signed composite image URL on results created before schema version 1.","deprecated":true},"base_image_url":{"type":["string","null"],"format":"uri","description":"Signed text-free base URL on results created before schema version 1.","deprecated":true},"resolution":{"type":"string","description":"Canvas resolution on results created before schema version 1.","deprecated":true},"text_blocks":{"type":"array","items":{"$ref":"#/components/schemas/LayerizedTextBlock"},"description":"Text regions on results created before schema version 1.","deprecated":true},"image_layers":{"type":"array","items":{"$ref":"#/components/schemas/LayerizedImageLayer"},"description":"Artwork layers on results created before schema version 1.","deprecated":true},"layered_asset_id":{"type":"string","description":"URL-safe base64 ID of the editable layered asset."},"layerize_id":{"type":"string","description":"URL-safe base64 ID to pass to `GET /v2/design/html/{layerize_id}`."},"document":{"$ref":"#/components/schemas/LayerizeDocument"}},"required":["object_type","is_image_safe","seed"],"description":"TextLayerizerResultObject variant"}],"discriminator":{"propertyName":"object_type"},"title":"GenerationResponse_data_inner"},"GenerationResponse":{"type":"object","properties":{"generation_id":{"type":"string","description":"URL-safe base64 ID of the generation."},"status":{"$ref":"#/components/schemas/GenerationResponseStatus","description":"Current status of the generation. `pending`: still in progress; the response contains only `generation_id`, `status`, and `created`. `completed`: finished successfully; the response includes `response_type` and `data`, and may include `usage_cost_usd_micros` when the request uses variable usage-based pricing. `failed`: generation did not succeed; the response contains only `generation_id`, `status`, and `created`."},"created":{"type":"string","format":"date-time","description":"The time the generation was created."},"response_type":{"$ref":"#/components/schemas/GenerationResponseResponseType","description":"Present when `status` is `completed`; always \"url\" for this shape."},"usage_cost_usd_micros":{"type":"integer","format":"int64","minimum":0,"description":"The total variable usage-based cost charged for the completed request, in millionths of a US dollar. Present only when `status` is `completed` and the request uses variable usage-based pricing; omitted otherwise."},"failure_reason":{"type":"string","description":"A short machine-readable reason the generation failed, for example\n`content_policy_violation`. Present only when `status` is `failed`.\n"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GenerationResponse_data_inner"},"description":"A list of generated images or videos. Present when `status` is\n`completed`. Video entries carry an `object_type` of\n`video.generation`; layerized designs carry `layerized_image`;\nLayerize entries contain a `layered_asset_id` and editable `document`.\n"}},"required":["generation_id","status","created"],"description":"The current status and, when complete, result data for an asynchronous generation.","title":"GenerationResponse"},"AccountApiKeyStatus":{"type":"string","enum":["active","disabled","archived"],"title":"AccountApiKeyStatus"},"AccountApiKey":{"type":"object","properties":{"api_key_id":{"type":"string","description":"Base64 encoded API key ID"},"redacted_api_key":{"type":"string","description":"A redacted text snippet of the API key. Contains the first 4 characters of the API key"},"creation_time":{"type":"string","format":"date-time","description":"The date at which the API key was created"},"status":{"$ref":"#/components/schemas/AccountApiKeyStatus"},"label":{"type":["string","null"],"description":"An optional user-supplied label for managing the API key"},"creator_display_label":{"type":["string","null"],"description":"Name of the member who created the key, falling back to their display handle when no name is set. Null on keys created before creators were recorded, and on workspace types whose keys are shared rather than owned by one member."}},"required":["api_key_id","redacted_api_key","creation_time","status"],"title":"AccountApiKey"},"ListAccountApiKeysResponse":{"type":"object","properties":{"api_keys":{"type":"array","items":{"$ref":"#/components/schemas/AccountApiKey"},"description":"All API keys in the organization, newest first."}},"required":["api_keys"],"title":"ListAccountApiKeysResponse"},"AccountInvoiceStatus":{"type":"string","enum":["draft","pending_payment","paid","voided"],"description":"Status of the invoice","title":"AccountInvoiceStatus"},"AccountUsageApiKey":{"type":"object","properties":{"id":{"type":"string","description":"The API key's id, as listed by `GET /v2/account/api-keys`."},"redacted_key":{"type":["string","null"],"description":"The first characters of the key followed by bullets."},"label":{"type":["string","null"],"description":"The key's user-supplied label, when one is set."}},"required":["id"],"description":"The API key the usage was billed to, in redacted form.","title":"AccountUsageApiKey"},"AccountInvoiceLineItem":{"type":"object","properties":{"description":{"type":"string","description":"Display name of the charged product. Not an identifier."},"quantity":{"type":"string","description":"Number of billed units, as a decimal string."},"unit_price":{"type":"string","description":"Price per unit in `currency_code`, as a decimal string."},"cost_total":{"type":"string","description":"Total charged amount in `currency_code`, as a decimal string."},"currency_code":{"type":"string","description":"ISO 4217 currency code of the amounts on this line item."},"api_key":{"$ref":"#/components/schemas/AccountUsageApiKey"}},"required":["description","quantity","unit_price","cost_total","currency_code"],"description":"One charged product on an invoice.","title":"AccountInvoiceLineItem"},"AccountInvoice":{"type":"object","properties":{"start_time":{"type":"string","format":"date-time","description":"Start of the invoice period."},"end_time":{"type":"string","format":"date-time","description":"End of the invoice period."},"issued_time":{"type":["string","null"],"format":"date-time","description":"When the invoice was issued, when it has been."},"paid_time":{"type":["string","null"],"format":"date-time","description":"When the invoice was paid, when it has been."},"status":{"$ref":"#/components/schemas/AccountInvoiceStatus"},"total":{"type":"string","description":"Invoice total in `currency_code`, as a decimal string."},"currency_code":{"type":"string","description":"ISO 4217 currency code of the amounts on this invoice."},"line_items":{"type":"array","items":{"$ref":"#/components/schemas/AccountInvoiceLineItem"},"description":"The invoice's charges."}},"required":["start_time","end_time","status","total","currency_code","line_items"],"title":"AccountInvoice"},"ListAccountInvoicesResponse":{"type":"object","properties":{"invoices":{"type":"array","items":{"$ref":"#/components/schemas/AccountInvoice"},"description":"The organization's invoices."}},"required":["invoices"],"title":"ListAccountInvoicesResponse"},"V2AccountUsageGetParametersBucketWidth":{"type":"string","enum":["1d","1h"],"default":"1d","title":"V2AccountUsageGetParametersBucketWidth"},"V2AccountUsageGetParametersSourcesSchemaItems":{"type":"string","enum":["api","app"],"title":"V2AccountUsageGetParametersSourcesSchemaItems"},"AccountUsageLineItemSource":{"type":"string","enum":["api","app"],"description":"Which billing surface the usage came through. `api` usage is attributed to an API key when one was used; `app` usage is attributed to the member who generated it.","title":"AccountUsageLineItemSource"},"AccountUsageBilledUnits":{"type":"object","properties":{"unit":{"type":"string","description":"What one billed unit is (for example `image`)."},"quantity":{"type":"string","description":"Number of units billed, as a decimal string."},"unit_price":{"type":"string","description":"Price per unit in `currency_code`, as a decimal string."}},"required":["unit","quantity","unit_price"],"description":"Per-unit detail for products billed per item. `quantity × unit_price` always equals the line item's `cost_total`.","title":"AccountUsageBilledUnits"},"AccountUsageLineItem":{"type":"object","properties":{"product":{"type":"string","description":"Stable identifier of the public pricing catalog entry this charge was billed under, at the granularity the pricing page prices it (for example one entry per quality and resolution). `unknown` when a historical charge can no longer be attributed; its cost is still included."},"endpoint":{"type":"string","description":"The API endpoint path this product belongs to."},"description":{"type":"string","description":"Name of the public pricing catalog entry, as shown on the pricing page. Not an identifier."},"dimensions":{"type":"object","additionalProperties":{"type":"string"},"description":"Pricing dimensions this line item was billed under, for products priced per dimension (for example rendering speed)."},"cost_total":{"type":"string","description":"Total billed amount in `currency_code`, as a decimal string."},"currency_code":{"type":"string","description":"ISO 4217 currency code of the amounts on this line item."},"source":{"$ref":"#/components/schemas/AccountUsageLineItemSource","description":"Which billing surface the usage came through. `api` usage is attributed to an API key when one was used; `app` usage is attributed to the member who generated it."},"api_key":{"$ref":"#/components/schemas/AccountUsageApiKey"},"user_email":{"type":["string","null"],"description":"Email address of the member who generated the usage. Only present on `app` usage."},"billed_units":{"$ref":"#/components/schemas/AccountUsageBilledUnits"}},"required":["product","endpoint","description","cost_total","currency_code","source"],"description":"One billed rate for one billing actor within one time bucket.","title":"AccountUsageLineItem"},"AccountUsageBucket":{"type":"object","properties":{"start_time":{"type":"string","format":"date-time","description":"Start of the bucket window (inclusive, UTC)."},"end_time":{"type":"string","format":"date-time","description":"End of the bucket window (exclusive, UTC)."},"line_items":{"type":"array","items":{"$ref":"#/components/schemas/AccountUsageLineItem"},"description":"Usage billed in this window. Empty when nothing was billed."}},"required":["start_time","end_time","line_items"],"title":"AccountUsageBucket"},"GetAccountUsageResponse":{"type":"object","properties":{"buckets":{"type":"array","items":{"$ref":"#/components/schemas/AccountUsageBucket"},"description":"Dense, chronological buckets covering the requested range."}},"required":["buckets"],"title":"GetAccountUsageResponse"},"GenerateSvgGptImage26FlareRequestQuality":{"type":"string","enum":["auto","low","medium","high","xhigh","max"],"default":"auto","description":"How much rendering effort GPT Image 2.6 Flare spends on the image the SVG is drawn from. Lower tiers return sooner and cost less; `auto` lets the model choose, which it currently renders at `high`.","title":"GenerateSvgGptImage26FlareRequestQuality"},"GenerateSvgGptImage26FlareRequestThinkingLevel":{"type":"string","enum":["low","medium","high"],"default":"high","description":"How much the model plans before it renders, separate from `quality`. Lower levels return sooner.","title":"GenerateSvgGptImage26FlareRequestThinkingLevel"},"GenerateSvgGptImage26FlareRequest":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":9500,"description":"What the SVG should show, passed to the model as written."},"aspect_ratio":{"type":"string","default":"auto","description":"The output aspect ratio, for example \"1:1\", \"16:9\", or \"9:16\". \"auto\" (the default) lets the model choose a shape that suits the prompt. The long:short ratio is at most 3:1."},"quality":{"$ref":"#/components/schemas/GenerateSvgGptImage26FlareRequestQuality","default":"auto","description":"How much rendering effort GPT Image 2.6 Flare spends on the image the SVG is drawn from. Lower tiers return sooner and cost less; `auto` lets the model choose, which it currently renders at `high`."},"thinking_level":{"$ref":"#/components/schemas/GenerateSvgGptImage26FlareRequestThinkingLevel","default":"high","description":"How much the model plans before it renders, separate from `quality`. Lower levels return sooner."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"private":{"type":"boolean","description":"Outputs are private by default. Enterprise outputs are always private."},"target_collection_id":{"type":"string","description":"URL-safe base64 ID of a writable destination collection."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"],"title":"GenerateSvgGptImage26FlareRequest"},"GenerateSvgGptImage26SunburstRequestQuality":{"type":"string","enum":["auto","low","medium","high","xhigh","max"],"default":"auto","description":"How much rendering effort GPT Image 2.6 Sunburst spends on the image the SVG is drawn from. Lower tiers return sooner and cost less; `auto` lets the model choose, which it currently renders at `high`.","title":"GenerateSvgGptImage26SunburstRequestQuality"},"GenerateSvgGptImage26SunburstRequestThinkingLevel":{"type":"string","enum":["low","medium","high"],"default":"high","description":"How much the model plans before it renders, separate from `quality`. Lower levels return sooner.","title":"GenerateSvgGptImage26SunburstRequestThinkingLevel"},"GenerateSvgGptImage26SunburstRequest":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":9500,"description":"What the SVG should show, passed to the model as written."},"aspect_ratio":{"type":"string","default":"auto","description":"The output aspect ratio, for example \"1:1\", \"16:9\", or \"9:16\". \"auto\" (the default) lets the model choose a shape that suits the prompt. The long:short ratio is at most 3:1."},"quality":{"$ref":"#/components/schemas/GenerateSvgGptImage26SunburstRequestQuality","default":"auto","description":"How much rendering effort GPT Image 2.6 Sunburst spends on the image the SVG is drawn from. Lower tiers return sooner and cost less; `auto` lets the model choose, which it currently renders at `high`."},"thinking_level":{"$ref":"#/components/schemas/GenerateSvgGptImage26SunburstRequestThinkingLevel","default":"high","description":"How much the model plans before it renders, separate from `quality`. Lower levels return sooner."},"num_images":{"type":"integer","minimum":1,"maximum":8,"default":1},"seed":{"type":"integer","minimum":0,"maximum":2147483647,"description":"Random seed. Set for reproducible generation."},"private":{"type":"boolean","description":"Outputs are private by default. Enterprise outputs are always private."},"target_collection_id":{"type":"string","description":"URL-safe base64 ID of a writable destination collection."},"webhook_url":{"type":"string","format":"uri","maxLength":2048,"description":"HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a\nJSON POST to this URL once all images for the request have finished\ngenerating. The body mirrors the synchronous generate response:\n`request_id`, `created`, and a `data` array\ncontaining every generated image (`url`, `prompt`, `resolution`, `seed`,\n`is_image_safe`). Each delivery is signed with Ed25519 and verifiable\nagainst the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS;\nprivate and loopback hosts and the cloud metadata service are rejected.\n"}},"required":["prompt"],"title":"GenerateSvgGptImage26SunburstRequest"}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"Api-Key","description":"API key for access control. Use in the header with the name \\\"Api-Key\\\""}}}}