diff --git a/src/app/api/generate/providers/kie.ts b/src/app/api/generate/providers/kie.ts index 82326010..0895e6a6 100644 --- a/src/app/api/generate/providers/kie.ts +++ b/src/app/api/generate/providers/kie.ts @@ -39,6 +39,13 @@ export function getKieModelDefaults(modelId: string): Record { 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 { 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 { */ 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 diff --git a/src/app/api/models/[modelId]/route.ts b/src/app/api/models/[modelId]/route.ts index ec28e6b8..9c95c4c7 100644 --- a/src/app/api/models/[modelId]/route.ts +++ b/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" }, diff --git a/src/app/api/models/route.ts b/src/app/api/models/route.ts index de9b3745..b9923e8e 100644 --- a/src/app/api/models/route.ts +++ b/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",