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

FieldTypeDefaultDescription
namestringFriendly label for the rate limiter
maxEventsnumberMaximum number of events allowed within the time window
windowSecondsnumberDuration of the rate limit window in seconds
overflowActionstringdrop'drop' (discard excess events) or 'queue' (delay until next window)
maxQueueDelaySecondsnumber300Maximum 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, …)
outputWebhookIdsstring[][]Webhook IDs to forward allowed events to
outputTransformIdsstring[][]Transform node IDs to forward allowed events to
isActivebooleantrueWhether the rate limiter is enabled

Overflow action comparison

ActionBehaviorBest for
dropEvents beyond the limit are silently discarded.Non-critical events, burst protection
queueEvents are delayed until the next window opens (up to maxQueueDelaySeconds).Important events that must eventually be delivered

Create a Rate Limiter

bashCreate 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

json201 Created
{
  "_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

bashUpdate 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

jsonPasses through
{
  "type": "order.created",
  "data": { "orderId": "ORD-001", "amount": 5000 }
}
// Rate limit: 100/60s, current count: 45
// Result: PASSES — event continues through the pipeline

Event exceeding rate limit (drop)

jsonRate limited
{
  "type": "order.created",
  "data": { "orderId": "ORD-102", "amount": 3000 }
}
// Rate limit: 100/60s, current count: 100
// overflowAction: "drop"
// Result: DROPPED — event is silently discarded

Use 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

MethodWebhookDescription
GET/api/rate-limiter-nodesList all rate limiter nodes
POST/api/rate-limiter-nodesCreate a new rate limiter
GET/api/rate-limiter-nodes/:idGet a specific rate limiter
PATCH/api/rate-limiter-nodes/:idUpdate a rate limiter
DELETE/api/rate-limiter-nodes/:idDelete a rate limiter
You can also use webhook-level rateLimitPerSecond for simple per-second throttling. The Rate Limiter node provides additional flexibility with configurable time windows and per-branch control.