{ "version": 2, "updatedAt": "2026-10-17", "note": "Image services (kept apart from the chat provider). Each service names an adapter (see image-services.php) and what its models accept. A model may name its own adapter ('adapter') and a path below the service address ('basePath'). 'verified' holds the date the parameters were checked against the provider's official documentation or machine-readable schema, or false when they were not: those entries are best effort and shown as such in the settings. Extra parameters for a model can be added in the settings (custom parameters) without changing code. Prices are only entered with a source and a date; none are guessed. Prices of Kie.ai come from its marketing pages (200 credits = 1 USD), not from the API documentation.", "sources": [ "https://docs.kie.ai/llms.txt", "https://fal.ai/docs/model-apis/model-endpoints/queue", "https://fal.ai/api/openapi/queue/openapi.json?endpoint_id=", "https://apidoc.cometapi.com/api/image/gemini/generate-image-guide.md", "https://apidoc.cometapi.com/api/image/openai/images.md", "https://apidoc.cometapi.com/api/image/seededit-seedream/bytedance-image-generation-task.md" ], "services": { "openai-compatible": { "label": "ai.image_service_openai", "adapter": "openai-images", "baseUrl": "https://api.openai.com/v1", "keyFrom": "openai-compatible", "catalogModels": true }, "openrouter": { "label": "ai.image_service_openrouter", "adapter": "openrouter-chat", "baseUrl": "https://openrouter.ai/api/v1", "keyFrom": "openrouter", "catalogModels": true }, "kie": { "label": "ai.image_service_kie", "adapter": "kie-task", "baseUrl": "https://api.kie.ai", "keyFrom": "kie", "docs": "https://docs.kie.ai/llms.txt", "defaultModel": "nano-banana-2-1", "defaults": { "verified": false, "note": "Unknown Kie.ai model: only the prompt is sent. Add model specific parameters under custom parameters.", "maxCount": 1, "references": null, "price": null }, "models": [ { "id": "nano-banana-pro", "label": "Kie.ai: Nano Banana Pro", "verified": "2026-10-17", "kie": {"model": "nano-banana-pro", "editModel": null}, "aspectParam": "aspect_ratio", "aspectAuto": true, "aspects": ["1:1", "2:3", "3:2", "3:4", "4:3", "4:5", "5:4", "9:16", "16:9", "21:9"], "resolutionParam": "resolution", "resolutions": ["1K", "2K", "4K"], "formatParam": "output_format", "formats": ["png", "jpg"], "formatAliases": {"jpeg": "jpg", "webp": "png"}, "maxCount": 1, "references": {"param": "image_input", "max": 8, "transport": "url", "verified": "2026-10-17"}, "price": {"currency": "USD", "byResolution": {"1K": 0.09, "2K": 0.09, "4K": 0.12}, "source": "https://kie.ai/nano-banana-pro", "updatedAt": "2026-10-17"} }, { "id": "nano-banana-2-1", "label": "Kie.ai: Nano Banana 2.1", "verified": "2026-10-17", "kie": {"model": "nano-banana-2-1", "editModel": null}, "aspectParam": "aspect_ratio", "aspectAuto": true, "aspects": ["1:1", "2:3", "3:2", "1:4", "4:1", "3:4", "4:3", "4:5", "5:4", "1:8", "8:1", "9:16", "16:9", "21:9"], "resolutionParam": "resolution", "resolutions": ["1K", "2K", "4K"], "formatParam": "output_format", "formats": ["png", "jpg"], "formatAliases": {"jpeg": "jpg", "webp": "png"}, "maxCount": 1, "references": {"param": "image_input", "max": 10, "transport": "url", "verified": "2026-10-17"}, "price": {"currency": "USD", "byResolution": {"1K": 0.02, "2K": 0.03, "4K": 0.045}, "source": "https://kie.ai/nano-banana-2-1", "updatedAt": "2026-10-17"} }, { "id": "gpt-image-2-5-flare", "label": "Kie.ai: GPT Image 2.5 Flare", "verified": "2026-10-17", "note": "The price page does not separate Flare and Sunburst.", "kie": {"model": "gpt-image-2-5-flare-text-to-image", "editModel": "gpt-image-2-5-flare-image-to-image"}, "aspectParam": "aspect_ratio", "aspectAuto": true, "aspects": ["1:1", "3:2", "2:3", "4:3", "3:4", "16:9", "9:16", "21:9"], "resolutionParam": "resolution", "resolutions": ["1K", "2K", "4K"], "maxCount": 1, "references": {"param": "input_urls", "max": 16, "transport": "url", "verified": "2026-10-17"}, "price": {"currency": "USD", "byResolution": {"1K": 0.03, "2K": 0.05, "4K": 0.08}, "source": "https://kie.ai/gpt-image-2-5", "updatedAt": "2026-10-17"} }, { "id": "gpt-image-2-5-sunburst", "label": "Kie.ai: GPT Image 2.5 Sunburst", "verified": "2026-10-17", "note": "The price page does not separate Flare and Sunburst.", "kie": {"model": "gpt-image-2-5-sunburst-text-to-image", "editModel": "gpt-image-2-5-sunburst-image-to-image"}, "aspectParam": "aspect_ratio", "aspectAuto": true, "aspects": ["1:1", "3:2", "2:3", "4:3", "3:4", "16:9", "9:16", "21:9"], "resolutionParam": "resolution", "resolutions": ["1K", "2K", "4K"], "maxCount": 1, "references": {"param": "input_urls", "max": 16, "transport": "url", "verified": "2026-10-17"}, "price": {"currency": "USD", "byResolution": {"1K": 0.03, "2K": 0.05, "4K": 0.08}, "source": "https://kie.ai/gpt-image-2-5", "updatedAt": "2026-10-17"} }, { "id": "seedream-5-0-pro", "label": "Kie.ai: Seedream 5.0 Pro", "verified": "2026-10-17", "note": "Kie.ai sizes Seedream by quality: basic is 1K, high is 2K.", "kie": {"model": "seedream/5-pro-text-to-image", "editModel": "seedream/5-pro-image-to-image"}, "aspectParam": "aspect_ratio", "aspectAuto": false, "aspects": ["1:1", "4:3", "3:4", "16:9", "9:16", "2:3", "3:2", "21:9"], "resolutionParam": "quality", "resolutions": ["1K", "2K"], "resolutionMap": {"1K": "basic", "2K": "high"}, "formatParam": "output_format", "formats": ["png", "jpeg"], "formatAliases": {"jpg": "jpeg", "webp": "png"}, "maxCount": 1, "references": {"param": "image_urls", "max": 10, "transport": "url", "verified": "2026-10-17"}, "price": {"currency": "USD", "byResolution": {"1K": 0.035, "2K": 0.07}, "source": "https://kie.ai/seedream-5-0-pro", "updatedAt": "2026-10-17"} } ] }, "fal": { "label": "ai.image_service_fal", "adapter": "fal-queue", "baseUrl": "https://queue.fal.run", "keyFrom": null, "docs": "https://fal.ai/docs/model-apis/model-endpoints/queue", "defaultModel": "google/nano-banana-2.1", "defaults": { "verified": false, "note": "Unknown fal model: prompt, aspect_ratio and num_images are sent as most fal image models accept them. Add model specific parameters under custom parameters.", "aspectParam": "aspect_ratio", "aspects": ["21:9", "16:9", "3:2", "4:3", "5:4", "1:1", "4:5", "3:4", "2:3", "9:16"], "countParam": "num_images", "maxCount": 4, "references": null, "price": null }, "models": [ { "id": "fal-ai/nano-banana-pro", "label": "fal.ai: Nano Banana Pro", "verified": "2026-10-17", "aspectParam": "aspect_ratio", "aspects": ["21:9", "16:9", "3:2", "4:3", "5:4", "1:1", "4:5", "3:4", "2:3", "9:16"], "countParam": "num_images", "maxCount": 4, "formatParam": "output_format", "formats": ["png", "jpeg", "webp"], "resolutionParam": "resolution", "resolutions": ["1K", "2K", "4K"], "references": {"editModel": "fal-ai/nano-banana-pro/edit", "param": "image_urls", "transport": "data-uri", "max": 14, "verified": "2026-10-17", "note": "Data URIs for images are stated on the edit page of this model."}, "price": {"currency": "USD", "byResolution": {"1K": 0.15, "2K": 0.15, "4K": 0.30}, "source": "https://fal.ai/models/fal-ai/nano-banana-pro", "updatedAt": "2026-10-17"} }, { "id": "google/nano-banana-2.1", "label": "fal.ai: Nano Banana 2.1", "verified": "2026-10-17", "note": "fal.ai charges Nano Banana 2.1 by tokens: no flat price per image.", "aspectParam": "aspect_ratio", "aspects": ["21:9", "16:9", "3:2", "4:3", "5:4", "1:1", "4:5", "3:4", "2:3", "9:16", "4:1", "1:4", "8:1", "1:8"], "countParam": "num_images", "maxCount": 4, "formatParam": "output_format", "formats": ["png", "jpeg", "webp"], "resolutionParam": "resolution", "resolutions": ["1K", "2K", "4K"], "references": {"editModel": "google/nano-banana-2.1/edit", "param": "image_urls", "transport": "data-uri", "max": 10, "verified": false, "note": "The edit endpoint is documented; data URIs for images are not stated for this model."}, "price": null }, { "id": "openai/gpt-image-2.5/flare/text-to-image", "label": "fal.ai: GPT Image 2.5 Flare", "verified": "2026-10-17", "note": "fal.ai charges GPT Image 2.5 by tokens: no flat price per image.", "sizeParam": "image_size", "aspects": ["1:1", "4:3", "3:4", "16:9", "9:16"], "sizePresets": {"1:1": "square_hd", "4:3": "landscape_4_3", "3:4": "portrait_4_3", "16:9": "landscape_16_9", "9:16": "portrait_16_9"}, "countParam": "num_images", "maxCount": 10, "formatParam": "output_format", "formats": ["png", "jpeg", "webp"], "qualityParam": "quality", "qualities": ["auto", "low", "medium", "high"], "references": {"editModel": "openai/gpt-image-2.5/flare/edit", "param": "image_urls", "transport": "data-uri", "max": 16, "verified": false, "note": "The edit endpoint is documented; data URIs for images are not stated for this model."}, "price": null }, { "id": "openai/gpt-image-2.5/sunburst/text-to-image", "label": "fal.ai: GPT Image 2.5 Sunburst", "verified": "2026-10-17", "note": "fal.ai charges GPT Image 2.5 by tokens: no flat price per image.", "sizeParam": "image_size", "aspects": ["1:1", "4:3", "3:4", "16:9", "9:16"], "sizePresets": {"1:1": "square_hd", "4:3": "landscape_4_3", "3:4": "portrait_4_3", "16:9": "landscape_16_9", "9:16": "portrait_16_9"}, "countParam": "num_images", "maxCount": 10, "formatParam": "output_format", "formats": ["png", "jpeg", "webp"], "qualityParam": "quality", "qualities": ["auto", "low", "medium", "high"], "references": {"editModel": "openai/gpt-image-2.5/sunburst/edit", "param": "image_urls", "transport": "data-uri", "max": 16, "verified": false, "note": "The edit endpoint is documented; data URIs for images are not stated for this model."}, "price": null }, { "id": "bytedance/seedream/v5/pro/text-to-image", "label": "fal.ai: Seedream 5.0 Pro", "verified": "2026-10-17", "note": "fal.ai lists a tentative price for Seedream 5.0 Pro by image size; none is entered here.", "sizeParam": "image_size", "aspects": ["1:1", "4:3", "3:4", "16:9", "9:16"], "sizePresets": {"1:1": "square_hd", "4:3": "landscape_4_3", "3:4": "portrait_4_3", "16:9": "landscape_16_9", "9:16": "portrait_16_9"}, "countParam": "num_images", "maxCount": 6, "formatParam": "output_format", "formats": ["jpeg", "png"], "references": {"editModel": "bytedance/seedream/v5/pro/edit", "param": "image_urls", "transport": "data-uri", "max": 10, "verified": false, "note": "The edit endpoint is documented; data URIs for images are not stated for this model."}, "price": null } ] }, "comet": { "label": "ai.image_service_comet", "adapter": "gemini-generate", "baseUrl": "https://api.cometapi.com", "keyFrom": null, "docs": "https://apidoc.cometapi.com/api/image/gemini/generate-image-guide.md", "defaultModel": "gemini-nano-banana-2.1", "defaults": { "verified": false, "note": "Unknown Comet model: sent through the Gemini generateContent route. Other routes (for example /v1/images/generations) are available as custom service.", "aspectParam": "aspectRatio", "aspects": ["21:9", "16:9", "3:2", "4:3", "5:4", "1:1", "4:5", "3:4", "2:3", "9:16"], "resolutionParam": "imageSize", "resolutions": ["1K", "2K", "4K"], "maxCount": 1, "references": {"transport": "inline-data", "max": 8, "verified": false}, "price": null }, "models": [ { "id": "gemini-3-pro-image", "label": "Comet: Nano Banana Pro", "verified": "2026-10-17", "note": "Comet's catalog lists this id; its examples use gemini-3-pro-image-preview. Comet charges by tokens: no flat price per image.", "aspectParam": "aspectRatio", "aspects": ["21:9", "16:9", "3:2", "4:3", "5:4", "1:1", "4:5", "3:4", "2:3", "9:16"], "resolutionParam": "imageSize", "resolutions": ["1K", "2K", "4K"], "maxCount": 1, "references": {"transport": "inline-data", "max": 14, "verified": "2026-10-17"}, "price": null }, { "id": "gemini-nano-banana-2.1", "label": "Comet: Nano Banana 2.1", "verified": "2026-10-17", "note": "The ratios 1:4, 4:1, 1:8 and 8:1 are not documented for this model on Comet. Comet charges by tokens: no flat price per image.", "aspectParam": "aspectRatio", "aspects": ["21:9", "16:9", "3:2", "4:3", "5:4", "1:1", "4:5", "3:4", "2:3", "9:16"], "resolutionParam": "imageSize", "resolutions": ["1K", "2K", "4K"], "maxCount": 1, "references": {"transport": "inline-data", "max": 14, "verified": "2026-10-17"}, "price": null }, { "id": "gpt-image-2.5-flare", "label": "Comet: GPT Image 2.5 Flare", "verified": "2026-10-17", "note": "Comet charges by tokens: no flat price per image. The allowed pixel sizes are not listed by Comet; the usual 1024x1024, 1536x1024 and 1024x1536 are sent. One reference image (multipart upload) is sent; more are not documented.", "adapter": "openai-images", "basePath": "/v1", "openai": {"params": ["quality", "output_format", "output_compression"]}, "maxCount": 1, "references": {"transport": "multipart", "max": 1, "verified": false}, "price": null }, { "id": "gpt-image-2.5-sunburst", "label": "Comet: GPT Image 2.5 Sunburst", "verified": "2026-10-17", "note": "Comet charges by tokens: no flat price per image. The allowed pixel sizes are not listed by Comet; the usual 1024x1024, 1536x1024 and 1024x1536 are sent. One reference image (multipart upload) is sent; more are not documented.", "adapter": "openai-images", "basePath": "/v1", "openai": {"params": ["quality", "output_format", "output_compression"]}, "maxCount": 1, "references": {"transport": "multipart", "max": 1, "verified": false}, "price": null }, { "id": "seedream-5-0-pro-260628", "label": "Comet: Seedream 5.0 Pro", "verified": false, "note": "Comet documents only the asynchronous text-to-image call (size 2K); reference images, ratios and formats are not documented, so none are sent.", "adapter": "comet-task", "basePath": "/v1", "resolutions": ["2K"], "maxCount": 1, "references": null, "price": null } ] }, "custom": { "label": "ai.image_service_custom", "adapter": "openai-images", "baseUrl": "", "keyFrom": null, "defaults": { "verified": false, "note": "Any service with an OpenAI compatible /images/generations endpoint.", "aspects": ["21:9", "16:9", "3:2", "4:3", "5:4", "1:1", "4:5", "3:4", "2:3", "9:16"], "maxCount": 4, "references": {"transport": "multipart", "max": 8, "verified": false}, "price": null } } } }