Understand usage and limits
Who this is for: admins who keep an eye on cost and limits, and anyone whose runs stopped because of a limit.
Before you start: to read usage you need the View usage permission (view_usage). Every human role has it. To export invoice data you need the Manage billing permission (manage_billing), which only admins have.
Liitora counts what your workflows use and compares it with your plan’s limits. This page explains what is counted, which limits are enforced, and how to get the numbers.
In Monitor, select Usage to see the numbers for the current month, per workflow and per day. See the Usage page.
What is counted
Section titled “What is counted”| Quantity | What counts |
|---|---|
| Runs | Production runs that started in the month, however they were started. Test runs, runs in the test environment and dry runs are counted separately and do not use your run limit. |
| Compute units (CU) | The work your runs did: run time, CPU and memory together. See What is a compute unit. |
| Emails | Emails sent by workflows. |
| Webhook requests | Webhook deliveries Liitora accepted. |
| Storage | Files (artifacts), large payloads and stored run logs, right now. |
A billing period is one calendar month in UTC. For example, September 2026 runs from 1 September 00:00 UTC to 1 October 00:00 UTC.
Read your usage
Section titled “Read your usage”In the app, Usage shows each quantity with its limit, a status and a forecast. With the REST API, GET /api/v1/usage returns the current month (or ?period=2026-09). For each quantity you get:
used, thelimitand apercent,- a
status:ok,warning(at 80% or past a soft limit),exceeded(at or over the hard limit) ornot_set(your plan has no such limit), - a
forecastfor the whole month, from the use so far.
More detail:
GET /api/v1/usage/workflows: runs, failures, test runs and compute per workflow.GET /api/v1/usage/daily?from=2026-09-01&to=2026-09-30: one entry per UTC day.
A read-only API token is enough for these.
The weekly health digest email also shows compute used against your plan.
Which limits are enforced today
Section titled “Which limits are enforced today”| Limit | Where it applies | What happens |
|---|---|---|
| Runs per month (hard) | When any production run would start: a schedule, a workflow_run chain, a webhook delivery, Run now, the API or an AI assistant, a replay or a retry |
The run is not started. A schedule or chain skips it. Run now, the API and your AI assistant get run_limit_reached, which says when runs start again. A webhook sender gets 429 quota_exceeded and can retry later. An admin alert quota_exceeded is sent once per month. |
| Runs per month (soft) | Same | At 80% and 100%, a quota_warning alert, once each per month. Runs still start. |
| Minimum time between scheduled runs | When you save a workflow, and when a schedule fires | A schedule that runs more often than your plan allows cannot be saved. An older one is not started, with an alert. |
| Runs at the same time | When a queued run is picked up | Extra runs wait in the queue until a slot is free. Nothing is dropped. |
| Run time, memory and output size per step | While a step runs | The step stops with timeout, memory_limit, cpu_limit or output_too_large. |
| Webhook requests per minute | At the webhook address | The sender gets 429 with Retry-After. By default an endpoint takes 60 per minute, and your company 600 per minute. |
| Retention | Every hour | Logs, files and webhook events older than your plan allows are deleted. |
| Compute units per month | When a run would use more compute | New production runs end at once with quota_exceeded until the next month. Test runs don’t count. |
| Emails per month | When an email.send step would send |
The step fails with quota_exceeded and the email is not sent. |
| Webhook requests per month | At the webhook address | The sender gets 429 quota_exceeded with Retry-After and can retry later. |
| Storage per month | When a step would store a file | The step fails with quota_exceeded until older files expire or are removed. |
At 80% and 100% of each of these limits, admins get a quota_warning alert, and at the limit a quota_exceeded alert, once per month each.
The limits of each plan are on Limits per plan.
When you reach a limit
Section titled “When you reach a limit”- Runs are refused, never lost without a trace. A refused scheduled run is recorded in an alert, and you get an email.
- Refused slots are not started later. After the limit is lifted, the schedule goes on from the next slot.
- Nothing is deleted when you reach a limit.
If your company’s account is suspended or unpaid, active workflows are paused. They resume by themselves when the account is in order again. A workflow paused this way shows Paused because of billing, and you cannot resume it by hand. The error code is paused_by_system.
Export usage for invoicing
Section titled “Export usage for invoicing”On the Usage page, pick the Month and select Download invoice data (CSV). With the REST API, GET /api/v1/usage/invoice?period=2026-09&format=csv returns one line per day and kind of use, with totals per kind and a grand total. Leave out format or use format=json for JSON. Compute units are given exactly, in micro-CU and as a decimal number.
This needs Manage billing. An API token for it must be created by an admin with Read-only turned off.
See the cost of a workflow before you approve it
Section titled “See the cost of a workflow before you approve it”GET /api/v1/workflows/{id}/cost-preview estimates the compute a version uses per month, from its schedule and from recent or test runs. It says what share of your plan that is.
The approval page shows the same estimate under Expected cost, in one sentence, and says whether the number of runs comes from the schedule or from the last 30 days of runs.