## Basic tool info Model name: openai/gpt image 2.6 sunburst Model description: OpenAI’s GPT Image 2.6 Sunburst generates detailed images and precise edits from a written description plus up to 16 reference images, with size and quality controls. Model cover: https://cdn.wiro.ai/uploads/models/openai-gpt-image-2-6-sunburst-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-6-sunburst 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: https://cdn.wiro.ai/uploads/sampleinputs/openai-gpt-image-2-6-sunburst-sampleinput-1.webp - name: prompt label: Prompt help: Required. Text description of the desired image or image edit. Maximum 32,000 characters. type: textarea default: Turn this photo into a 1950s vintage travel poster of the same cove, in flat screen-printed colors with soft grain. At the top, large bold retro lettering reads "ISLA VERDE". Below it the tagline "Where the sea turns to emerald". At the bottom a small banner reads "Fly Sunline Airways" and tiny print reads "Daily flights from Lisbon and Madrid". Keep the palm trees, the bay, the hills and the sailboat in the same places. - 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 - value: "xhigh" label: Extra High - value: "max" label: Max - name: samples label: Number of Images help: Required. Number of images to generate (1-10). type: number default: 1 - name: inputImageMask label: Mask Image (Edit) help: Optional. Requires an input image. Mask image that defines the areas to edit. type: combinefileinput default: - name: inputImageMarkup label: Markup Image (Edit) help: Optional. Requires an input image. A transparent overlay with marks (a circle, an arrow) showing where the prompt's change should go. type: combinefileinput default: - name: complexity label: Complexity help: Optional. Default high. How much the model plans before rendering: lower suits focused edits, higher helps dense text and complex layouts. It does not change the price. type: select default: high options: - value: "low" label: Low - value: "medium" label: Medium - value: "high" label: High - name: background label: Background help: Optional. Default auto. Background setting. Transparent needs png or webp output; with jpeg it switches to png. type: select default: auto options: - value: "auto" label: Auto - value: "transparent" label: Transparent - value: "opaque" label: Opaque - name: outputFormat label: Output Format help: Optional. Default jpeg. Output image format. type: select default: jpeg options: - value: "png" label: png - value: "jpeg" label: jpeg - value: "webp" label: webp - name: outputCompression label: Output Compression help: Optional. Default 100. Compression level (0-100) for jpeg or webp output only. type: number default: 100 - name: moderation label: Moderation Level help: Optional. Default low. Content moderation level. type: select default: low options: - value: "auto" label: Auto - value: "low" label: Low ## Model Parameter Inspires: - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/openai-gpt-image-2-6-sunburst-sampleinput-1.webp - prompt: Turn this photo into a 1950s vintage travel poster of the same cove, in flat screen-printed colors with soft grain. At the top, large bold retro lettering reads "ISLA VERDE". Below it the tagline "Where the sea turns to emerald". At the bottom a small banner reads "Fly Sunline Airways" and tiny print reads "Daily flights from Lisbon and Madrid". Keep the palm trees, the bay, the hills and the sailboat in the same places. - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/openai-gpt-image-2-6-sunburst-sampleinput-2.webp - prompt: Turn this lighthouse into a detailed technical cutaway illustration of the same lighthouse on the same cliff: the tower sliced open to show every level from top to bottom, with clean thin leader lines and neat labels reading "Lamp Room", "Gallery", "Watch Room", "Keeper Quarters", "Storage", "Spiral Stairs" and "Foundation". Keep the cottage, the cliff and the sea, drawn in a crisp illustrated style with soft colors. - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/openai-gpt-image-2-6-sunburst-sampleinput-3.webp - prompt: Replace the red apples in the middle crate, under the "Mele" sign, with fresh oranges, and change that crate price chalkboard to read "Arance € 2,50/kg". Keep every other crate, the fruit in them, the awning and the street exactly the same. - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/openai-gpt-image-2-6-sunburst-sampleinput-4.webp - prompt: Add a detailed cream paper label wrapped around the middle of this honey jar, following its curve. The label has a small hand-drawn bee illustration and reads "Wildflower Honey" in an elegant serif, with "350 g" and "Est. 1987" in small print below. Keep the jar, the honey, the lid, the dipper, the shelf and the lighting exactly 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/openai/gpt-image-2-6-sunburst" \ -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/openai-gpt-image-2-6-sunburst-sampleinput-1.webp" ], "prompt": "Turn this photo into a 1950s vintage travel poster of the same cove, in flat screen-printed colors with soft grain. At the top, large bold retro lettering reads \"ISLA VERDE\". Below it the tagline \"Where the sea turns to emerald\". At the bottom a small banner reads \"Fly Sunline Airways\" and tiny print reads \"Daily flights from Lisbon and Madrid\". Keep the palm trees, the bay, the hills and the sailboat in the same places.", "resolution": "1k", "ratio": "1:1", "quality": "low", "samples": 1, "inputImageMask": "", "inputImageMarkup": "", "complexity": "high", "background": "auto", "outputFormat": "jpeg", "outputCompression": 100, "moderation": "low", "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.