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

LimitFreeBasicProEnterprise
Max concurrent steps525200+Custom
Single event size256KiB512KiB3MiBCustom
Trace and log history24 hours7 days14 days90 days
Event lookback period1 hour1 hour3 daysCustom
Maximum function run length30 days90 days366 daysCustom

See the pricing page for plan packaging, included usage, and paid upgrade details.

Platform limits

LimitCurrent valueNotes
Step sleep durationUp to 1 yearFree plan supports sleeps up to 7 days.
Step timeoutUp to 2 hoursAlso depends on your hosting provider's timeout.
Step-returned payload size4MiBApplies to data returned by a step.
Function run state size32MiBIncludes event data, step data, function return data, and internal metadata.
Steps per function1000Loops that create one step per item can hit this quickly.
Event name length256 charactersApplies to the event name.
Events per request5000Applies to step.sendEvent(events) and inngest.send(events).
Batch size10MiBHard 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 step and 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.