Browse Source

feat: add 7 new Kie.ai image models

Add Nano Banana 2 (Kie), Imagen 4, Imagen 4 Fast, Imagen 4 Ultra,
Seedream 5.0 Lite, Seedream 5.0 Lite Edit, and Wan 2.7 Image with
registry entries, parameter schemas, defaults, and image input keys.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
handoff-20260429-1057
shrimbly 3 months ago
parent
commit
d4e99c0d84
  1. 36
      src/app/api/generate/providers/kie.ts
  2. 59
      src/app/api/models/[modelId]/route.ts
  3. 63
      src/app/api/models/route.ts

36
src/app/api/generate/providers/kie.ts

@ -39,6 +39,13 @@ export function getKieModelDefaults(modelId: string): Record<string, unknown> {
quality: "basic",
};
// Nano Banana 2 (Kie)
case "nano-banana-2":
return {
aspect_ratio: "auto",
resolution: "1K",
};
// Nano Banana Pro (Kie)
case "nano-banana-pro":
return {
@ -55,6 +62,32 @@ export function getKieModelDefaults(modelId: string): Record<string, unknown> {
aspect_ratio: "1:1",
};
// Imagen 4 models
case "google/imagen4":
case "google/imagen4-ultra":
return {};
case "google/imagen4-fast":
return {
aspect_ratio: "16:9",
num_images: 1,
};
// Seedream 5.0 Lite models
case "seedream/5-lite-text-to-image":
case "seedream/5-lite-image-to-image":
return {
aspect_ratio: "1:1",
quality: "basic",
};
// Wan 2.7 Image
case "wan/2-7-image":
return {
resolution: "2K",
n: 4,
};
// Grok Imagine image models
case "grok-imagine/text-to-image":
return {
@ -158,11 +191,14 @@ export function getKieModelDefaults(modelId: string): Record<string, unknown> {
*/
export function getKieImageInputKey(modelId: string): string {
// Model-specific parameter names
if (modelId === "nano-banana-2") return "image_input";
if (modelId === "nano-banana-pro") return "image_input";
if (modelId === "seedream/4.5-edit") return "image_urls";
if (modelId === "gpt-image/1.5-image-to-image") return "input_urls";
// Flux-2 I2I models use input_urls
if (modelId === "flux-2/pro-image-to-image" || modelId === "flux-2/flex-image-to-image") return "input_urls";
// Wan 2.7 Image uses input_urls
if (modelId === "wan/2-7-image") return "input_urls";
// Kling 2.5 turbo I2V uses singular image_url
if (modelId === "kling/v2-5-turbo-image-to-video-pro") return "image_url";
// Kling 2.6 motion control uses input_urls

59
src/app/api/models/[modelId]/route.ts

@ -748,6 +748,65 @@ function getKieSchema(modelId: string): ExtractedSchema {
{ name: "image_input", type: "image", required: false, label: "Image", isArray: true },
],
},
"nano-banana-2": {
parameters: [
{ name: "aspect_ratio", type: "string", description: "Output aspect ratio", enum: ["1:1", "2:3", "3:2", "4:3", "16:9", "9:16", "21:9", "auto"], default: "auto" },
{ name: "resolution", type: "string", description: "Output resolution", enum: ["512", "1K", "2K", "4K"], default: "1K" },
],
inputs: [
{ name: "prompt", type: "text", required: true, label: "Prompt" },
{ name: "image_input", type: "image", required: false, label: "Image", isArray: true },
],
},
"google/imagen4": {
parameters: [
{ name: "aspect_ratio", type: "string", description: "Output aspect ratio", enum: ["1:1", "3:4", "4:3", "9:16", "16:9"], default: "1:1" },
],
inputs: [{ name: "prompt", type: "text", required: true, label: "Prompt" }],
},
"google/imagen4-fast": {
parameters: [
{ name: "aspect_ratio", type: "string", description: "Output aspect ratio", enum: ["1:1", "3:4", "4:3", "9:16", "16:9"], default: "16:9" },
{ name: "num_images", type: "integer", description: "Number of images to generate", default: 1, minimum: 1, maximum: 4 },
],
inputs: [{ name: "prompt", type: "text", required: true, label: "Prompt" }],
},
"google/imagen4-ultra": {
parameters: [
{ name: "aspect_ratio", type: "string", description: "Output aspect ratio", enum: ["1:1", "3:4", "4:3", "9:16", "16:9"], default: "1:1" },
],
inputs: [{ name: "prompt", type: "text", required: true, label: "Prompt" }],
},
"seedream/5-lite-text-to-image": {
parameters: [
{ name: "aspect_ratio", type: "string", description: "Output aspect ratio", enum: ["1:1", "4:3", "3:4", "16:9", "9:16", "2:3", "3:2", "21:9"], default: "1:1" },
{ name: "quality", type: "string", description: "Output quality", enum: ["basic", "high"], default: "basic" },
{ name: "seed", type: "integer", description: "Random seed for reproducibility", minimum: 0 },
],
inputs: [{ name: "prompt", type: "text", required: true, label: "Prompt" }],
},
"seedream/5-lite-image-to-image": {
parameters: [
{ name: "aspect_ratio", type: "string", description: "Output aspect ratio", enum: ["1:1", "4:3", "3:4", "16:9", "9:16", "2:3", "3:2", "21:9"], default: "1:1" },
{ name: "quality", type: "string", description: "Output quality", enum: ["basic", "high"], default: "basic" },
{ name: "seed", type: "integer", description: "Random seed for reproducibility", minimum: 0 },
],
inputs: [
{ name: "prompt", type: "text", required: true, label: "Prompt" },
{ name: "image_urls", type: "image", required: true, label: "Image", isArray: true },
],
},
"wan/2-7-image": {
parameters: [
{ name: "resolution", type: "string", description: "Output resolution", enum: ["1K", "2K"], default: "2K" },
{ name: "n", type: "integer", description: "Number of images to generate", default: 4, minimum: 1, maximum: 8 },
{ name: "seed", type: "integer", description: "Random seed for reproducibility", minimum: 0 },
],
inputs: [
{ name: "prompt", type: "text", required: true, label: "Prompt" },
{ name: "input_urls", type: "image", required: false, label: "Image", isArray: true },
],
},
"grok-imagine/text-to-image": {
parameters: [
{ name: "aspect_ratio", type: "string", description: "Output aspect ratio", enum: ["2:3", "3:2", "1:1", "16:9", "9:16"], default: "1:1" },

63
src/app/api/models/route.ts

@ -155,6 +155,69 @@ const KIE_MODELS: ProviderModel[] = [
coverImage: undefined,
pageUrl: "https://docs.kie.ai/market/google/pro-image-to-image",
},
{
id: "nano-banana-2",
name: "Nano Banana 2 (Kie)",
description: "Google Gemini 3.1 Flash image generation via Kie.ai. Supports text-to-image and image-to-image with resolution control.",
provider: "kie",
capabilities: ["text-to-image", "image-to-image"],
coverImage: undefined,
pageUrl: "https://docs.kie.ai/market/google/nano-banana-2",
},
{
id: "google/imagen4",
name: "Imagen 4",
description: "Google Imagen 4 high-quality text-to-image generation via Kie.ai.",
provider: "kie",
capabilities: ["text-to-image"],
coverImage: undefined,
pageUrl: "https://docs.kie.ai/market/google/imagen4",
},
{
id: "google/imagen4-fast",
name: "Imagen 4 Fast",
description: "Google Imagen 4 fast text-to-image generation via Kie.ai.",
provider: "kie",
capabilities: ["text-to-image"],
coverImage: undefined,
pageUrl: "https://docs.kie.ai/market/google/imagen4-fast",
},
{
id: "google/imagen4-ultra",
name: "Imagen 4 Ultra",
description: "Google Imagen 4 Ultra highest-quality text-to-image generation via Kie.ai.",
provider: "kie",
capabilities: ["text-to-image"],
coverImage: undefined,
pageUrl: "https://docs.kie.ai/market/google/imagen4-ultra",
},
{
id: "seedream/5-lite-text-to-image",
name: "Seedream 5.0 Lite",
description: "Seedream 5.0 Lite text-to-image generation via Kie.ai.",
provider: "kie",
capabilities: ["text-to-image"],
coverImage: undefined,
pageUrl: "https://docs.kie.ai/market/seedream/5-lite",
},
{
id: "seedream/5-lite-image-to-image",
name: "Seedream 5.0 Lite Edit",
description: "Seedream 5.0 Lite image editing via Kie.ai.",
provider: "kie",
capabilities: ["image-to-image"],
coverImage: undefined,
pageUrl: "https://docs.kie.ai/market/seedream/5-lite",
},
{
id: "wan/2-7-image",
name: "Wan 2.7 Image",
description: "Wan 2.7 image generation. Supports text-to-image and image-to-image via Kie.ai.",
provider: "kie",
capabilities: ["text-to-image", "image-to-image"],
coverImage: undefined,
pageUrl: "https://docs.kie.ai/market/wan/2-7-image",
},
{
id: "grok-imagine/text-to-image",
name: "Grok Imagine",

Loading…
Cancel
Save