## Basic tool info Tool name: wiro/Face-Swap Tool description: Industry leading face manipulation. Tool cover: https://cdn.wiro.ai/uploads/models/wiro-Face-Swap-cover.jpg Tool categories: - tool - image-to-image - quick-showcase - swap - persistent - face-swap Tool tags: - restoration Run Task Endpoint (POST): https://api.wiro.ai/v1/Run/wiro/Face-Swap Get Task Detail Endpoint (POST): https://api.wiro.ai/v1/Task/Detail ## Tool Inputs: - name: inputImageUrl label: First users face image url help: first-users-face-image-url-help type: text default: - name: inputImage2Url label: Second users face image (optional) url help: second-users-face-image-url-help type: text default: - name: inputImage3Url label: Background image (optional) url help: background-image-url-help type: text default: - name: swapPosition label: Swap Position (optional) help: Used for: -Specific (left or right) Swap type: select default: None options: - value: "None" label: None - value: "right" label: right - value: "left" label: left - name: prompt label: prompt help: Used for: -Single Generation Swap -Multi Generation Swap type: textarea default: in a futuristic city plaza at night, surrounded by glowing buildings, digital billboards, and chrome accents, captured in a full body shot - name: width label: width help: width-help type: number default: 768 - name: height label: height help: height-help type: number default: 768 - name: outputStyle label: output-style help: swap-position-help type: select default: hyperRealistic options: - value: "None" label: None - value: "hyperRealistic" label: hyperRealistic - value: "realistic" label: realistic - value: "stylistic" label: stylistic - value: "cyberpunk" label: cyberpunk - value: "retro80s" label: retro80s - value: "90sTV" label: 90sTV - value: "vintageFilm" label: vintageFilm - value: "glamour" label: glamour - value: "urbanRealism" label: urbanRealism - value: "cinematicDark" label: cinematicDark - value: "dslrStudioPortrait" label: dslrStudioPortrait - value: "flatColorBackdrop" label: flatColorBackdrop - value: "gradientNeonBackdrop" label: gradientNeonBackdrop - value: "surrealBackdrop" label: surrealBackdrop - value: "natureContrast" label: natureContrast - value: "paperCutBackground" label: paperCutBackground - value: "vaporwaveBackdrop" label: vaporwaveBackdrop - value: "monochromeScene" label: monochromeScene - value: "editorialSplash" label: editorialSplash - value: "synthwaveBackdrop" label: synthwaveBackdrop - value: "sunsetGlow" label: sunsetGlow - value: "desertFuturism" label: desertFuturism - value: "minimalBeigeStudio" label: minimalBeigeStudio - value: "hologramBackdrop" label: hologramBackdrop - value: "chromeStudio" label: chromeStudio - value: "colorGelLighting" label: colorGelLighting - value: "neonpunk" label: neonpunk - value: "cinematic" label: cinematic - value: "photographic" label: photographic ## Tool Parameter Inspires: - prompt: in a futuristic city plaza at night, surrounded by glowing buildings, digital billboards, and chrome accents, captured in a full body shot - prompt: at a futuristic art gallery opening, surrounded by digital sculptures, glowing walls, and minimalist decor, captured in a full body shot - prompt: inside a futuristic indoor botanical garden, surrounded by transparent walls, exotic plants, and soft daylight filtering through a glass ceiling, captured in a full body shot - prompt: standing in a spacious open-air plaza with smooth white stone, geometric water features, and modern art sculptures under bright midday sun, captured in a full body shot - prompt: crossing a sleek urban crosswalk in a futuristic city, surrounded by glass towers and interactive billboards, captured in a full body shot - prompt: on a glass skybridge between futuristic buildings, with a panoramic city view, surrounded by clean architectural lines and bright morning light, captured in a full body shot ## 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/wiro/Face-Swap" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "inputImageUrl": "face_swap_input_image_1_4.jpg", "inputImage2Url": "face_swap_input_image_2_4.jpg", "inputImage3Url": "", "swapPosition": "None", "prompt": "in a futuristic city plaza at night, surrounded by glowing buildings, digital billboards, and chrome accents, captured in a full body shot", "width": 768, "height": 768, "outputStyle": "hyperRealistic", "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 ```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 } ``` ## 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.