Skip to main content
Notion enforces rate limits on worker execution to keep the platform stable for every workspace. The limits below are standard workspace defaults. A workspace with custom limits may have different thresholds.

Run rate limits

Worker runs use separate limits by capability type. Every worker in a workspace shares the applicable workspace budget. When a tool run, sync run, or queued webhook execution reaches its limit, its recorded worker run has a rate_limit_error result. The result includes retryAfterSeconds when available. The way a direct invocation surfaces that error depends on its transport.

Webhook ingress limits

Before Notion accepts a webhook event, it applies a separate workspace-level admission limit of 600 requests per hour, with a burst limit of 60 requests per minute. This limit is separate from the queued webhook execution limit above. Incoming webhook HTTP requests are also throttled before worker code runs: If a webhook request exceeds an ingress or admission limit, Notion responds synchronously with HTTP 429 and { "error": "Rate limit exceeded" }. A request that receives 202 Accepted was queued, but its later asynchronous execution can still reach the shared tool and webhook execution limit. Notion retries rate-limited webhook executions.

Sync database write limits

Sync upserts and deletes (the changes your execute function returns) are limited separately from sync runs, since a single sync run can write many rows:

Next steps

Syncs

Configure sync schedules and pace outbound requests to third-party APIs.

Webhooks

Receive HTTP events and understand webhook delivery behavior.