Skip to content
Notion API reference

Every Notion API limit, in one table

21documented limits
3groups

Last verified

The Notion API now enforces two rate limits plus per-endpoint limits. The per-connection limit is a fixed budget per 60-second window that depends on the workspace's plan: 600 requests per minute (an average of 10 per second) on Business and Enterprise, and 180 requests per minute (an average of 3 per second) on all other plans. The budget can be spent evenly or in a single burst. A separate per-workspace limit is shared across all of a workspace's connections, so a request can be rate-limited even when its own connection is under budget. Querying a data source has its own limit of about 3 requests per second per connection.

Size limits are separate from rate limits. A request payload can hold at most 1,000 block elements and 500 KB. Rich text is capped at 2,000 characters per text object, arrays at 100 elements, and one append call at 100 block children with two levels of nesting. File uploads are capped at 5 MiB on Free workspaces and 5 GiB on paid ones.

There is also a new plan limit: from September 8, 2026, the REST API enforces the Free workspace block limit for multi-member Free workspaces. Values below come from Notion's developer reference, verified November 12, 2026.

Official reference: Notion API reference - Request limits

Jump to: Rate limits · Request size limits · Blocks, pagination and files · When you hit a limit · Staying under it

Rate limits

Each connection (integration) has a budget per 60-second window. When it runs out, the Retry-After value is the time until the window resets, so it is at most 60 seconds. The per-workspace limit is shared and scaled to the plan, and its Retry-After can be longer than a minute. The 429 body includes additional_data.rate_limit_reason, which tells you which limit you hit. A connection's Health tab lists the limits it reached in the last 24 hours.

WhatLimitNotesSource
Per-connection limit (Business and Enterprise)600 requests per minute (average 10 per second)Fixed budget per 60-second window; can be spent in a burst.docs ↗
Per-connection limit (all other plans)180 requests per minute (average 3 per second)The "3 requests per second" figure most guides quote.docs ↗
Per-workspace limitShared across all connections; scaled to plan (no number published)Reason code public_api_space_request_rate_limit; Retry-After can exceed 60 seconds.docs ↗
Data source queriesAbout 3 requests per second per connectionSeparate limit; reason codes collection_router_too_many_requests or collection_router_upstream_429.docs ↗
Endpoint-specific limitsVariesReason code public_api_endpoint_rate_limit.docs ↗
Blocked connectionNot a rate limitA 429 with public_api_request_blocked means API access was restricted; retrying won't help. Contact Notion support.docs ↗

Request size limits

Size limits cap a single request, not how much a property can hold overall. A relation can contain far more than 100 pages, but you can set at most 100 in one request. Exceeding a size limit returns HTTP 400 validation_error with details in the message property. Notion recommends handling over-length values before sending, for example by checking URLs against the 2,000-character cap.

WhatLimitNotesSource
Payload size1,000 block elements and 500 KB overallPer request.docs ↗
Rich text content (text.content)2,000 charactersPer rich text object; split long text into several objects.docs ↗
Rich text link URL (text.link.url)2,000 charactersSame cap as text content.docs ↗
Equation expression1,000 charactersequation.expression in rich text.docs ↗
Any array of blocks or rich text objects100 elementsApplies to all block types.docs ↗
URL property2,000 charactersNotion's example: plan for external URLs longer than this.docs ↗
Email / phone number property200 characters eachApplies to property values set by request.docs ↗
Multi-select / relation / people values per request100 options / 100 related pages / 100 usersRequest limits, not storage limits.docs ↗

Blocks, pagination and files

Writing page content goes through Append block children. One call accepts up to 100 children with up to two levels of nesting, so long documents need several calls. Reads are paginated: most list endpoints return 100 items per page at most. File uploads follow the same size limits as the Notion app, and files larger than 20 MiB must use multi-part upload. Free workspaces with more than one member also have a lifetime block cap that the API now enforces.

WhatLimitNotesSource
Block children per append request100"Arrays of block children longer than 100 will result in an error."docs ↗
Nesting depth per append request2 levelsFor blocks that allow children.docs ↗
page_size on list endpoints1 to 100 (default 100 on most)Follow next_cursor while has_more is true.docs ↗
File upload size (Free workspace)5 MiB per fileSame limit as the Notion app UI.docs ↗
File upload size (paid workspace)5 GiB per fileFiles over 20 MiB must be uploaded in multi-part mode.docs ↗
Free workspace block limit (more than one member)1,000 lifetime blocksEnforced by the REST API from September 8, 2026 for internal connections and OAuth connections restricted to selected workspaces. Paid and single-member Free workspaces are unlimited. Deleting blocks doesn't restore capacity.docs ↗
Grace period after reaching the block limit3 daysThe write that first reaches the limit succeeds and starts the existing grace period; after it expires, block-creating writes fail.docs ↗

What happens when you hit a limit

Rate limits: HTTP 429 with code rate_limited and message You have been rate limited. Please try again later. The response carries a Retry-After header (whole seconds), repeated in additional_data.retry_after, and additional_data.rate_limit_reason names the limit. A 529 service_overload means Notion is temporarily overloaded and should be retried the same way.

Size limits: HTTP 400 validation_error. The message property explains which field exceeded its limit, for example body failed validation: ....

Free workspace block limit: after the grace period, block-creating writes return HTTP 403 restricted_resource with This workspace has used all of its free blocks. Upgrade its plan in Notion to create more content. This is a plan limit, and retrying won't resolve it. Reads, deletes and edits that don't create blocks keep working.

Staying under the limits

Queue requests and honor Retry-After. Notion recommends routing calls through a queue so one burst doesn't consume the whole budget. Pause for at least the Retry-After value, then back off exponentially with jitter, and set a retry cap. The official JavaScript SDK does this automatically.

Write in bigger chunks. Append up to 100 blocks per call instead of one call per paragraph, and create a page with its initial children in one request.

Don't blindly retry writes that return 503. Check additional_data.retry_guidance, because the change may already have been saved.

Upgrade when the plan is the limit. Business and Enterprise raise the per-connection budget from 180 to 600 requests per minute. A paid plan removes the Free block cap and raises file uploads to 5 GiB.

Definitions

Other platforms

Frequently asked questions

What is the Notion API rate limit?

Each connection gets a fixed budget per 60-second window based on the workspace plan: 600 requests per minute (about 10 per second) on Business and Enterprise, and 180 requests per minute (about 3 per second) on all other plans. A separate per-workspace limit is shared across all connections, and data source queries are limited to about 3 per second.

Is the Notion API limit still 3 requests per second?

For most plans, effectively yes: 180 requests per minute averages to 3 per second. The budget is now a per-minute window that can be spent in a burst, Business and Enterprise workspaces get 600 per minute, and a shared per-workspace limit can throttle you even when your own connection is under budget.

How long should I wait after a Notion 429?

Use the Retry-After header, an integer number of seconds, rather than a fixed wait. For the per-connection limit it is at most 60 seconds because it is the time until the window resets. For the per-workspace limit it can be longer than a minute. The body repeats the value in additional_data.retry_after.

How many blocks can I append in one Notion API request?

Up to 100 block children per Append block children request, with up to two levels of nesting. Arrays longer than 100 return an error. The whole payload is also capped at 1,000 block elements and 500 KB, so very large nested structures may need to be split across requests.

What is the Notion rich text character limit?

2,000 characters per rich text object's text.content, and 2,000 characters for a link URL. To write longer text, split it into several rich text objects inside the same block, or into several blocks. Arrays of rich text objects are capped at 100 elements per request.

What is the Notion Free workspace block limit for the API?

Free workspaces with more than one member have 1,000 lifetime blocks, and from September 8, 2026 the REST API enforces it for internal connections and OAuth connections restricted to selected workspaces. After a three-day grace period, writes that create blocks fail with HTTP 403 restricted_resource. Paid and single-member Free workspaces are unlimited.

How large a file can I upload with the Notion API?

5 MiB per file on Free workspaces and 5 GiB per file on paid workspaces, the same as the Notion app. Files larger than 20 MiB must be split into parts and uploaded in multi-part mode. A file over the workspace's limit is rejected, so check the plan before sending large media.

Pace the work instead of tripping the limit

Autonoly workflows run on a schedule or a trigger with per-node retries and timeouts, so a job can be spread out and retried rather than run in one burst. Platform limits still apply in full; no tool can lift them.