*Workflows › Run*

# Limits and credits

> Each limit below is enforced by the engine. The last column says what happens when you reach it, because that is usually the question.

## Run limits

| Limit | Value | At the limit |
| --- | --- | --- |
| Steps in one run | 1000 positions. The trigger, every condition, switch, iterate, loop check, jump, wait and action each take one, and so do steps replayed after a wait. A Try takes none, but the steps inside it do. | The run fails at once with no retry. |
| Steps replayed when a run resumes | 1000 | The run fails with no retry. |
| Attempts after an engine error | 3 (waits of 30 and 60 seconds) | The run ends as failed. |
| Laps of a Loop | 1 to 500; a new loop starts at 100 | The step fails, so the run fails (a Try around the loop can catch it). |
| Items of an Iterate step | 500 | The run fails before processing any item. |
| Jumps of a Jump step | 1 to 500; a new one starts at 3 | The run continues with the next step. |
| Chain of runs (signals, Trigger workflow, events) | 10 hops | The firing or triggering step fails; an event is ignored. |
| One Wait step | 30 days | Refused when you save. |
| One Wait until step | 365 days ahead | The step fails when it runs. |
| Adjust date | 3650 days either way | Refused when you save. |
| How long a worker may hold a run | 5 minutes | After that the run can be taken over, and that costs an attempt. |
| Depth of a stored definition | 100 levels | Refused when you save. |

There is no maximum number of steps in a workflow: the limits are on what one run does.

## Other limits

| Where | Limit | At the limit |
| --- | --- | --- |
| Webhook body | 256 KiB | 413 |
| Webhook rate | About 60 requests a minute per address (counted per server instance) | 429 with `Retry-After` |
| Webhook Idempotency-Key | 255 characters | 400 |
| HTTP step response | 5 MB | The step fails |
| HTTP step time | 15 seconds without activity | The step fails |
| HTTP step redirects | 3 | The step fails |
| Email search / calendar search | 50 results | Truncated: the newest 50 emails, the 50 earliest events |
| Email inline attachments | About 2.7 MiB once encoded (about 2 MiB of files) | The step fails |
| Email from Filmo attachments | About 39 MiB encoded | The step fails |
| Run history shown | 100 runs | Older runs are not reachable in the app |
| Runs kept | 90 days after they end | Deleted with their steps |
| REST API / MCP | 120 requests a minute per key | 429 |
| REST API / MCP idempotency | 24 hours of replay | A repeat after that is a new run |

## Credits

Running a workflow uses the same pool of credits as the AI in Filmo.

- One credit for every action step that completes, whatever it does. A wait, a Set variable and an Adjust date cost one, like an email does.
- Free: the trigger, conditions, switches, loops, iterations, jumps, steps that fail, and anything replayed after a wait, a retry or a resume.
- A step in the body of a loop or an iteration costs one on every lap.
- A step that calls the AI costs that credit plus AI credits for the tokens it used.
- On a retry, a step without AI is charged only once; a step with AI is charged on every attempt.
- What you see are credits, never tokens: on the run card, in the run history and on each step.

### When credit runs out

Before each action step the engine checks the company's credit. The outcome depends on why it refuses:

| Reason | Result | What you do |
| --- | --- | --- |
| No credits left | The run is «Paused». | Add credit or turn on «Turn on pay-as-you-go», then press «Resume». |
| A payment problem on the subscription | The run is «Paused». | Fix the payment, then press «Resume». |
| Workflow execution is switched off for the company | The step fails, so the run fails. | Ask whoever administers the AI settings to turn it on again, then Retry. |
| No subscription found | The step fails. | Contact support. |

- The check asks whether any credit is left, not whether there is enough for this step, so the last step can take consumption slightly over the limit.
- A pause costs nothing, writes no error and sends no notice. The run continues at the step that was blocked.
- Plans with no ceiling never reach the limit. A monthly budget on pay-as-you-go still stops the run at the budget.
- If the billing service itself is down, the step goes ahead rather than pausing every run of every company.

---

Canonical URL: https://docs.filmo.io/workflows/limits  
Last updated: 2026-10-09