{
  "openapi": "3.0.1",
  "info": {
    "title": "AI Image Generator & Editor: Nano Banana, Flux, Logo & Upscale",
    "description": "Bulk AI image generator and editor (up to 100 prompts per run): Flux, GPT Image 2, Seedream, Imagen 4, Ideogram, Nano Banana editing, SVG logos and upscaling, no API key. From $0.02 per image. Free plan: 1 image/month, FLUX Schnell. AI quality score (pass / review / fail) for automation.",
    "version": "1.0",
    "x-build-id": "lvCxIypjx69zVexEy"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/pnda~ai-image-generator/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-pnda-ai-image-generator",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/pnda~ai-image-generator/runs": {
      "post": {
        "operationId": "runs-sync-pnda-ai-image-generator",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/pnda~ai-image-generator/run-sync": {
      "post": {
        "operationId": "run-sync-pnda-ai-image-generator",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "generate",
              "edit",
              "logo",
              "upscale"
            ],
            "type": "string",
            "description": "generate = text to image; edit = change a source image with a prompt (Nano Banana...); logo = logos and icons (SVG with Recraft); upscale = enlarge and sharpen images in bulk.",
            "default": "generate"
          },
          "prompt": {
            "title": "Prompt",
            "type": "string",
            "description": "generate / logo: describe the image or the logo (brand name in quotes for exact text). edit: describe the change to make to the source image. Not used by upscale."
          },
          "prompts": {
            "title": "Bulk prompts (one image per prompt)",
            "type": "array",
            "description": "generate / edit / logo: a list of prompts, one output per prompt (x \"Number of variants\"), up to 100 outputs per run, generated 4 at a time. Same model and options for every prompt; in mode edit, every prompt edits the same source image. The \"Prompt\" field above, if filled, is generated first.",
            "items": {
              "type": "string"
            }
          },
          "imageUrl": {
            "title": "Source image URL (edit)",
            "type": "string",
            "description": "Public URL of the image to edit. Required in mode edit, optional in generate for models that accept an image. In mode upscale, use \"Image URLs\" below (a single URL here also works)."
          },
          "model": {
            "title": "Model (generate)",
            "enum": [
              "black-forest-labs/flux-schnell",
              "black-forest-labs/flux-2-klein-4b",
              "google/imagen-4-fast",
              "openai/gpt-image-2",
              "black-forest-labs/flux-dev",
              "qwen/qwen-image",
              "bytedance/seedream-4",
              "ideogram-ai/ideogram-v3-turbo",
              "google/nano-banana-2-lite",
              "black-forest-labs/flux-1.1-pro",
              "black-forest-labs/flux-2-pro",
              "black-forest-labs/flux-kontext-pro",
              "bytedance/seedream-4.5",
              "google/imagen-4",
              "recraft-ai/recraft-v3",
              "google/nano-banana-2",
              "black-forest-labs/flux-kontext-max",
              "ideogram-ai/ideogram-v3-balanced",
              "ideogram-ai/ideogram-v3-quality",
              "recraft-ai/recraft-v3-svg",
              "google/imagen-4-ultra",
              "google/nano-banana-pro"
            ],
            "type": "string",
            "description": "Model for mode generate. Each option is billed at its own price, see the Pricing section of the README. Free Apify plan: 1 generation per month (one image) with FLUX.1 Schnell, billed at the normal price ($0.02) (mode generate); other modes and models are replaced by it.",
            "default": "black-forest-labs/flux-schnell"
          },
          "editModel": {
            "title": "Model (edit)",
            "enum": [
              "google/nano-banana-2-lite",
              "google/nano-banana-2",
              "google/nano-banana-pro",
              "black-forest-labs/flux-kontext-pro",
              "black-forest-labs/flux-kontext-max",
              "bytedance/seedream-4",
              "bytedance/seedream-4.5",
              "qwen/qwen-image",
              "black-forest-labs/flux-dev"
            ],
            "type": "string",
            "description": "Model for mode edit. Empty = Nano Banana 2 Lite."
          },
          "logoModel": {
            "title": "Model (logo)",
            "enum": [
              "recraft-ai/recraft-v3-svg",
              "ideogram-ai/ideogram-v3-turbo",
              "recraft-ai/recraft-v3",
              "ideogram-ai/ideogram-v3-quality"
            ],
            "type": "string",
            "description": "Model for mode logo. Empty = Recraft V3 SVG (vector): true .svg file."
          },
          "upscaleModel": {
            "title": "Model (upscale)",
            "enum": [
              "recraft-ai/recraft-crisp-upscale",
              "google/upscaler"
            ],
            "type": "string",
            "description": "Model for mode upscale. Empty = Recraft Crisp Upscale."
          },
          "imageUrls": {
            "title": "Image URLs (upscale)",
            "type": "array",
            "description": "Mode upscale: public, direct links to the JPG / PNG / WebP images to upscale (up to 100 per run). One output per image.",
            "items": {
              "type": "string"
            }
          },
          "optimizePrompt": {
            "title": "Optimize my prompt",
            "type": "boolean",
            "description": "An AI prompt writer rewrites your idea into a detailed image prompt for the selected model (subject, composition, light, style), keeping every detail you gave and any text in quotes. $0.015 per optimized prompt (event \"prompt-optimization\"), charged once with the first delivered output that uses it; nothing extra if the writer is unavailable. The prompt actually used is in the output (\"prompt\", with your text in \"originalPrompt\"). If the writer is unavailable, your own prompt is used.",
            "default": false
          },
          "preset": {
            "title": "Use case",
            "enum": [
              "none",
              "product",
              "ads",
              "social",
              "ugc",
              "story",
              "cinematic",
              "portrait"
            ],
            "type": "string",
            "description": "Style brief for the prompt optimization: product (e-commerce), ads, social post, UGC, story, cinematic, portrait. Picking a use case turns \"Optimize my prompt\" on.",
            "default": "none"
          },
          "qualityScore": {
            "title": "Score the quality of each output",
            "type": "boolean",
            "description": "A multimodal AI looks at each image: coherence (hands, faces, objects, text, illogical details) and match with your original prompt. Adds qualityScore, coherenceScore, promptMatchScore (0-100), issues and verdict (pass / review / fail) to each row, so you can publish only the \"pass\" ones automatically. $0.01 per scored output (event \"quality-score\"); nothing extra if the checker is unavailable.",
            "default": false
          },
          "quality": {
            "title": "Quality",
            "enum": [
              "auto",
              "draft",
              "standard",
              "high",
              "max"
            ],
            "type": "string",
            "description": "Shortcut for the resolution when \"Resolution\" is empty: draft = lowest, standard = model default, high = one step below the best, max = best the model offers. Higher quality costs more per image.",
            "default": "auto"
          },
          "aspectRatio": {
            "title": "Aspect ratio",
            "enum": [
              "auto",
              "1:1",
              "16:9",
              "9:16",
              "4:3",
              "3:4",
              "3:2",
              "2:3",
              "4:5",
              "5:4",
              "21:9",
              "9:21",
              "16:10",
              "10:16",
              "2:1",
              "1:2",
              "3:1",
              "1:3",
              "1:4",
              "4:1",
              "7:5",
              "5:7"
            ],
            "type": "string",
            "description": "Output aspect ratio (generate, edit, logo). \"auto\" keeps the model default (for edits: the source image ratio). An unsupported ratio stops the run before anything is charged.",
            "default": "auto"
          },
          "resolution": {
            "title": "Resolution",
            "enum": [
              "1K",
              "2K",
              "4K"
            ],
            "type": "string",
            "description": "Output resolution for models that offer it (Nano Banana 2 / Pro). Leave empty for 1K. 2K and 4K cost more."
          },
          "numberOfVariants": {
            "title": "Number of variants",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many separate outputs to generate per prompt (1 to 10; generate, edit, logo). Each successful one is billed; failures are free.",
            "default": 1
          },
          "includeFailedVariants": {
            "title": "Include failed outputs in dataset",
            "type": "boolean",
            "description": "Also write failed outputs (with the reason) to the dataset. Failed outputs are never billed.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}