Ideogram Image Describe API

The image-describe API from Ideogram — 2 operation(s) for image-describe.

GitHub OpenAPI
Business capability
Vision AE-110.50

Operations 2

POST /v2/image/describe/ideogram-4 Describe with Ideogram 4.0 #
POST /v2/image/describe/ideogram-3 Describe with Ideogram 3.0 #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/ideogram:ideogram-image-describe-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

ideogram-image-describe-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Ideogram API v2 Image Describe API
  version: 1.0.0
servers:
- url: https://api.ideogram.ai
  description: https://api.ideogram.ai
tags:
- name: image-describe
paths:
  /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

        image captioner (a fine-tune of the Qwen3-VL vision-language model).

        Upload the image as `image` using `multipart/form-data`; the

        `json_prompt` is returned directly and can be passed to the

        `/v1/ideogram-v4/generate` endpoints.'
      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

        image captioner (a fine-tune of the Qwen2-VL vision-language model).

        Upload the image as `image` using `multipart/form-data`; the description

        is returned directly.'
      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: []
components:
  schemas:
    ImageSafetyError:
      type: object
      properties:
        error:
          type: string
      required:
      - error
      title: ImageSafetyError
    V4TextPromptElementType:
      type: string
      enum:
      - text
      description: Discriminator. Must be `text`.
      title: V4TextPromptElementType
    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

            the queue this request resolved to. Present when `reject_reason`

            is `inflight_limit`.

            '
        task_completion_speed:
          $ref: '#/components/schemas/GenerationErrorResponseTaskCompletionSpeed'
          description: 'The queue this request resolved to. Present when `reject_reason`

            is `inflight_limit`.

            '
      required:
      - error
      - reject_reason
      description: A generation request rejected by an account or usage limit.
      title: GenerationErrorResponse
    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`.

        The `json_prompt` field is a structured `V4JsonPrompt` that can be

        passed back as `json_prompt` to the `/v1/ideogram-v4/generate` family

        of endpoints.

        '
      title: DescribeImageIdeogramV4Response
    V4ObjPromptElementType:
      type: string
      enum:
      - obj
      description: Discriminator. Must be `obj`.
      title: V4ObjPromptElementType
    GenerationRejectReason:
      type: string
      enum:
      - insufficient_funds
      - subscription_required
      - daily_limit
      - priority_credit_required
      - inflight_limit
      - feature_limit
      description: The account or usage limit that rejected a generation request.
      title: GenerationRejectReason
    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]`

              with `[y_min, x_min, y_max, x_max]` semantics (row-first). Values are

              normalized so the canvas is `1000 x 1000` regardless of the final

              resolution.

              '
          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

              Ideogram 4.0 output toward this palette. Applied as a soft color bias,

              not an exact per-pixel lock.

              '
        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]`

              with `[y_min, x_min, y_max, x_max]` semantics (row-first). Values are

              normalized so the canvas is `1000 x 1000` regardless of the final

              resolution.

              '
          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

              Ideogram 4.0 output toward this palette. Applied as a soft color bias,

              not an exact per-pixel lock.

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

        Discriminated by the `type` field.

        '
      title: V4PromptElement
    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
    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

        supplied, magic-prompt is disabled and the diffusion model consumes

        the JSON contract directly. Mutually exclusive with `text_prompt`

        and the legacy `prompt` field.

        '
      title: V4JsonPrompt
    GenerationErrorResponseTaskCompletionSpeed:
      type: string
      enum:
      - fast
      - slow
      description: 'The queue this request resolved to. Present when `reject_reason`

        is `inflight_limit`.

        '
      title: GenerationErrorResponseTaskCompletionSpeed
    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
    GeneratedDescription:
      type: object
      properties:
        text:
          type: string
          description: The generated description for the provided image.
      required:
      - text
      title: GeneratedDescription
    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

            Ideogram 4.0 output toward this palette. Applied as a soft color bias,

            not an exact per-pixel lock.

            '
      description: Optional style description supplied alongside a V4 JSON prompt.
      title: V4StyleDescription
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Api-Key
      description: API key for access control. Use in the header with the name \"Api-Key\"