Ignitify.dev
Errors and exit codes
Reference

Errors

Every failure prints an Error: line on stderr and exits with code 1 (130 if you press Ctrl+C during a wait). Find your line below. Each entry gives what it means and one command to fix it.

Troubleshoot covers exit codes and the trace id.

Three gates refuse a request

A refusal comes from one of three gates, and each has a different fix. A plan limit asks for a wait or a bigger plan. A capacity refusal asks for a short wait. A capability refusal asks you to change what you declare, or your plan.

Plan limits

A monthly limit is reached

terminal
$ ignitify task:run fetch✗ Run refused — a monthly limit is reached (monthly-compute-quota).  Monthly compute limit reached: 20.0 h of 20.0 h used (100%). It resets at 2026-11-01T00:00:00.000Z. For details, run: ignitify usageserver trace id: 019fdecb-1e57-7c08-9a46-d3b2f7e0a619

The allowance of your plan for the month is used up (the Free plan has one for compute), and it resets at the time in the message. Fix: ignitify usage shows what you used.

You run too fast

terminal
$ ignitify task:run fetchError: API 429: {"error":"run rate quota exceeded (per minute) (tier starter v1: 60)","reason":"run-rate-quota","boundBy":"tier-entitlement","limit":60,"observed":60,"window":"minute"}server trace id: 019fdece-4a18-7e3c-b5d2-8c1f6a0e9d73

Your plan allows a set number of runs in the window, and you used them: limit is that number and observed is how many runs you had already started in the window. Fix: ignitify whoami shows the limit; run again after the window.

You send requests too fast

terminal
$ ignitify run:listError: API 429: {"error":"API request rate limit exceeded"}server trace id: 019fdece-9b27-7a41-8d05-3e6c2f1a7b58

Your plan allows a set number of API requests each second, and a script sent more. This is not the run limit above. Fix: slow the script, then send the request again.

A bidirectional task already has a VM

terminal
$ ignitify task:run listen --on-busy reject✗ Run refused — this bidirectional deployment already has a live VM.  Concurrent VMs for bidirectional-network tasks are not supported  (one VM at a time).  Retry when the live VM finishes, or omit --on-busy=reject to queue instead.server trace id: 019fdecc-83a2-7d15-b0e9-4f6c1a2d7e30

A task that takes inbound traffic runs one VM at a time. Fix: ignitify task:run listen --on-busy queue waits for the VM.

Capacity

A capacity refusal means no host can fit your VM right now. It is not about your plan, and it never names a tier. Wait a short time and run again.

Capability

Your plan does not include it

terminal
$ ignitify hook:create dep_Hn4TqXw8Zc2P --task-name image-resizeError: API 403: {"error":"webhooks are not included in your current tier (capability 'may_use_webhooks'; deployment 019f3c24-1b05-7c9a-8e21-4d6f0b93a7e2)"}server trace id: 019fdecd-5d09-7b64-a8c1-2e9f0b3d6a47

Your plan does not allow this kind of work. Fix: ignitify whoami lists what your plan allows in its may_… lines.

A declaration is refused

terminal
$ ignitify task:validate fetchError: task.yaml: unknown run.preset "std.mikro" (valid: std.micro, std.small, std.medium, std.large, std.xlarge, mem.large, mem.xlarge, cpu.large). An unrecognised preset would silently fall back to the platform default, giving you a different instance class than you declared.

The platform refuses a value it cannot honour, and the line names the field. Fix: correct the field, then run ignitify task:validate fetch again. Refused values lists every case.

Before the request is sent

Not signed in

terminal
$ ignitify whoamiError: Not signed in. Run 'ignitify login', or set the IGNITIFY_API_KEY environment variable.

The CLI has no key. Fix: run ignitify login (see Install and sign in). A key that is wrong or revoked answers Error: API 401.

Unknown flag

terminal
$ ignitify task:run fetch --paylod '{}'Error: unknown flag --paylod for task:run. Did you mean --payload?

The flag is not one of that command's flags. Fix: ignitify help task:run lists the flags of one command.

The payload is too large

terminal
$ ignitify task:run fetch --payload "$(cat big.json)"Error: payload is 12011 bytes; the limit is 10240 bytes

The payload is over the limit of 10 KiB. Keep large data in your own storage and pass a link in --payload.

Deploys and builds

No deployment found

terminal
$ ignitify task:run fetchError: no deployment found for 'fetch' — run `ignitify task:deploy fetch` first, or pass --deployment <id> explicitly.

The task has no deployment to run. Fix: ignitify task:deploy fetch.

The latest deploy is still building

terminal
$ ignitify task:run fetchError: the latest deploy of fetch is still building (019fdec9-0c3e-7b52-a417-6e2d9f8b1c05). Wait for it ('ignitify deployment:get 019fdec9-0c3e-7b52-a417-6e2d9f8b1c05'), or pass --deployment <id> to run an older one.

A run needs a finished build. Fix: ignitify deployment:get 019fdec9-0c3e-7b52-a417-6e2d9f8b1c05 until its status is READY.

The build failed

terminal
$ ignitify task:deploy broken✗ Build failed · 23sError: deployment 019fdeca-6b14-7a90-8e23-c1d4f0a7b958 failed to build — the build failed at stage "fetch" (exit 1)Build log:  build refused at stage "fetch": npm ci failed:  npm error code E404  npm error 404  'no-such-package@1.0.0' is not in this registry.

The build stopped at the named stage, and the log tail shows why. Fix: ignitify deployment:get 019fdeca-6b14-7a90-8e23-c1d4f0a7b958 prints the failure and the last 30 lines of the build log.

The latest deploy failed

terminal
$ ignitify task:run brokenError: the latest deploy of broken failed: the build failed at stage "fetch" (exit 1). Fix the task and run 'ignitify task:deploy broken' again, or pass --deployment <id> to run an older one.

The newest build failed, so there is nothing new to run. Fix: change the task, then ignitify task:deploy broken.

Scripts and CI

A script cannot answer the question

terminal
$ ignitify vm:delete vm_019fdec7-3a10-7c52-9b84-6d2e1f0a8c47 < /dev/nullWill tear down VM vm_019fdec7-3a10-7c52-9b84-6d2e1f0a8c47.Refusing to proceed: not a TTY. Re-run with --yes to confirm non-interactively.Aborted.

A delete asks you to confirm, and a script has no keyboard. Fix: add -y to every delete in a script.

Read the reason, not the text

The words after Error: are for people and can change. For a refused request, read the reason and boundBy fields in the JSON after API <status>:.