## Basic tool info Model name: google/nano-banana-2 Model description: An image editing tool designed for quick transformations using reference images and prompts. Supports multi-image mixing and aspect ratio adjustments. Model cover: https://cdn.wiro.ai/uploads/models/google-nano-banana-2-cover.webp Model categories: - tool - partner - google - image-to-image - quick-showcase - text-to-image - price-list - fast-inference - image-editing - use-agent - nogpu-pipeline Model tags: - google Run Task Endpoint (POST): https://api.wiro.ai/v1/Run/google/nano-banana-2 Get Task Detail Endpoint (POST): https://api.wiro.ai/v1/Task/Detail ## Model Inputs: - name: inputImage label: Input Image help: Gemini 3.1 Flash Preview lets you to mix up to 14 reference images. These 14 images can include the following: Up to 10 images of objects with high-fidelity to include in the final image, up to 4 images of characters to maintain character consistency type: combinefileinput default: google-nano-banana-2-input-2.jpg - name: prompt label: prompt help: The prompt to generate the image. type: textarea default: A top-down, realistic street photography shot of a tree surrounded by a circular rack of parked bicycles. Colorize the scene with natural, everyday urban colors. The tree canopy features lush, vibrant summer green leaves, and the trunk is a textured, deep bark brown. The paved ground is a realistic asphalt gray, contrasted by crisp, bright white painted street lines. The clustered bicycles feature a variety of realistic metallic and painted finishes: a mix of matte blacks, shiny silvers, and chromes, with scattered realistic accents like a muted red, navy blue, or mustard yellow bike frame. Natural daytime lighting, soft realistic shadows, maintaining the grainy texture and high-angle perspective of the original photo, 8k resolution, photorealistic. - name: aspectRatio label: Aspect Ratio help: Aspect Ratio of the output image type: select default: options: - value: "" label: Match Input Image - value: "1:1" label: 1:1 (512)512x512 (1K)1024x1024 (2K)2048x2048 (4K)4096x4096 - value: "1:4" label: 1:4 (512)256x1024 (1K)512x2048 (2K)1024x4096 (4K)2048x8192 - value: "1:8" label: 1:8 (512)192x1536 (1K)384x3072 (2K)768x6144 (4K)1536x12288 - value: "2:3" label: 2:3 (512)424x632 (1K)848x1264 (2K)1696x2528 (4K)3392x5056 - value: "3:2" label: 3:2 (512)632x424 (1K)1264x848 (2K)2528x1696 (4K)5056x3392 - value: "3:4" label: 3:4 (512)448x600 (1K)896x1200 (2K)1792x2400 (4K)3584x4800 - value: "4:1" label: 4:1 (512)1024x256 (1K)2048x512 (2K)4096x1024 (4K)8192x2048 - value: "4:3" label: 4:3 (512)600x448 (1K)1200x896 (2K)2400x1792 (4K)4800x3584 - value: "4:5" label: 4:5 (512)464x576 (1K)928x1152 (2K)1856x2304 (4K)3712x4608 - value: "5:4" label: 5:4 (512)576x464 (1K)1152x928 (2K)2304x1856 (4K)4608x3712 - value: "8:1" label: 8:1 (512)1536x192 (1K)3072x384 (2K)6144x768 (4K)12288x1536 - value: "9:16" label: 9:16 (512)384x688 (1K)768x1376 (2K)1536x2752 (4K)3072x5504 - value: "16:9" label: 16:9 (512)688x384 (1K)1376x768 (2K)2752x1536 (4K)5504x3072 - value: "21:9" label: 21:9 (512)792x168 (1K)1584x672 (2K)3168x1344 (4K)6336x2688 - name: resolution label: Resolution (K) help: Default is 1K type: select default: 1K options: - value: "512" label: 512 (Standard) - value: "1K" label: 1K (Standard) - value: "2K" label: 2K (High) - value: "4K" label: 4K (Ultra High) - name: safetySetting label: Safety Setting help: Safety Setting type: select default: OFF options: - value: "BLOCK_LOW_AND_ABOVE" label: BLOCK_LOW_AND_ABOVE - value: "BLOCK_MEDIUM_AND_ABOVE" label: BLOCK_MEDIUM_AND_ABOVE - value: "BLOCK_ONLY_HIGH" label: BLOCK_ONLY_HIGH - value: "BLOCK_NONE" label: BLOCK_NONE - value: "OFF" label: OFF ## Model Parameter Inspires: - prompt: A photo of a glossy fashion magazine cover. The cover has the large bold words 'FUTURE WEAR' in a modern, metallic sans-serif font that fills the top third of the view. In front of the text, there is a portrait of an avant-garde model wearing a jacket made of woven fiber-optic cables glowing in neon pink and cyan. Put the issue number 'No. 42' and today's date in the bottom left corner, along with a scannable barcode and 'Price: $12.99' in the bottom right. The magazine is resting on a sleek glass coffee table reflecting the cover perfectly. - inputImage: - prompt: Present a clear, 45° top-down isometric miniature 3D cartoon scene of a futuristic cyberpunk Tokyo street corner. Use soft, refined textures with realistic PBR materials and gentle, lifelike lighting and shadows. Integrate heavy rain and glowing neon puddle reflections directly into the city environment to create an immersive atmospheric mood. Use a clean, minimalistic composition with a soft, dark-grey solid background. At the top-center, place the title 'NEO-TOKYO' in large bold neon-blue text, a prominent glowing umbrella icon beneath it, and the text 'Humidity 98%' in medium text. All text must be perfectly centered and consistent. - inputImage: - prompt: A photo of an everyday scene at a busy modern art studio. In the foreground, a hyper-realistic oil painter is working on a canvas. Sitting next to them on a stool is an anime-style woman with vibrant purple hair drinking coffee. In the background, one of the assistants is a black-and-white pencil sketch come to life, and another person organizing supplies is a colorful claymation figure. The lighting must interact naturally and consistently across all four distinct artistic styles. - inputImage: - prompt: An icon representing a futuristic smart-home hub. The background is pure white. Make the icon in a colorful, hyper-tactile 3D style with highly realistic material textures like brushed anodized aluminum, matte silicone, and glossy tinted glass. The hub should have a glowing orange holographic interface floating slightly above it. No text in the image. - inputImage: - prompt: A high-end, photorealistic advertisement for a luxury botanical perfume called 'VERDANT'. The glass perfume bottle is elegant and minimalist, resting on a bed of wet moss and dark green fern leaves in a dense, misty forest. The logo 'VERDANT' is perfectly etched and integrated into the glass bottle itself, catching the dappled golden-hour sunlight filtering through the canopy. - inputImage: - prompt: A beautifully designed, highly detailed infographic poster explaining the 'Anatomy of a Spaceship'. The poster features a central, highly detailed technical illustration of a sleek, silver spacecraft cut in half to reveal its glowing blue engine core and crew cabins. Neatly formatted text boxes with thin, elegant leader lines point to specific parts: 'Warp Drive', 'Navigation Deck', and 'Solar Array'. The background is a deep, starry blueprint texture. - inputImage: - prompt: A cinematic movie poster for a sci-fi thriller. The main focal point is a silhouetted figure standing at the end of a long, glowing corridor that stretches into infinity. At the very top, in thin, elegant tracking-spaced letters, the text reads: 'FROM THE VISIONARY DIRECTOR'. In the center of the poster, huge, imposing, distressed block letters spell out 'THE CORRIDOR'. At the bottom, a small billing block with realistic-looking credit text. The color palette is strictly deep blacks, stark whites, and an eerie radioactive green. - inputImage: - prompt: A macro photograph of an incredibly complex, antique pocket watch that has been broken open. The internal gears are made of gleaming brass, tarnished silver, and glowing blue crystalline energy. The watch is resting on worn, dark brown cracked leather. The depth of field is incredibly shallow, blurring the background completely while keeping the intricate engravings on the smallest gears in razor-sharp 4K focus. - inputImage: - prompt: A detailed character design reference sheet for a fantasy rogue. The image must show the same character from three different angles: a front view, a side profile, and a back view, aligned perfectly in a row. The character is a tall elf wearing intricate layered leather armor, a dark green hooded cloak, and carrying twin daggers. The background should be a neutral, flat grey to emphasize the character design. Include the text 'CHARACTER TURNAROUND' at the top in a clean fantasy font. - inputImage: - prompt: Make a photo that is a perfectly captured wide-angle interior shot of a beautiful modern library built inside a massive, converted gothic cathedral. The image features towering stone arches, floor-to-ceiling wooden bookshelves, and modern, sleek reading lamps. Dust motes are dancing in the dramatic, god-ray shafts of light pouring through a massive stained-glass window. The shot must look like a real, 4K architectural photograph, not a miniature or render. - inputImage: - prompt: A top-down, realistic street photography shot of a tree surrounded by a circular rack of parked bicycles. Colorize the scene with natural, everyday urban colors. The tree canopy features lush, vibrant summer green leaves, and the trunk is a textured, deep bark brown. The paved ground is a realistic asphalt gray, contrasted by crisp, bright white painted street lines. The clustered bicycles feature a variety of realistic metallic and painted finishes: a mix of matte blacks, shiny silvers, and chromes, with scattered realistic accents like a muted red, navy blue, or mustard yellow bike frame. Natural daytime lighting, soft realistic shadows, maintaining the grainy texture and high-angle perspective of the original photo, 8k resolution, photorealistic. - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/google-nano-banana-2-input-2.jpg ## Integration Header Prepare ```bash # Sign up Wiro dashboard and create project export YOUR_API_KEY="{{useSelectedProjectAPIKey}}"; export YOUR_API_SECRET="XXXXXXXXX"; # unix time or any random integer value export NONCE=$(date +%s); # hmac-SHA256 (YOUR_API_SECRET+Nonce) with YOUR_API_KEY export SIGNATURE="$(echo -n "${YOUR_API_SECRET}${NONCE}" | openssl dgst -sha256 -hmac "${YOUR_API_KEY}")"; ``` ## Run Command - Make HTTP Post Request ```bash curl -X POST "https://api.wiro.ai/v1/Run/google/nano-banana-2" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "inputImage": "google-nano-banana-2-input-2.jpg", "prompt": "A top-down, realistic street photography shot of a tree surrounded by a circular rack of parked bicycles. Colorize the scene with natural, everyday urban colors. The tree canopy features lush, vibrant summer green leaves, and the trunk is a textured, deep bark brown. The paved ground is a realistic asphalt gray, contrasted by crisp, bright white painted street lines. The clustered bicycles feature a variety of realistic metallic and painted finishes: a mix of matte blacks, shiny silvers, and chromes, with scattered realistic accents like a muted red, navy blue, or mustard yellow bike frame. Natural daytime lighting, soft realistic shadows, maintaining the grainy texture and high-angle perspective of the original photo, 8k resolution, photorealistic.", "aspectRatio": "", "resolution": "1K", "safetySetting": "OFF", "callbackUrl": "You can provide a callback URL; Wiro will send a POST request to it when the task is completed." }'; ``` ## Run Command - Response ```json { "errors": [], "taskid": "2221", "socketaccesstoken": "eDcCm5yyUfIvMFspTwww49OUfgXkQt", "result": true } ``` ## Get Task Detail - Make HTTP Post Request with Task ID ```bash curl -X POST "https://api.wiro.ai/v1/Task/Detail" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "taskid": "2221" }'; ``` ## Get Task Detail - Make HTTP Post Request with Socket Access Token ```bash curl -X POST "https://api.wiro.ai/v1/Task/Detail" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "tasktoken": "eDcCm5yyUfIvMFspTwww49OUfgXkQt" }'; ``` ## Get Task Detail - Response ```json { "total": "1", "errors": [], "tasklist": [ { "id": "2221", "uuid": "15bce51f-442f-4f44-a71d-13c6374a62bd", "socketaccesstoken": "eDcCm5yyUfIvMFspTwww49OUfgXkQt", "parameters": {}, "debugoutput": "", "debugerror": "", "starttime": "1734513809", "endtime": "1734513813", "elapsedseconds": "6.0000", "status": "task_postprocess_end", "createtime": "1734513807", "canceltime": "0", "assigntime": "1734513807", "accepttime": "1734513807", "preprocessstarttime": "1734513807", "preprocessendtime": "1734513807", "postprocessstarttime": "1734513813", "postprocessendtime": "1734513814", "outputs": [ { "id": "6bc392c93856dfce3a7d1b4261e15af3", "name": "0.png", "contenttype": "image/png", "parentid": "6c1833f39da71e6175bf292b18779baf", "uuid": "15bce51f-442f-4f44-a71d-13c6374a62bd", "size": "202472", "addedtime": "1734513812", "modifiedtime": "1734513812", "accesskey": "dFKlMApaSgMeHKsJyaDeKrefcHahUK", "url": "https://cdn1.wiro.ai/6a6af820-c5050aee-40bd7b83-a2e186c6-7f61f7da-3894e49c-fc0eeb66-9b500fe2/0.png" } ], "size": "202472" } ], "result": true } ``` ## Kill Task - Make HTTP Post Request with Task ID ```bash curl -X POST "https://api.wiro.ai/v1/Task/Kill" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "taskid": "534574" }'; ``` ## Kill Task - Make HTTP Post Request with Socket Access Token ```bash curl -X POST "https://api.wiro.ai/v1/Task/Kill" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "socketaccesstoken": "ZpYote30on42O4jjHXNiKmrWAZqbRE" }'; ``` ## Kill Task - Response ```json { "errors": [], "tasklist": [ { "id": "534574", "uuid": "15bce51f-442f-4f44-a71d-13c6374a62bd", "name": "", "socketaccesstoken": "ZpYote30on42O4jjHXNiKmrWAZqbRE", "parameters": { "inputImage": "https://api.wiro.ai/v1/File/mCmUXgZLG1FNjjjwmbtPFr2LVJA112/inputImage-6060136.png" }, "debugoutput": "", "debugerror": "", "starttime": "1734513809", "endtime": "1734513813", "elapsedseconds": "6.0000", "status": "task_cancel", "cps": "0.000585000000", "totalcost": "0.003510000000", "guestid": null, "projectid": "699", "modelid": "598", "description": "", "basemodelid": "0", "runtype": "model", "modelfolderid": "", "modelfileid": "", "callbackurl": "", "marketplaceid": null, "createtime": "1734513807", "canceltime": "0", "assigntime": "1734513807", "accepttime": "1734513807", "preprocessstarttime": "1734513807", "preprocessendtime": "1734513807", "postprocessstarttime": "1734513813", "postprocessendtime": "1734513814", "pexit": "0", "categories": "["tool","image-to-image","quick-showcase","compare-landscape"]", "outputs": [ { "id": "6bc392c93856dfce3a7d1b4261e15af3", "name": "0.png", "contenttype": "image/png", "parentid": "6c1833f39da71e6175bf292b18779baf", "uuid": "15bce51f-442f-4f44-a71d-13c6374a62bd", "size": "202472", "addedtime": "1734513812", "modifiedtime": "1734513812", "accesskey": "dFKlMApaSgMeHKsJyaDeKrefcHahUK", "foldercount": "0", "filecount": "0", "ispublic": 0, "expiretime": null, "url": "https://cdn1.wiro.ai/6a6af820-c5050aee-40bd7b83-a2e186c6-7f61f7da-3894e49c-fc0eeb66-9b500fe2/0.png" } ], "size": "202472" } ], "result": true } ``` ## Cancel Task - Make HTTP Post Request (For tasks on queue) ```bash curl -X POST "https://api.wiro.ai/v1/Task/Cancel" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "taskid": "634574" }'; ``` ## Cancel Task - Response ```json { "errors": [], "tasklist": [ { "id": "634574", "uuid": "15bce51f-442f-4f44-a71d-13c6374a62bd", "name": "", "socketaccesstoken": "ZpYote30on42O4jjHXNiKmrWAZqbRE", "parameters": { "inputImage": "https://api.wiro.ai/v1/File/mCmUXgZLG1FNjjjwmbtPFr2LVJA112/inputImage-6060136.png" }, "debugoutput": "", "debugerror": "", "starttime": "1734513809", "endtime": "1734513813", "elapsedseconds": "6.0000", "status": "task_cancel", "cps": "0.000585000000", "totalcost": "0.003510000000", "guestid": null, "projectid": "699", "modelid": "598", "description": "", "basemodelid": "0", "runtype": "model", "modelfolderid": "", "modelfileid": "", "callbackurl": "", "marketplaceid": null, "createtime": "1734513807", "canceltime": "0", "assigntime": "1734513807", "accepttime": "1734513807", "preprocessstarttime": "1734513807", "preprocessendtime": "1734513807", "postprocessstarttime": "1734513813", "postprocessendtime": "1734513814", "pexit": "0", "categories": "["tool","image-to-image","quick-showcase","compare-landscape"]", "outputs": [ { "id": "6bc392c93856dfce3a7d1b4261e15af3", "name": "0.png", "contenttype": "image/png", "parentid": "6c1833f39da71e6175bf292b18779baf", "uuid": "15bce51f-442f-4f44-a71d-13c6374a62bd", "size": "202472", "addedtime": "1734513812", "modifiedtime": "1734513812", "accesskey": "dFKlMApaSgMeHKsJyaDeKrefcHahUK", "foldercount": "0", "filecount": "0", "ispublic": 0, "expiretime": null, "url": "https://cdn1.wiro.ai/6a6af820-c5050aee-40bd7b83-a2e186c6-7f61f7da-3894e49c-fc0eeb66-9b500fe2/0.png" } ], "size": "202472" } ], "result": true } ``` ## Task Status Information This section defines the possible task status values returned by the API when polling for task completion. ### Completed Task Statuses (Polling can stop) These indicate that the task has reached a terminal state — either success or failure. Once any of these is received, polling should stop. - task_postprocess_end : Task completed successfully and post-processing is done. - task_cancel : Task was cancelled by the user or system. ### Running Task Statuses (Continue polling) These statuses indicate that the task is still in progress. Polling should continue if one of these is returned. - task_queue : Task is waiting in the queue. - task_accept : Task has been accepted for processing. - task_assign : Task is being assigned to a worker. - task_preprocess_start : Preprocessing is starting. - task_preprocess_end : Preprocessing is complete. - task_start : Task execution has started. - task_output : Output is being generated.