## Basic tool info Model name: MiniMax/h3 image advanced Model description: MiniMax H3 Image Advanced generates images or edits and combines up to 16 input images. Set 1K to 4K or an exact width and height, and turn prompt expansion on or off. Model cover: https://cdn.wiro.ai/uploads/models/minimax-h3-image-advanced-cover.webp Model categories: - tool - use-agent - nogpu-pipeline - partner - quick-showcase - text-to-image - image-to-image Run Task Endpoint (POST): https://api.wiro.ai/v1/Run/minimax/h3-image-advanced Get Task Detail Endpoint (POST): https://api.wiro.ai/v1/Task/Detail ## Model Inputs: - name: inputImage label: Input Images help: Optional. Up to 16 images to edit or combine (jpeg, png or webp), each 128 to 8192 pixels per side, sent at their own size. Refer to them in the prompt as Image 1, Image 2 and so on. Without an image, the model generates from the prompt. type: combinefileinput default: https://cdn.wiro.ai/uploads/sampleinputs/minimax-h3-image-advanced-sampleinput-1.webp - name: prompt label: Prompt help: Required. Up to 4096 characters; a longer prompt is cut. type: textarea default: Change all the flowers in the bouquet and in the shop to white lilies. Keep the florist and the shop the same. - name: aspectRatio label: Aspect Ratio help: Optional. Default auto. With an input image, auto keeps its ratio; without one, auto uses 16:9. Not used when width and height are set. type: select default: auto options: - value: "auto" label: auto - value: "1:1" label: 1:1 - value: "16:9" label: 16:9 - value: "9:16" label: 9:16 - value: "4:3" label: 4:3 - value: "3:4" label: 3:4 - value: "3:2" label: 3:2 - value: "2:3" label: 2:3 - value: "5:4" label: 5:4 - value: "4:5" label: 4:5 - value: "21:9" label: 21:9 - value: "9:21" label: 9:21 - name: resolution label: Resolution help: Optional. Default 1K. Output size: about 1024x1024, 2048x2048 or 4096x4096 pixels, shaped to the aspect ratio. Not used when width and height are set. type: select default: 1K options: - value: "1K" label: 1K - value: "2K" label: 2K - value: "4K" label: 4K - name: width label: Width help: Optional. Custom output width in pixels, used together with height instead of aspect ratio and resolution. Width x height must be between 655,360 and 20,000,000 pixels, with a ratio between 1:3 and 3:1. type: number default: - name: height label: Height help: Optional. Custom output height in pixels, used together with width instead of aspect ratio and resolution. Width x height must be between 655,360 and 20,000,000 pixels, with a ratio between 1:3 and 3:1. type: number default: - name: samples label: Samples help: Optional. Default 1. Number of images to generate from the same prompt. type: select default: 1 options: - value: "1" label: 1 - value: "2" label: 2 - value: "3" label: 3 - value: "4" label: 4 - value: "5" label: 5 - value: "6" label: 6 - value: "7" label: 7 - value: "8" label: 8 - value: "9" label: 9 - value: "10" label: 10 - name: outputFormat label: Output Format help: Optional. Default jpeg. type: select default: jpeg options: - value: "jpeg" label: jpeg - value: "png" label: png - value: "webp" label: webp - name: promptExpansion label: Prompt Expansion help: Optional. Default true. Rewrites the prompt into a detailed description before generating; those tokens are billed as input. Edits with an input image always use it. Turning it off needs width and height, or an aspect ratio other than auto. type: select default: true options: - value: "true" label: true - value: "false" label: false ## Model Parameter Inspires: - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/minimax-h3-image-advanced-sampleinput-1.webp - prompt: Change all the flowers in the bouquet and in the shop to white lilies. Keep the florist and the shop the same. - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/minimax-h3-image-advanced-sampleinput-2.webp - prompt: Put a large wave curling in the sea behind her. Keep the woman, her surfboard and the beach the same. - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/minimax-h3-image-advanced-sampleinput-3.webp - prompt: Turn the dish the chef is plating into an elaborate sushi platter. Keep the chef and the kitchen the same. - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/minimax-h3-image-advanced-sampleinput-4.webp - prompt: Turn the red rock wall into a frozen ice wall covered in blue ice, with snow on the ledges below. Keep the climber and the composition the same. ## Integration Header Prepare ```bash # Sign up Wiro dashboard and create project export YOUR_API_KEY="YOUR_WIRO_API_KEY"; 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/minimax/h3-image-advanced" \ -H "Content-Type: application/json" \ -H "x-api-key: ${YOUR_API_KEY}" \ -H "x-nonce: ${NONCE}" \ -H "x-signature: ${SIGNATURE}" \ --data-binary @- <<'JSON' { "inputImage": [ "https://cdn.wiro.ai/uploads/sampleinputs/minimax-h3-image-advanced-sampleinput-1.webp" ], "prompt": "Change all the flowers in the bouquet and in the shop to white lilies. Keep the florist and the shop the same.", "aspectRatio": "auto", "resolution": "1K", "width": null, "height": null, "samples": "1", "outputFormat": "jpeg", "promptExpansion": "true", "callbackUrl": "You can provide a callback URL; Wiro will send a POST request to it when the task is completed." } JSON ``` ## 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: application/json" \ -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: application/json" \ -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: application/json" \ -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: application/json" \ -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: application/json" \ -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.