Rate Limiter Node
The Rate Limiter node throttles event throughput to protect downstream services from being overwhelmed. Configure maximum events per time window with drop or queue overflow strategies.
Overview
The Rate Limiter node sits inline in a pipeline and enforces throughput limits on the events passing through it. When the rate limit is exceeded, events are either dropped or queued for later delivery, depending on the overflowAction configuration. This provides more granular control than webhook-level rate limiting, as you can apply different limits to different branches of a pipeline.
The rate limiter uses a sliding window strategy that continuously evaluates event counts. On the canvas, the Rate Limiter renders as a dedicated node and can receive input from webhooks or scheduled webhooks.
Configuration
| Field | Type | Default | Description |
|---|---|---|---|
| name | string | — | Friendly label for the rate limiter |
| maxEvents | number | — | Maximum number of events allowed within the time window |
| windowSeconds | number | — | Duration of the rate limit window in seconds |
| overflowAction | string | drop | 'drop' (discard excess events) or 'queue' (delay until next window) |
| maxQueueDelaySeconds | number | 300 | Maximum delay in seconds when overflow action is 'queue' |
| inputNodes | { nodeType, nodeId }[] | [] | Upstream nodes that feed this one. nodeType is the node kind (webhook, scheduledWorkflow, filter, …) |
| inputNodes | { nodeType, nodeId }[] | [] | Upstream nodes that feed this one. nodeType is the node kind (webhook, scheduledWorkflow, filter, …) |
| outputWebhookIds | string[] | [] | Webhook IDs to forward allowed events to |
| outputTransformIds | string[] | [] | Transform node IDs to forward allowed events to |
| isActive | boolean | true | Whether the rate limiter is enabled |
Overflow action comparison
| Action | Behavior | Best for |
|---|---|---|
| drop | Events beyond the limit are silently discarded. | Non-critical events, burst protection |
| queue | Events are delayed until the next window opens (up to maxQueueDelaySeconds). | Important events that must eventually be delivered |
Create a Rate Limiter
curl -X POST /api/rate-limiter-nodes \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Stripe API Guard",
"maxEvents": 100,
"windowSeconds": 60,
"overflowAction": "drop",
"isActive": true
}'Response
{
"_id": "6655e1f2a3b4c5d6e7f8a9b0",
"name": "Stripe API Guard",
"maxEvents": 100,
"windowSeconds": 60,
"overflowAction": "drop",
"inputNodes": [],
"inputNodes": [],
"outputWebhookIds": [],
"outputTransformIds": [],
"isActive": true,
"createdAt": "2025-05-01T12:00:00.000Z",
"updatedAt": "2025-05-01T12:00:00.000Z"
}Update a Rate Limiter
curl -X PATCH /api/rate-limiter-nodes/6655e1f2a3b4c5d6e7f8a9b0 \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"maxEvents": 200,
"overflowAction": "queue"
}'Canvas Integration
The Rate Limiter is available as a canvas node. Connect webhooks or scheduled webhooks as inputs, and webhooks or transforms as outputs. Events flow through the rate limiter, which enforces the configured throughput limit before forwarding to output nodes.
Payload Examples
Event within rate limit
{
"type": "order.created",
"data": { "orderId": "ORD-001", "amount": 5000 }
}
// Rate limit: 100/60s, current count: 45
// Result: PASSES — event continues through the pipelineEvent exceeding rate limit (drop)
{
"type": "order.created",
"data": { "orderId": "ORD-102", "amount": 3000 }
}
// Rate limit: 100/60s, current count: 100
// overflowAction: "drop"
// Result: DROPPED — event is silently discardedUse Cases
- API protection — Prevent overwhelming downstream APIs with strict rate limits (e.g., Stripe, Shopify).
- Cost control — Limit throughput to paid APIs where each call incurs a cost.
- Branch-specific limits — Apply different rate limits to different pipeline branches (e.g., high-priority events get a higher limit).
- Traffic shaping — Ensure smooth, even throughput to sensitive services.
- Burst prevention — Protect against sudden spikes in webhook volume during peak periods.
API Reference
| Method | Webhook | Description |
|---|---|---|
| GET | /api/rate-limiter-nodes | List all rate limiter nodes |
| POST | /api/rate-limiter-nodes | Create a new rate limiter |
| GET | /api/rate-limiter-nodes/:id | Get a specific rate limiter |
| PATCH | /api/rate-limiter-nodes/:id | Update a rate limiter |
| DELETE | /api/rate-limiter-nodes/:id | Delete a rate limiter |
rateLimitPerSecond for simple per-second throttling. The Rate Limiter node provides additional flexibility with configurable time windows and per-branch control.