## Basic tool info Model name: openai/gpt-image-2 Model description: Generate or edit images with GPT Image 2 from OpenAI. It delivers strong instruction following, sharp text rendering, and flexible sizing up to 4K. Model cover: https://cdn.wiro.ai/uploads/models/openai-gpt-image-2-cover.webp Model categories: - tool - partner - openai - text-to-image - image-to-image - image-editing - nogpu-pipeline Run Task Endpoint (POST): https://api.wiro.ai/v1/Run/openai/gpt-image-2 Get Task Detail Endpoint (POST): https://api.wiro.ai/v1/Task/Detail ## Model Inputs: - name: inputImage label: Input Images help: Optional. Input images to edit, up to 16. type: combinefileinput default: openai-gpt-image-2-input-1.jpg - name: prompt label: Prompt help: Required. Text description of the desired image or image edit. Maximum 32,000 characters. type: textarea default: A hyper-detailed, high-resolution photographic edit based on image. The clear rocks glass, the metallic spoon, and the rich, dark mahogany wooden table with its complex grain and precise geometric shafts of warm sunlight must all remain in their exact positions and forms. Inside the glass, the simple iced coffee is replaced by a perfectly layered Café Bombón with complex, high-clarity details. A thick, smooth layer of sweetened condensed milk forms the base, topped by a precise layer of dark, rich espresso, and finally an elegant cap of airy, micro-foamed milk. The simple ice cubes are replaced by large, geometrically precise, slow-melting artisan ice spheres showing internal crystal structures and fractures, all glistening with heavy, detailed condensation on the glass. The metallic spoon is highly polished to a mirror-like finish, reflecting the layers of the drink and the wood. The dust motes floating in the sunbeams are rendered with extreme fidelity as delicate, golden, complex particles. The entire scene is polished to perfection, with the contrast between foam, liquid, glass, and wood grain maximized. The lighting is intensified, making the glass and its contents glow from within, all while maintaining the exact existing shadow patterns. - name: inputImageMask label: Mask Image (Edit) help: Optional. Requires input image(1). Mask image to define specific areas to edit. type: combinefileinput default: - name: resolution label: Resolution help: Required. Output resolution tier. type: select default: 1k options: - value: "1k" label: 1K (~1 MP) - value: "2k" label: 2K (~2-4 MP, experimental) - value: "4k" label: 4K (~8 MP, experimental) - name: ratio label: Ratio help: Required. Aspect ratio of the output image. type: select default: 1:1 options: - value: "1:1" label: 1:1 (square) — 1024x1024(1k) / 2048x2048(2k) / 2880x2880(4k) - value: "3:2" label: 3:2 (landscape) — 1536x1024(1k) / 2400x1600(2k) / 3456x2304(4k) - value: "2:3" label: 2:3 (portrait) — 1024x1536(1k) / 1600x2400(2k) / 2304x3456(4k) - value: "4:3" label: 4:3 (landscape) — 1280x960(1k) / 2048x1536(2k) / 3200x2400(4k) - value: "3:4" label: 3:4 (portrait) — 960x1280(1k) / 1536x2048(2k) / 2400x3200(4k) - value: "16:9" label: 16:9 (landscape) — 1280x720(1k) / 2048x1152(2k) / 3840x2160(4k) - value: "9:16" label: 9:16 (portrait) — 720x1280(1k) / 1152x2048(2k) / 2160x3840(4k) - name: quality label: Quality help: Required. Output image quality. type: select default: low options: - value: "low" label: Low - value: "medium" label: Medium - value: "high" label: High - name: background label: Background help: Optional. Background setting. type: select default: auto options: - value: "auto" label: Auto - value: "opaque" label: Opaque - name: outputFormat label: Output Format help: Optional. Output image format. Defaults to png. type: select default: png options: - value: "png" label: PNG - value: "jpeg" label: JPEG - value: "webp" label: WEBP - name: outputCompression label: Output Compression help: Optional. Compression level (0-100) for jpeg or webp output only. Defaults to 100. type: number default: 100 - name: samples label: Number of Images help: Required. Number of images to generate (1-10). type: number default: 1 - name: moderation label: Moderation Level help: Optional. Content moderation level. type: select default: low options: - value: "auto" label: Auto - value: "low" label: Low ## 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/openai/gpt-image-2" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "inputImage": "openai-gpt-image-2-input-1.jpg", "prompt": "A hyper-detailed, high-resolution photographic edit based on image. The clear rocks glass, the metallic spoon, and the rich, dark mahogany wooden table with its complex grain and precise geometric shafts of warm sunlight must all remain in their exact positions and forms. Inside the glass, the simple iced coffee is replaced by a perfectly layered Café Bombón with complex, high-clarity details. A thick, smooth layer of sweetened condensed milk forms the base, topped by a precise layer of dark, rich espresso, and finally an elegant cap of airy, micro-foamed milk. The simple ice cubes are replaced by large, geometrically precise, slow-melting artisan ice spheres showing internal crystal structures and fractures, all glistening with heavy, detailed condensation on the glass. The metallic spoon is highly polished to a mirror-like finish, reflecting the layers of the drink and the wood. The dust motes floating in the sunbeams are rendered with extreme fidelity as delicate, golden, complex particles. The entire scene is polished to perfection, with the contrast between foam, liquid, glass, and wood grain maximized. The lighting is intensified, making the glass and its contents glow from within, all while maintaining the exact existing shadow patterns.", "inputImageMask": "", "resolution": "1k", "ratio": "1:1", "quality": "low", "background": "auto", "outputFormat": "png", "outputCompression": 100, "samples": 1, "moderation": "low", "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.