## Basic tool info Model name: wiro/Tiktok Trend Effects Model description: Transform images into trending TikTok effects with customizable styles and durations. Apply various creative filters to create engaging video content. Model cover: https://cdn.wiro.ai/uploads/models/wiro-tiktok-trend-effects-cover.mp4 Model categories: - tool - use-agent - wiroEntertainment - fast-inference - image-to-video - wiro-app - partner - persistent - nogpu-persistent Run Task Endpoint (POST): https://api.wiro.ai/v1/Run/wiro/tiktok-trend-effects Get Task Detail Endpoint (POST): https://api.wiro.ai/v1/Task/Detail ## Model Inputs: - name: inputImage label: Input Image help: Required: 1–2 images depending on selected effect — see scenario note type: combinefileinput default: wiro-effects-input.png - name: effectType label: Effect Type help: Required type: selectwithcover default: tiktok+trends-fridge+whipped+cream options: - value: "tiktok+trends-k+pop+concert" label: KPop Concert cover: tiktoktrends-k-pop-concert.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-back+view+latex" label: Back View Latex cover: tiktoktrends-back-view-latex.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-bodega+fur+editorial" label: Bodega Fur Editorial cover: tiktoktrends-bodega-fur-editorial.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-close+up+latex+cat" label: Close Up Latex Cat cover: tiktoktrends-close-up-latex-cat.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-crawling+latex+cat" label: Crawling Latex Cat cover: tiktoktrends-crawling-latex-cat.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-crossed+latex+cat" label: Crossed Latex Cat cover: tiktoktrends-crossed-latex-cat.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-dune+gaze" label: Dune Gaze cover: tiktoktrends-dune-gaze.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-dune+oracle" label: Dune Oracle cover: tiktoktrends-dune-oracle.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-dune+storm" label: Dune Storm cover: tiktoktrends-dune-storm.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-dune+watch" label: Dune Watch cover: tiktoktrends-dune-watch.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-fridge+balletcore+clean" label: Fridge Balletcore Clean cover: tiktoktrends-fridge-balletcore-clean.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-fridge+pov+reach" label: Fridge Pov Reach cover: tiktoktrends-fridge-pov-reach.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-fridge+snack+moment" label: Fridge Snack Moment cover: tiktoktrends-fridge-snack-moment.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-fridge+whipped+cream" label: Fridge Whipped Cream cover: tiktoktrends-fridge-whipped-cream.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-golden+steam" label: Golden Steam cover: tiktoktrends-golden-steam.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-happy+icon+selfie" label: Happy Icon Selfie cover: tiktoktrends-happy-icon-selfie.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-interview" label: Interview cover: tiktoktrends-interview.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-joyful+pop+selfie" label: Joyful Pop Selfie cover: tiktoktrends-joyful-pop-selfie.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-kneeling+latex+cat" label: Kneeling Latex Cat cover: tiktoktrends-kneeling-latex-cat.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-kneeling+latex+studio" label: Kneeling Latex Studio cover: tiktoktrends-kneeling-latex-studio.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-laughing+pop+selfie" label: Laughing Pop Selfie cover: tiktoktrends-laughing-pop-selfie.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-laundromat+doll" label: Laundromat Doll cover: tiktoktrends-laundromat-doll.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-pop+icon+selfie" label: Pop Icon Selfie cover: tiktoktrends-pop-icon-selfie.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-raised+whip+latex" label: Raised Whip Latex cover: tiktoktrends-raised-whip-latex.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-restroom+editorial" label: Restroom Editorial cover: tiktoktrends-restroom-editorial.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-sauna+gaze" label: Sauna Gaze cover: tiktoktrends-sauna-gaze.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-sauna+glow" label: Sauna Glow cover: tiktoktrends-sauna-glow.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-sauna+pose" label: Sauna Pose cover: tiktoktrends-sauna-pose.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-seated+latex+cat" label: Seated Latex Cat cover: tiktoktrends-seated-latex-cat.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-standing+latex+cat" label: Standing Latex Cat cover: tiktoktrends-standing-latex-cat.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-steam+frame" label: Steam Frame cover: tiktoktrends-steam-frame.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-steam+pose" label: Steam Pose cover: tiktoktrends-steam-pose.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-supermarket+cart+editorial" label: Supermarket Cart Editorial cover: tiktoktrends-supermarket-cart-editorial.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-toothbrush+bathroom" label: Toothbrush Bathroom cover: tiktoktrends-toothbrush-bathroom.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-wet+latex+studio" label: Wet Latex Studio cover: tiktoktrends-wet-latex-studio.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-wide+seated+latex" label: Wide Seated Latex cover: tiktoktrends-wide-seated-latex.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-city+spotlight" label: City Spotlight cover: tiktok-trends-city-spotlight.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-grand+exit" label: Grand Exit cover: tiktok-trends-grand-exit.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-midnight+arrival" label: Midnight Arrival cover: tiktok-trends-midnight-arrival.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-paparazzi" label: Paparazzi cover: tiktok-trends-paparazzi.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-private+departure" label: Private Departure cover: tiktok-trends-private-departure.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "tiktok+trends-signing+moments" label: Signing Moments cover: tiktok-trends-signing-moments.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - name: ratio label: ratio help: Required. Default 9:16 type: select default: 9:16 options: - value: "9:16" label: 9:16 - value: "16:9" label: 16:9 - value: "1:1" label: 1:1 - name: duration label: Duration help: Required. Default 5s type: select default: 5 options: - value: "5" label: 5s - value: "10" label: 10s - value: "15" label: 15s - name: outputType label: Output Type help: type: select default: both options: - value: "both" label: Video & Image - value: "video" label: Only Video - value: "image" label: Only Image ## 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/tiktok-trend-effects" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "inputImage": "wiro-effects-input.png", "effectType": "tiktok+trends-fridge+whipped+cream", "ratio": "9:16", "duration": "5", "outputType": "both", "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.