Leonardo.AI Image Generation API

Create image generations with FLUX.2 Pro, FLUX Dev, FLUX Schnell, FLUX.1 Kontext, Phoenix, Lucid Origin, Lucid Realism, Ideogram 3.0, GPT Image 2, Nano Banana, Seedream, and other supported models. POST /generations submits a job; results are retrieved via GET /generations/{id} or via the optional webhook callback. Supports PhotoReal, Alchemy, image prompts, image guidance (ControlNet), enhanced prompts, transparency, and per-model knobs.

Leonardo.AI Image Generation API is one of 14 APIs that Leonardo.AI publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 1 JSON Schema definition.

Tagged areas include AI, Image Generation, and Generations. The published artifact set on APIs.io includes API documentation, a getting-started guide, an OpenAPI specification, a JSON-LD context, 1 Naftiko capability spec, and 1 JSON Schema.

OpenAPI Specification

leonardo-ai-image-generation-openapi.json Raw ↑
{
  "openapi": "3.0.0",
  "info": {
    "title": "Leonardo.AI Image Generation API",
    "description": "Create image generations with FLUX, Phoenix, Lucid, Ideogram, GPT Image, Nano Banana, Seedream, and other supported models. Includes generation lifecycle (create, retrieve, delete, list by user).",
    "version": "v1.0.0",
    "contact": {
      "name": "Leonardo.AI Support",
      "url": "https://docs.leonardo.ai/docs/need-more-support"
    },
    "license": {
      "name": "Leonardo.AI Terms of Service",
      "url": "https://leonardo.ai/terms-of-service/"
    }
  },
  "servers": [
    {
      "url": "https://cloud.leonardo.ai/api/rest/v1",
      "description": "Leonardo.AI Production API"
    }
  ],
  "tags": [
    {
      "name": "Image"
    }
  ],
  "paths": {
    "/generations": {
      "post": {
        "tags": [
          "Image"
        ],
        "summary": "Create a Generation of Images",
        "description": "This endpoint will generate images",
        "operationId": "createGeneration",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "alchemy": {
                    "nullable": true,
                    "title": "Boolean",
                    "type": "boolean",
                    "description": "Enable to use Alchemy. Note: The appropriate Alchemy version is selected for the specified model. For example, XL models will use Alchemy V2.",
                    "default": true
                  },
                  "contrastRatio": {
                    "nullable": true,
                    "title": "Float",
                    "type": "number",
                    "description": "Contrast Ratio to use with Alchemy. Must be a float between 0 and 1 inclusive."
                  },
                  "contrast": {
                    "type": "number",
                    "description": "Adjusts the contrast level of the generated image. Used in Phoenix and Flux models. Accepts values [1.0, 1.3, 1.8, 2.5, 3, 3.5, 4, 4.5]. For Phoenix, if alchemy is true, contrast needs to be 2.5 or higher.",
                    "minimum": 1,
                    "maximum": 4.5,
                    "example": 3.5,
                    "nullable": true,
                    "title": "Float"
                  },
                  "controlnets": {
                    "items": {
                      "$ref": "#/components/schemas/controlnet_input"
                    },
                    "nullable": true,
                    "type": "array"
                  },
                  "elements": {
                    "items": {
                      "$ref": "#/components/schemas/element_input"
                    },
                    "nullable": true,
                    "type": "array"
                  },
                  "userElements": {
                    "items": {
                      "$ref": "#/components/schemas/user_elements_input"
                    },
                    "nullable": true,
                    "type": "array"
                  },
                  "expandedDomain": {
                    "nullable": true,
                    "title": "Boolean",
                    "type": "boolean",
                    "description": "Enable to use the Expanded Domain feature of Alchemy."
                  },
                  "fantasyAvatar": {
                    "nullable": true,
                    "title": "Boolean",
                    "type": "boolean",
                    "description": "Enable to use the Fantasy Avatar feature."
                  },
                  "guidance_scale": {
                    "nullable": true,
                    "title": "Float",
                    "type": "number",
                    "description": "How strongly the generation should reflect the prompt. 7 is recommended. Must be between 1 and 20."
                  },
                  "height": {
                    "nullable": true,
                    "title": "Int",
                    "type": "integer",
                    "description": "The input height of the images. Must be between 32 and 1536 and be a multiple of 8. Note: Input resolution is not always the same as output resolution due to upscaling from other features.",
                    "default": 768
                  },
                  "highContrast": {
                    "nullable": true,
                    "title": "Boolean",
                    "type": "boolean",
                    "description": "Enable to use the High Contrast feature of Prompt Magic. Note: Controls RAW mode. Set to false to enable RAW mode."
                  },
                  "highResolution": {
                    "nullable": true,
                    "title": "Boolean",
                    "type": "boolean",
                    "description": "Enable to use the High Resolution feature of Prompt Magic."
                  },
                  "imagePrompts": {
                    "items": {
                      "nullable": true,
                      "title": "String",
                      "type": "string"
                    },
                    "nullable": true,
                    "type": "array"
                  },
                  "imagePromptWeight": {
                    "nullable": true,
                    "title": "Float",
                    "type": "number"
                  },
                  "init_generation_image_id": {
                    "nullable": true,
                    "title": "String",
                    "type": "string",
                    "description": "The ID of an existing image to use in image2image."
                  },
                  "init_image_id": {
                    "nullable": true,
                    "title": "String",
                    "type": "string",
                    "description": "The ID of an Init Image to use in image2image."
                  },
                  "init_strength": {
                    "nullable": true,
                    "title": "Float",
                    "type": "number",
                    "description": "How strongly the generated images should reflect the original image in image2image. Must be a float between 0.1 and 0.9."
                  },
                  "modelId": {
                    "nullable": true,
                    "title": "String",
                    "type": "string",
                    "description": "The model ID used for image generation. If not provided, uses sd_version to determine the version of Stable Diffusion to use. In-app, model IDs are under the Finetune Models menu. Click on the platform model or your custom model, then click View More. For platform models, you can also use the List Platform Models API.",
                    "default": "b24e16ff-06e3-43eb-8d33-4416c2d75876"
                  },
                  "negative_prompt": {
                    "nullable": true,
                    "title": "String",
                    "type": "string",
                    "description": "The negative prompt used for the image generation"
                  },
                  "num_images": {
                    "nullable": true,
                    "title": "Int",
                    "type": "integer",
                    "description": "The number of images to generate. Must be between 1 and 8. If either width or height is over 768, must be between 1 and 4.",
                    "default": 4
                  },
                  "num_inference_steps": {
                    "nullable": true,
                    "title": "Int",
                    "type": "integer",
                    "description": "The Step Count to use for the generation. Must be between 10 and 60. Default is 15."
                  },
                  "photoReal": {
                    "$ref": "#/components/schemas/photoRealArg"
                  },
                  "photoRealVersion": {
                    "$ref": "#/components/schemas/photoRealVersion"
                  },
                  "photoRealStrength": {
                    "$ref": "#/components/schemas/photoRealStrengthArg"
                  },
                  "presetStyle": {
                    "$ref": "#/components/schemas/sd_generation_style"
                  },
                  "prompt": {
                    "nullable": false,
                    "title": "String",
                    "type": "string",
                    "description": "The prompt used to generate images",
                    "default": "A majestic cat in the snow"
                  },
                  "promptMagic": {
                    "$ref": "#/components/schemas/promptMagicArg"
                  },
                  "promptMagicStrength": {
                    "$ref": "#/components/schemas/promptMagicStrengthArg"
                  },
                  "promptMagicVersion": {
                    "$ref": "#/components/schemas/promptMagicVersionArg"
                  },
                  "public": {
                    "nullable": true,
                    "title": "Boolean",
                    "type": "boolean",
                    "description": "Whether the generated images should show in the community feed."
                  },
                  "scheduler": {
                    "$ref": "#/components/schemas/sd_generation_schedulers"
                  },
                  "sd_version": {
                    "$ref": "#/components/schemas/sd_versions"
                  },
                  "seed": {
                    "$ref": "#/components/schemas/seed"
                  },
                  "tiling": {
                    "nullable": true,
                    "title": "Boolean",
                    "type": "boolean",
                    "description": "Whether the generated images should tile on all axis."
                  },
                  "transparency": {
                    "nullable": true,
                    "title": "TransparencyType",
                    "type": "string",
                    "enum": [
                      "disabled",
                      "foreground_only"
                    ],
                    "description": "Which type of transparency this image should use"
                  },
                  "ultra": {
                    "nullable": true,
                    "title": "Boolean",
                    "type": "boolean",
                    "description": "Enable to use Ultra mode. Note: can not be used with Alchemy."
                  },
                  "unzoom": {
                    "nullable": true,
                    "title": "Boolean",
                    "type": "boolean",
                    "description": "Whether the generated images should be unzoomed (requires unzoomAmount and init_image_id to be set)."
                  },
                  "unzoomAmount": {
                    "nullable": true,
                    "title": "Float",
                    "type": "number",
                    "description": "How much the image should be unzoomed (requires an init_image_id and unzoom to be set to true)."
                  },
                  "upscaleRatio": {
                    "nullable": true,
                    "title": "Float",
                    "type": "number",
                    "description": "How much the image should be upscaled. (Enterprise Only)"
                  },
                  "width": {
                    "nullable": true,
                    "title": "Int",
                    "type": "integer",
                    "description": "The input width of the images. Must be between 32 and 1536 and be a multiple of 8. Note: Input resolution is not always the same as output resolution due to upscaling from other features.",
                    "default": 1024
                  },
                  "controlNet": {
                    "nullable": true,
                    "title": "Boolean",
                    "type": "boolean",
                    "description": "This parameter will be deprecated in September 2024. Please use the controlnets array instead.",
                    "deprecated": true
                  },
                  "controlNetType": {
                    "$ref": "#/components/schemas/controlnet_type",
                    "deprecated": true
                  },
                  "weighting": {
                    "nullable": true,
                    "title": "Float",
                    "type": "number",
                    "description": "This parameter will be deprecated in September 2024. Please use the controlnets array instead.",
                    "deprecated": true
                  },
                  "canvasRequest": {
                    "nullable": true,
                    "title": "Boolean",
                    "type": "boolean",
                    "description": "Whether the generation is for the Canvas Editor feature."
                  },
                  "canvasRequestType": {
                    "$ref": "#/components/schemas/canvasRequestType"
                  },
                  "canvasInitId": {
                    "nullable": true,
                    "title": "String",
                    "type": "string",
                    "description": "The ID of an initial image to use in Canvas Editor request."
                  },
                  "canvasMaskId": {
                    "nullable": true,
                    "title": "String",
                    "type": "string",
                    "description": "The ID of a mask image to use in Canvas Editor request."
                  },
                  "enhancePrompt": {
                    "nullable": true,
                    "title": "Boolean",
                    "type": "boolean",
                    "description": "When enabled, your prompt is expanded to include more detail."
                  },
                  "enhancePromptInstruction": {
                    "nullable": true,
                    "title": "String",
                    "type": "string",
                    "description": "When enhancePrompt is enabled, the prompt is enhanced based on the given instructions."
                  }
                },
                "type": "object",
                "required": [
                  "prompt"
                ]
              }
            }
          },
          "description": "Query parameters to be provided in the request body as a JSON object",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "sdGenerationJob": {
                      "nullable": true,
                      "properties": {
                        "generationId": {
                          "nullable": false,
                          "title": "String",
                          "type": "string"
                        },
                        "apiCreditCost": {
                          "nullable": true,
                          "type": "integer",
                          "description": "API Credits Cost for Image Generation. Available for Production API Users. Note: it will be deprecated. Please use the cost instead.",
                          "deprecated": true
                        },
                        "cost": {
                          "$ref": "#/components/schemas/cost"
                        }
                      },
                      "title": "SDGenerationOutput",
                      "type": "object"
                    }
                  }
                },
                "example": {
                  "sdGenerationJob": {
                    "generationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
                    "apiCreditCost": null,
                    "cost": {
                      "amount": "0.0147",
                      "unit": "DOLLARS"
                    }
                  }
                }
              }
            },
            "description": "Responses for POST /generations"
          }
        }
      }
    },
    "/generations/{id}": {
      "get": {
        "tags": [
          "Image"
        ],
        "summary": "Get a Single Generation",
        "description": "This endpoint will provide information about a specific generation",
        "operationId": "getGenerationById",
        "parameters": [
          {
            "required": true,
            "description": "The ID of the generation to return.",
            "in": "path",
            "name": "id",
            "schema": {
              "pattern": "[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "generations_by_pk": {
                      "description": "columns and relationships of \"generations\"",
                      "nullable": true,
                      "properties": {
                        "createdAt": {
                          "$ref": "#/components/schemas/timestamp"
                        },
                        "generated_images": {
                          "items": {
                            "description": "columns and relationships of \"generated_images\"",
                            "nullable": false,
                            "properties": {
                              "generated_image_variation_generics": {
                                "items": {
                                  "description": "columns and relationships of \"generated_image_variation_generic\"",
                                  "nullable": false,
                                  "properties": {
                                    "id": {
                                      "$ref": "#/components/schemas/uuid"
                                    },
                                    "status": {
                                      "$ref": "#/components/schemas/job_status"
                                    },
                                    "transformType": {
                                      "$ref": "#/components/schemas/VARIATION_TYPE"
                                    },
                                    "url": {
                                      "nullable": true,
                                      "title": "String",
                                      "type": "string"
                                    }
                                  },
                                  "title": "generated_image_variation_generic",
                                  "type": "object"
                                },
                                "nullable": false,
                                "type": "array"
                              },
                              "fantasyAvatar": {
                                "nullable": true,
                                "title": "Boolean",
                                "type": "boolean",
                                "description": "If fantasyAvatar feature was used."
                              },
                              "id": {
                                "$ref": "#/components/schemas/uuid"
                              },
                              "imageToVideo": {
                                "$ref": "#/components/schemas/imageToVideo"
                              },
                              "likeCount": {
                                "nullable": false,
                                "title": "Int",
                                "type": "integer"
                              },
                              "motion": {
                                "$ref": "#/components/schemas/motion"
                              },
                              "motionModel": {
                                "$ref": "#/components/schemas/motionModel"
                              },
                              "motionMP4URL": {
                                "$ref": "#/components/schemas/motionMP4URL"
                              },
                              "motionStrength": {
                                "$ref": "#/components/schemas/motionStrength"
                              },
                              "nsfw": {
                                "nullable": false,
                                "title": "Boolean",
                                "type": "boolean"
                              },
                              "url": {
                                "nullable": false,
                                "title": "String",
                                "type": "string"
                              }
                            },
                            "title": "generated_images",
                            "type": "object"
                          },
                          "nullable": false,
                          "type": "array"
                        },
                        "generation_elements": {
                          "items": {
                            "description": "This table captures the elements that are applied to Generations.",
                            "nullable": false,
                            "properties": {
                              "id": {
                                "$ref": "#/components/schemas/bigint"
                              },
                              "lora": {
                                "description": "Element used for the generation.",
                                "nullable": true,
                                "properties": {
                                  "akUUID": {
                                    "$ref": "#/components/schemas/lora/properties/akUUID"
                                  },
                                  "baseModel": {
                                    "$ref": "#/components/schemas/sd_versions"
                                  },
                                  "description": {
                                    "$ref": "#/components/schemas/lora/properties/description"
                                  },
                                  "name": {
                                    "$ref": "#/components/schemas/lora/properties/name"
                                  },
                                  "urlImage": {
                                    "$ref": "#/components/schemas/lora/properties/urlImage"
                                  },
                                  "weightDefault": {
                                    "$ref": "#/components/schemas/lora/properties/weightDefault"
                                  },
                                  "weightMax": {
                                    "$ref": "#/components/schemas/lora/properties/weightMax"
                                  },
                                  "weightMin": {
                                    "$ref": "#/components/schemas/lora/properties/weightMin"
                                  }
                                },
                                "title": "loras",
                                "type": "object"
                              },
                              "weightApplied": {
                                "$ref": "#/components/schemas/numeric"
                              }
                            },
                            "title": "generation_elements",
                            "type": "object"
                          },
                          "nullable": false,
                          "type": "array"
                        },
                        "guidanceScale": {
                          "$ref": "#/components/schemas/float8"
                        },
                        "id": {
                          "$ref": "#/components/schemas/uuid"
                        },
                        "imageHeight": {
                          "nullable": false,
                          "title": "Int",
                          "type": "integer"
                        },
                        "imageWidth": {
                          "nullable": false,
                          "title": "Int",
                          "type": "integer"
                        },
                        "inferenceSteps": {
                          "nullable": true,
                          "title": "Int",
                          "type": "integer"
                        },
                        "initStrength": {
                          "$ref": "#/components/schemas/float8"
                        },
                        "modelId": {
                          "$ref": "#/components/schemas/uuid"
                        },
                        "negativePrompt": {
                          "nullable": true,
                          "title": "String",
                          "type": "string"
                        },
                        "photoReal": {
                          "$ref": "#/components/schemas/photoRealRes"
                        },
                        "photoRealStrength": {
                          "$ref": "#/components/schemas/photoRealStrengthRes"
                        },
                        "presetStyle": {
                          "$ref": "#/components/schemas/sd_generation_style"
                        },
                        "prompt": {
                          "nullable": false,
                          "title": "String",
                          "type": "string"
                        },
                        "promptMagic": {
                          "$ref": "#/components/schemas/promptMagicRes"
                        },
                        "promptMagicStrength": {
                          "$ref": "#/components/schemas/promptMagicStrengthRes"
                        },
                        "promptMagicVersion": {
                          "$ref": "#/components/schemas/promptMagicVersionRes"
                        },
                        "public": {
                          "nullable": false,
                          "title": "Boolean",
                          "type": "boolean"
                        },
                        "scheduler": {
                          "$ref": "#/components/schemas/sd_generation_schedulers"
                        },
                        "sdVersion": {
                          "$ref": "#/components/schemas/sd_versions"
                        },
                        "seed": {
                          "$ref": "#/components/schemas/seed"
                        },
                        "status": {
                          "$ref": "#/components/schemas/job_status"
                        },
                        "ultra": {
                          "$ref": "#/components/schemas/sd_generation_ultra"
                        }
                      },
                      "title": "generations",
                      "type": "object"
                    }
                  }
                }
              }
            },
            "description": "Responses for GET /generations/{id}"
          }
        }
      },
      "delete": {
        "tags": [
          "Image"
        ],
        "summary": "Delete a Single Generation",
        "description": "This endpoint deletes a specific generation",
        "operationId": "deleteGenerationById",
        "parameters": [
          {
            "required": true,
            "description": "The ID of the generation to delete.",
            "in": "path",
            "name": "id",
            "schema": {
              "pattern": "[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "delete_generations_by_pk": {
                      "description": "columns and relationships of \"generations\"",
                      "nullable": true,
                      "properties": {
                        "id": {
                          "$ref": "#/components/schemas/uuid"
                        }
                      },
                      "title": "generations",
                      "type": "object"
                    }
                  }
                }
              }
            },
            "description": "Responses for DELETE /generations/{id}"
          }
        }
      }
    },
    "/generations/user/{userId}": {
      "get": {
        "tags": [
          "Image"
        ],
        "summary": "Get generations by user ID",
        "description": "This endpoint returns all generations by a specific user",
        "operationId": "getGenerationsByUserId",
        "parameters": [
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 10,
              "type": "integer"
            }
          },
          {
            "required": true,
            "in": "path",
            "name": "userId",
            "schema": {
              "pattern": "[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "generations": {
                      "items": {
                        "description": "columns and relationships of \"generations\"",
                        "nullable": false,
                        "properties": {
                          "createdAt": {
                            "$ref": "#/components/schemas/timestamp"
                          },
                          "generated_images": {
                            "items": {
                              "description": "columns and relationships of \"generated_images\"",
                              "nullable": false,
                              "properties": {
                                "generated_image_variation_generics": {
                                  "items": {
                                    "description": "columns and relationships of \"generated_image_variation_generic\"",
                                    "nullable": false,
                                    "properties": {
                                      "id": {
                                        "$ref": "#/components/schemas/uuid"
                                      },
                                      "status": {
                                        "$ref": "#/components/schemas/job_status"
                                      },
                                      "transformType": {
                                        "$ref": "#/components/schemas/VARIATION_TYPE"
                                      },
                                      "url": {
                                        "nullable": true,
                                        "title": "String",
                                        "type": "string"
                                      }
                                    },
                                    "title": "generated_image_variation_generic",
                                    "type": "object"
                                  },
                                  "nullable": false,
                                  "type": "array"
                                },
                                "id": {
                                  "$ref": "#/components/schemas/uuid"
                                },
                                "imageToVideo": {
                                  "$ref": "#/components/schemas/imageToVideo"
                                },
                                "likeCount": {
                                  "nullable": false,
                                  "title": "Int",
                                  "type": "integer"
             

# --- truncated at 32 KB (74 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/leonardo-ai/refs/heads/main/openapi/leonardo-ai-image-generation-openapi.json