Inngest usage limits
Inngest usage limits keep function runs, steps, events, and history predictable for every account. Use these tables to check plan limits, rate-limit related controls, event payload limits, retention windows, and hard platform limits.
If you're looking for function-level rate limiting, use the rate limiting guide or throttling guide.
Some of these limits are customizable, so if you need more than what the current limits provide, please contact us and we can update the limits for you.
Plan limits
| Limit | Free | Basic | Pro | Enterprise |
|---|---|---|---|---|
| Max concurrent steps | 5 | 25 | 200+ | Custom |
| Single event size | 256KiB | 512KiB | 3MiB | Custom |
| Trace and log history | 24 hours | 7 days | 14 days | 90 days |
| Event lookback period | 1 hour | 1 hour | 3 days | Custom |
| Maximum function run length | 30 days | 90 days | 366 days | Custom |
See the pricing page for plan packaging, included usage, and paid upgrade details.
Platform limits
| Limit | Current value | Notes |
|---|---|---|
| Step sleep duration | Up to 1 year | Free plan supports sleeps up to 7 days. |
| Step timeout | Up to 2 hours | Also depends on your hosting provider's timeout. |
| Step-returned payload size | 4MiB | Applies to data returned by a step. |
| Function run state size | 32MiB | Includes event data, step data, function return data, and internal metadata. |
| Steps per function | 1000 | Loops that create one step per item can hit this quickly. |
| Event name length | 256 characters | Applies to the event name. |
| Events per request | 5000 | Applies to step.sendEvent(events) and inngest.send(events). |
| Batch size | 10MiB | Hard cap regardless of timeout or maxSize. |
Functions
The following applies to step usage.
Sleep duration
Sleep (with step.sleep() and step.sleepUntil()) up to a year, and for free plan up to seven days. Check the pricing page for more information.
Timeout
Each step has a timeout depending on the hosting provider of your choice (see more info), but Inngest supports up to 2 hours at the maximum.
Concurrency Upgradable
Check your concurrency limits on the billing page. See the pricing page for more info about the concurrency limits in all plans.
Payload Size
The limit for data returned by a step is 4MB.
Function run state size
Function run state cannot exceed 32MB. Its state includes:
- Event data (multiple events if using batching)
- Step-returned data
- Function-returned data
- Internal metadata (small - around a few bytes)
Number of Steps per Function
The maximum number of steps allowed per function is 1000.
⚠️
This limit is easily reached if you're using step on each item in a loop.
Instead we recommend one or both of the following:
- Process the loop within a
stepand return that data - Utilize the fan out feature to process each item in a separate function
Events
Name length
The maximum length allowed for an event name is 256 characters.
Request Body Size Upgradable
The maximum event payload size is dependent on your billing plan. The Free plan supports 256KiB, Basic supports 512KiB, Pro supports 3MiB, and Enterprise plans can use custom limits. See the pricing page for additional detail.
Number of events per request Customizable
Maximum number of events you can send in one request is 5000.
If you're doing fan out, you'll need to be aware of this limitation when you run step.sendEvent(events).
// this `events` list will need to be <= 5000
const events = [{name: "<event-name>", data: {}}, ...];
await step.sendEvent("send-example-events", events);
// or
await inngest.send(events);
Batch size
The hard limit of a batch size is 10 MiB regardless of the timeout or maxSize limit.
Meaning the batch will be started if that limit is crossed even if the batch is not full or has not reached the timeout duration configured.