Skip to main content

Why is my task stuck in the queue, and how do I cancel it?

What Queued means, why a task can wait, how to cancel or kill a task on the website or with the API, and when you're charged.

Every run creates a task that starts in the queue. You can stop a Queued or Running task yourself, and time in the queue is never charged.

Full reference: Task Lifecycle in our docs lists every step, and our guide to task statuses explains each label.

What "Queued" means

  • Queued covers two API statuses: task_queue (waiting for a server) and task_accept (a server has just picked it up). Then the task shows Running.

  • For models priced per second, billing starts when a server picks the task up. Preparing inputs and loading the model count; queue time doesn't. See how model pricing works.

Why a task can wait

  • No server is free yet. Wiro doesn't show a queue position or wait estimate.

  • It was requeued. If a task's server restarts before the task has fully finished, Wiro can queue it again.

Your concurrency limit doesn't make tasks wait. With a balance of $250 or less, a run over the limit is rejected at once with code 96 (You have reached your concurrent task limit...) and no task is created. Queued tasks count toward the limit until they finish or are cancelled. Above $250 there's no limit. See How many tasks can I run at the same time?

Stop a task on the website

  1. Open Task History (pick Runnings for unfinished tasks), a model page's History tab, or the Activity panel (the lightning icon, top right).

  2. On a Queued or Running task, click the x icon (tooltip Kill Task).

  3. In the Kill Task window, click Kill.

There's no separate cancel button: Kill Task cancels a task still waiting in the queue. Either way you see "Task is successfully killed." and the task shows Cancelled.

Stop a task with the API

  • Task/Cancel stops a task still waiting in the queue. Try it first. Send taskid.

  • Task/Kill is for a task a server has picked up or that's running. Send taskid or socketaccesstoken.

curl -X POST "https://api.wiro.ai/v1/Task/Cancel" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"taskid": "YOUR_TASK_ID"}'

For Kill, use /v1/Task/Kill with the same body. Signature Based projects also send x-nonce and x-signature (see Authentication). Both return "result": true on success. Common errors:

  • Task is not in a cancellable state. (code 1): a server has already picked the task up (even if it still shows Queued), or the task has finished. If it's still running, use Task/Kill.

  • Task could not be killed: Process ended (code 1): the task has already finished.

  • There is no task yet. or You don't have any permission for this action.: the task ID is wrong, or the task isn't yours or your team's.

Details: Task Cancel and Task Kill in our docs, and what your API error means.

Am I charged for a cancelled or killed task?

  • 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, the run is charged, and the task can show Cancelled with a cost.

  • Realtime voice sessions: turns charged during the session stay charged.

For Wiro Studio chat and the full rules, see Why does my task say "No output generated"?

Why does the API feel slow?

A result takes the queue wait plus the model's run time. The Run request doesn't wait: it returns a taskid and socketaccesstoken as soon as the task is created. Then poll Task/Detail (every 3 seconds at first, less often for long tasks), follow the task over a WebSocket, or add a webhook callback (callbackUrl) and Wiro POSTs the result when the task completes. See How do I make my first API request?

When to contact support

If a task stays Queued much longer than usual, or shows Cancelled although no one stopped it, send us the task ID (the number after # in Task History) and the model name through the chat on wiro.ai or at [email protected]. API users can send the task token instead. If it finished without a result, see How do I find out why my task failed or has no output?

Did this answer your question?