Every run on Wiro creates a task. It ends either finished, successfully or not, or cancelled. No output generated means there's no file or text to show for the task. Usually the model failed, and failed runs aren't charged, but a few tasks without output are (see below). To check, look at the task's Cost on the Task History page.
Full reference: the Tasks page of our docs lists every status (see Task Statuses) and shows how to check a result through the API (see Determining Success or Failure).
Why a task shows "No output generated"
The label means there's no file or text to show. Common causes:
It hasn't finished yet. A Queued or Running task can show this until results arrive, and a task that has just turned Completed may still be uploading its files for a few seconds. Refresh before judging it.
A content filter blocked it. The model or its provider refused the prompt, an input image or the result. Models labeled "Uncensored" still have safety checks, and Wiro adds its own check for content involving minors. Some video models also fail when music they generate trips a copyright check.
The model or its provider had an error, such as a temporary outage. Trying again later often works.
An input couldn't be used, for example a file URL that Wiro couldn't download.
You cancelled or killed it before it produced anything.
You deleted its files. See How do I delete a task's input and output files?
Rarely, the model succeeded but wrote no file. That still counts as a successful, charged run.
Am I charged for failed, cancelled or killed tasks?
Nothing is taken from your balance when you start a run. Wiro charges a task after it finishes, and only if the model finished without an error (in the API, pexit is "0").
The model ended with an error: not charged. The task's cost is set to $0.
Cancelled while queued: not charged. The model never ran.
Killed while running: normally not charged, because stopping the model counts as an error. If the model had already succeeded when the kill arrived (for example while its files were uploading), the run is charged, and the task can show Cancelled with a cost.
Succeeded without a file: charged. For models priced per output, that's the base price once.
Files deleted later: the original charge stays.
Realtime voice sessions: each turn is charged during the session, and those charges stay if the session is killed or ends with an error, even though the task's Cost can then show $0.000.
Wiro Studio: a failed generation isn't charged, but the Studio chat itself uses a small amount of credit, even when a generation fails.
The Transactions page of your dashboard lists every credit movement, including realtime turns and Studio chat. The rules are also under Billing & Cost in our Tasks docs. If you think a failed task was charged, send us the task ID and we'll check it.
Does Wiro retry a failed task?
No. When a model fails, the task ends as Failed, usually without output, and isn't run again. Two things can look like a retry:
Some models make several attempts inside one task, for example after a connection error or a blocked first attempt, and log lines like "Attempt 1/3" in the debug output. If every attempt fails, the task ends without output. Safety checks can also stop these extra attempts, so a request that used to work may now end with No output generated.
If the server running a task restarts before the task has fully finished, Wiro can put it back in the queue. This can also happen to a task whose status is
task_error, because that status isn't final. A fully finished or cancelled task is never re-run.
To try again, open the task in Task History and click Load parameters for re-run (the circular arrow icon, shown once a task has run). The model page opens with the same settings, and you start a new run from there. If the button isn't there, start a new run from the model page. A re-run is a new task and is charged if it succeeds. If a filter blocked the first run, change the prompt or inputs first.
What each status means
Task History, the dashboard and model pages show five labels, listed here with the API status names. Wiro Studio shows the raw status names instead, in red when a run failed or was cancelled.
Queued (
task_queue,task_accept): waiting for a free server, or just picked up by one. Waiting for a server is free.Running (for example
task_assign,task_start,task_output): Wiro prepares the inputs, runs the model and uploads the output files. It also coverstask_error: an error line was reported while the task was running or being prepared. That\'s an in-between status, not a failure, and the task can still finish successfully.Completed (
task_postprocess_endwithpexit"0"): the task finished and the model reported success. A task can also show Completed for a moment (task_end) just before its files are uploaded.Cancelled (
task_cancel): stopped before it finished, usually because you cancelled it in the queue or killed it while it was running.Failed (
task_postprocess_endwith apexitother than"0"): the task finished, but the model reported an error. Failed runs aren't charged.
A task is final once it's Completed or Failed with its files uploaded, or Cancelled. Until then, task_error included, it counts toward your concurrency limit.
How to tell if a task worked
A finished run shows Completed when the model reported success and Failed when it didn't. An error line while the task is still running (task_error) doesn't mean it failed. What decides it is whether the model reported success (in the API, pexit is "0"; any other value means the run failed).
Model page: when a run ends without a result, the output area shows No output generated. Open the task in Task History to see why and what it cost, or click Show Activity Panel (the lightning icon) for your recent tasks.
Task History page: a finished task without outputs shows a crossed-out eye icon with the tooltip No output generated, whether its status says Completed or Failed. A failed task's Cost normally shows $0.000. Click the row to open it: Debug output shows the model's output log, which often says why it failed, and Debug response shows the full task record, including
pexit.Wiro Studio: in the Activity tab, a failed or cancelled run's status is shown in red, and Show debug output says "Task could not be completed. Please try again." Studio doesn't show a failed run's task ID.
What to do next
Wait until the task shows Completed, Failed or Cancelled, then refresh once after a few seconds.
Open the task in Task History (see Where can I find my previous generations?) and read Debug output. It may show why the run failed, for example a content block.
If a filter blocked it, change the prompt or input images, then use Load parameters for re-run.
If it looks like a temporary problem, try again a little later.
If it keeps failing, or you think a failed task was charged, send us the task ID (the number after # in Task History) through the chat on wiro.ai or at [email protected]. API users can send the task token instead. For a Wiro Studio run, tell us the model and roughly when you ran it.
For API users
Call Task/Detail with the task ID or task token. Wait until status is task_postprocess_end or task_cancel, then check pexit and outputs. totalcost is the cost of the run.
curl -X POST "https://api.wiro.ai/v1/Task/Detail" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"taskid": "YOUR_TASK_ID"}'
Replace YOUR_API_KEY with your project's key (see How do I get an API key?). For a Signature-Based project, also send the x-signature and x-nonce headers (see Authentication).
Don't judge a task by task_end, which arrives before the files are uploaded, or by task_error, which doesn't mean the run failed. A live task_error event is usually just a line the model wrote to its error log while it keeps running. A task_error status in Task/Detail isn't final either: it's set when something went wrong before the model started, and Wiro can put the task back in the queue, where it can still finish successfully, so keep waiting as above. If the status stays task_error and doesn't change, stop the task with Task/Kill. If a non-streaming synchronous Run call times out after 40 minutes (HTTP 504), only the wait has ended: the task keeps running, so check it with Task/Detail before running it again.
