{
  "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. Works with a free Apify account too (1 image/month, FLUX Schnell). For videos, use pnda/ai-video-generator.",
    "version": "1.0",
    "x-build-id": "1zhURrFRJdrrNiAZ8"
  },
  "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"
            }
          },
          "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}