## Basic tool info Model name: google/nano-banana-pro Model description: Google's Gemini 3 Pro Image Preview, also known as Nano Banana, model for text-to-image and image-to-image generation. Model cover: https://cdn.wiro.ai/uploads/models/google-nano-banana-pro-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-pro Get Task Detail Endpoint (POST): https://api.wiro.ai/v1/Task/Detail ## Model Inputs: - name: inputImage label: Input Image help: Gemini 3 Pro Preview lets you to mix up to 14 reference images. These 14 images can include the following: to 6 images of objects with high-fidelity to include in the final image, to 5 images of humans to maintain character consistency type: combinefileinput default: google-nano-banana-pro-input-1-1.jpg,google-nano-banana-pro-input-1-2.jpg,google-nano-banana-pro-input-1-3.jpg,google-nano-banana-pro-input-1-4.jpg,google-nano-banana-pro-input-1-5.jpg,google-nano-banana-pro-input-1-6.jpg - name: prompt label: prompt help: The prompt to generate the image. type: textarea default: Create a realistic group photo using the people from the input images. Place all of them standing together in an open grassy field during daylight. Ensure natural proportions, accurate facial features, and consistent styling. The man should be wearing a well-fitted three-piece suit, and the women should be wearing elegant, colorful dresses. Use soft natural lighting, gentle shadows, and a balanced composition. Maintain photorealism and keep all poses natural and relaxed. - 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 (1K)1024x1024 (2K)2048x2048 (4K)4096x4096 - value: "2:3" label: 2:3 (1K)848x1264 (2K)1696x2528 (4K)3392x5056 - value: "3:2" label: 3:2 (1K)1264x848 (2K)2528x1696 (4K)5056x3392 - value: "3:4" label: 3:4 (1K)896x1200 (2K)1792x2400 (4K)3584x4800 - value: "4:3" label: 4:3 (1K)1200x896 (2K)2400x1792 (4K)4800x3584 - value: "4:5" label: 4:5 (1K)928x1152 (2K)1856x2304 (4K)3712x4608 - value: "5:4" label: 5:4 (1K)1152x928 (2K)2304x1856 (4K)4608x3712 - value: "9:16" label: 9:16 (1K)768x1376 (2K)1536x2752 (4K)3072x5504 - value: "16:9" label: 16:9 (1K)1376x768 (2K)2752x1536 (4K)5504x3072 - value: "21:9" label: 21:9 (1K)1584x672 (2K)3168x1344 (4K)6336x2688 - name: resolution label: Resolution (K) help: Default is 1K type: select default: 1K options: - 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 ## 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}" | awk '{print $NF}')"; ``` ## Run Command - Make HTTP Post Request ```bash curl -X POST "https://api.wiro.ai/v1/Run/google/nano-banana-pro" -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-pro-input-1-1.jpg", "google-nano-banana-pro-input-1-2.jpg", "google-nano-banana-pro-input-1-3.jpg", "google-nano-banana-pro-input-1-4.jpg", "google-nano-banana-pro-input-1-5.jpg", "google-nano-banana-pro-input-1-6.jpg" ], "prompt": "Create a realistic group photo using the people from the input images. Place all of them standing together in an open grassy field during daylight. Ensure natural proportions, accurate facial features, and consistent styling. The man should be wearing a well-fitted three-piece suit, and the women should be wearing elegant, colorful dresses. Use soft natural lighting, gentle shadows, and a balanced composition. Maintain photorealism and keep all poses natural and relaxed.", "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", "totalcost": "0.003510000000", "chargedcost": "0.002808000000", "discountamount": "0.000702000000", "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 } ``` totalcost is the list price. chargedcost is the amount actually billed after any discount (a store fee is included on store runs); discountamount is the discount. chargedcost is null until the charge is recorded (shortly after task_postprocess_end) and "0" for a failed or cancelled task. ## 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.