Raiju/includes/ai/image-services.json
2026-10-25 06:05:42 +03:00

327 lines
19 KiB
JSON

{
"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=<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
}
}
}
}