View all app connections
View all AI automations
View all chatbots
View all lead automations
View all booking automations
View all payment automations
View all workflows
View all Shopify
View all WooCommerce
View all HubSpot
View all Salesforce
View all Stripe
View all Google Sheets
View all Slack
View all dental practice
View all law firm
View all medical practice
View all real estate
View all restaurant and food
View all home services
View all construction
See all: get more leads
See all: get paid faster
See all: save admin time
See all: support customers
See all: book more appointments
See all: sell more online
See all: hire and onboard
View all AI automations
View all AI automations
View all AI automations
View all AI automations
View all AI automations
View all AI automations
View all AI automations
Workspaces

Notion API limits that break automations.

Rate limits, size caps and permission rules that cause quiet failures, and the design habits that avoid them.

Reading time7 minutes
TopicWorkspaces
Written byThe BoldBellows team

Key takeaways

  • Plan for about three requests per second per connection, and pace writes through a queue.
  • Split text over 2,000 characters and lists over 100 items, and send big pages in chunks.
  • Buttons cannot be pressed through the API, and connections only see what is shared with them.
  • Look up before you create to prevent duplicates.
  • Check plan limits when content stops appearing.

Notion is a pleasant place to keep a CRM, a content calendar or an order log, and the API makes it tempting to automate. Then a sync that worked for twenty records starts failing at two hundred, a long text field is cut off, or a page refuses to update. These are not bugs. They are limits, and you can design for every one of them.

This guide lists the limits that most often break Notion automations, explains what each looks like in practice, and gives the design change that avoids it.

The request rate: about three per second

Notion allows an average of around three requests per second per connection, with some room for bursts. When you exceed it, the API answers with a rate-limited error and tells you how long to wait. An automation that loops over a database and updates each page in turn will hit this wall quickly.

  • Queue your calls so they run at a steady pace below the limit.
  • Respect the wait time in the response, then retry, instead of retrying immediately.
  • Batch the logic, not the calls. Notion has no bulk-update endpoint, so reduce the number of pages you touch by updating only what changed.
  • Use more than one connection only if it is allowed by your design, not as a way around the limit.
Notion eventIDs, not contentVerify signatureX-Notion-SignatureFetch the pagecurrent stateAct once3 req/s budget
Queue requests under the rate limit, chunk long text, paginate large lists and keep each request within the size limits.

Size limits that cut content off

LimitWhat it means in practice
Rich text: 2,000 characters per text objectA long note or description must be split across several text objects, or it is rejected.
Arrays: 100 elementsA request that sends more than 100 items in a list, such as multi-select values or children, is refused.
Request size: 1,000 blocks and about 500 KBCreating a long page in one call fails. Send it in chunks.
Pagination: up to 100 results per pageReading a big database means following a cursor through many pages.

None of these are hard to handle once you know them, but each one fails silently if your code does not check. A description that was truncated to 2,000 characters looks fine in the log.

What an automation cannot do

  • Press a Button. Button blocks and button properties are meant for people. The API cannot press them, so an automation that depends on one needs a different trigger.
  • See what has not been shared. A connection can only read and write pages and databases that were explicitly shared with it. A permission error is often a sharing problem.
  • Ignore plan limits. On the free plan, a workspace with several members has a cap of 1,000 blocks, and content created through connections counts toward it.
Plan limits apply to automations too

If an automation seems to stop creating content for no reason, check the workspace’s plan and block count before you debug the code.

Webhooks: verify and expect retries

Notion can notify your endpoint when content changes. Verify the signature header on every request before you trust it, answer quickly, and expect that a delivery may be retried if you fail to answer. As with any webhook, record what you have already handled and fetch the page’s current state before acting.

Property types that trip people up

  • Relations and rollups are computed or linked values. Write to the relation, read the rollup, and do not try to write the rollup.
  • Select and multi-select values that do not exist yet are created on write in many cases, which can silently add new options. Normalize values first.
  • Dates and time zones are stored with or without a time zone depending on how they were created. Be explicit when you write them.
  • Formulas are read-only through the API.

A reliable pattern

  1. Identify records by a stable key you control, such as an order number stored in a property.
  2. Look up before you create. Update when found; create only when not found.
  3. Send writes through a queue that paces requests and honors wait times.
  4. Split long text and long lists into chunks that fit the limits.
  5. Log every write with the page ID so you can audit later.
  6. Run a nightly comparison of the source system and the database, and fix differences.

The look-up-before-create rule alone prevents the most common Notion automation bug: duplicate pages from retries and re-runs.

A short checklist

  • Requests paced below the average rate
  • Wait time honored after a rate-limited response
  • Long text split into 2,000-character objects
  • Lists chunked to 100 items
  • Pagination followed to the end
  • Page shared with the connection
  • Webhook signatures verified
  • Look-up before create, always
Questions

Common questions.

Short answers to what readers ask most about this topic. Ask us if yours is missing.

What is the Notion API rate limit?

An average of about three requests per second per connection, with brief bursts allowed. Exceeding it returns a rate-limited error, and a well-built automation waits and retries. Bulk work is queued and paced, which is why a large import takes longer than you might expect.

How long can a Notion text field be through the API?

A single rich-text object holds up to 2,000 characters. Longer text must be split across several objects, which is easy to forget until a long note fails to save. Our automations split and rejoin text so that long content is not lost.

Can the API press a Notion button?

No. Buttons are for people, so an automation needs a different trigger, such as a status change, a new row or a webhook from another tool. If you rely on a button today, tell us and we will propose a trigger that serves the same purpose.

Why can my integration not see a page?

Because it has not been shared with the connection. Notion integrations can see only what you explicitly share with them. Share the page or database with the integration, and remember that child pages inherit access from the parent they are shared under.

How do I avoid duplicate pages?

Store a stable key in a property and look it up before you create. If the key exists, update the page instead of creating another. This is how automations stay safe when an event is repeated or a run is retried.

Does Notion have a bulk update endpoint?

No. Updates are per page, so reduce how many pages you touch and queue the rest. Updating only what changed, rather than rewriting everything, keeps you within the rate limit and makes runs faster.

How do I read a database with thousands of rows?

Follow the cursor page by page, up to 100 results at a time, and store progress between runs. Reading is cheaper than writing, but a very large database still takes many calls, so avoid doing it on every event.

Why does my integration get a permission error?

Usually the page or database was not shared with the connection. Share it and retry. If it still fails, check that the integration has the capability it needs, such as read, update or insert, in its settings.

Can I use Notion as a production database?

For modest volumes and simple relations, yes. Plan for the rate and size limits, and move to a database if you need heavy writes, strict consistency or complex queries. Many teams use Notion as the friendly face of data that lives elsewhere.

Need this done properly?

We build automations that handle the awkward cases: duplicates, retries, limits and exceptions. Browse fixed prices or ask for a quote.

Fixed pricesReply within 24 hours