API Monitoring Guide

Monitor Notion API Status

Get alerted when the Notion API has issues before your database sync stalls, your published site goes stale, or your internal tools stop reading from Notion. Know the Notion API status in real time, not 15 minutes later.

Teams increasingly run dashboards, public sites, CRMs, and internal tools on top of Notion as a backend. When the REST API at api.notion.com/v1 slows down or returns errors, your sync jobs fall behind, page builds fail, and automations silently stop — often with no visible error until someone notices stale data.

This guide covers everything you need to monitor Notion API status: which endpoints to track, how the 3 requests/second limit and required Notion-Version header work, how to tell an outage from a sharing/permission problem, and what to do when the API goes down.

Why Monitor the Notion API Externally?

Notion maintains a status page at status.notion.so for platform-wide incidents. It's worth bookmarking, but relying on it as your only signal leaves real gaps.

The problem with relying on Notion's status page

  • Integration-specific failures: A revoked integration token, a page unshared from your integration, or a missing Notion-Version header breaks your sync while the status page stays green.
  • Rate-limit throttling: The 3 req/s ceiling is easy to hit during a bulk sync. From your app's side, the resulting 429s look like an outage even though Notion is healthy.
  • Silent sync drift: If a scheduled sync fails quietly, your published site or dashboard shows stale data for hours before anyone notices. External monitoring of the read path catches it fast.
  • Status pages lag: A human posts the incident after engineers confirm it. External synthetic checks see the failure the moment it starts.

External synthetic monitoring catches Notion API issues in 1-2 minutes, not 10-15. That head start lets you pause sync jobs, serve from cache, or flag stale data before your users hit it.

Understanding the Notion API

The Notion API is a single REST surface at api.notion.com/v1, but a few quirks shape how you monitor it.

Requirement Value Why it matters
Auth header Authorization: Bearer Integration token
Version header Notion-Version Required, pin it
Rate limit ~3 req/sec Per integration
Access model explicit sharing Per page/database

Monitoring tip: pin the Notion-Version

Always send a specific Notion-Version like 2025-09-03. Omitting it returns an error, and a surprise version change can alter response shapes and break your body validation. Update the version deliberately, not implicitly.

Notion's access model is explicit: an integration only sees pages and databases that have been shared with it. That makes "is this page reachable?" a meaningful health signal — losing access is a common, silent failure that looks nothing like a platform outage.

Which Notion API Endpoints to Monitor

Each endpoint below tests a different concern. Monitoring several lets you pinpoint whether a problem is the API, your token, or lost access to specific content.

GET https://api.notion.com/v1/users/me

Bot user. The lightest health check: confirms the API is up and your integration token is valid. Returns your integration's bot user object. Make this your primary Notion health monitor. Validate the body contains "bot".

Critical
POST https://api.notion.com/v1/databases/{id}/query

Database query. Confirms the read path your sync depends on works and that the database is still shared with the integration. Send {"page_size": 1} to keep it cheap. A 404 here means access was removed, not that Notion is down.

Critical
GET https://api.notion.com/v1/pages/{id}

Page retrieval. Monitor a critical page (e.g. one that feeds a public site or dashboard). Confirms the page is reachable and the API returns valid properties. Good for content-driven sites built on Notion.

High
GET https://api.notion.com/v1/blocks/{id}/children?page_size=1

Block children. If you render Notion page content (a wiki, docs, or blog), this confirms block retrieval works. Block reads are where many content integrations actually break.

High
GET https://your-app.example.com/health

Your sync worker's health endpoint. Catches failures on your side — a crashed sync job or a queue backup — that Notion's status page will never show. Pair it with the Notion checks to separate "Notion is down" from "my sync is stuck".

Medium

Rate limit note: Notion averages ~3 requests/second per integration. A monitor checking a few endpoints every 1-5 minutes is far under that. Avoid sub-minute intervals across many endpoints on the same token, and keep heavy sync jobs on a separate integration so they don't 429 your health checks.

Notion API Rate Limits Explained

Notion's rate limiting is strict compared to many APIs, and it can easily masquerade as an outage during bulk operations. Understanding it is essential for both reliable sync and accurate alerting.

~3 requests/second per integration

The average rate limit is three requests per second per integration, with brief bursts tolerated. Exceed it and Notion returns a rate_limited error code with HTTP 429.

HTTP/1.1 429 Too Many Requests
Retry-After: 1

Respect Retry-After (seconds) before retrying.

Per-workspace limit

There's also a workspace-level limit shared across all integrations in that workspace and scaled to the plan. The error's rate_limit_reason tells you which limit you hit — the integration's or the workspace's.

HTTP 529: overloaded

During heavy load, Notion may return HTTP 529 (a non-standard "overloaded" code). Treat it like a 429: back off and retry. Your monitor should alert on sustained 529s as a degradation signal.

Distinguishing rate limits from outages

A 429 means you're throttled — back off using Retry-After. A 503 or widespread timeouts point to an actual Notion incident, while a 404 usually means lost access to a specific object. UptimeSignal records status codes and response times so you can tell throttling, access loss, and real outages apart.

Your tools run on the Notion API. Monitor it yourself.

Get alerted when the Notion API, your token, or a shared database start failing — before your sync silently serves stale data. Free for 25 endpoints, checks every 5 minutes.

Monitor Notion API free →

Common Notion API Issues and How to Detect Them

Knowing the common failure patterns helps you configure monitoring that catches real problems and avoids false alerts.

Lost Page/Database Access (404 / restricted)

If a teammate removes the integration's access to a page or database, calls that worked yesterday return 404 or a restricted_resource error. Monitoring a specific object surfaces this immediately — the API itself is fine, but your sync is blind.

Revoked or Rotated Token

If the integration token is regenerated or revoked, every call returns 401 Unauthorized. Monitoring /v1/users/me catches this so you can redeploy with the new token before sync goes dark.

Missing Notion-Version Header

A deploy that drops or changes the Notion-Version header causes errors that look like an outage. Pin the version in your monitor and in your app, and validate response bodies to catch version-driven shape changes.

Rate-Limit Throttling During Bulk Sync

A full re-sync can blow past 3 req/s and trigger cascading 429s. Sustained 429s on your monitor signal that a job needs better backoff or pagination, not that Notion is down.

Elevated Latency and 529s

During incidents, Notion response times climb and 529 "overloaded" responses appear. Tracking response time lets you catch degradation before it becomes a full outage and your sync windows start overrunning.

How to Monitor the Notion API: Step-by-Step

1

Create an integration and token

At notion.so/my-integrations, create an internal integration and copy its token. Then, in Notion, share the specific pages/databases you want to monitor with that integration (the ••• menu → Connections).

Security tip: Use a read-only integration scoped to just the content you monitor. Don't reuse a token with write access to your whole workspace.

2

Create a monitor in UptimeSignal

Sign up at app.uptimesignal.io and add a new HTTP monitor:

URL: https://api.notion.com/v1/users/me
Method: GET
Header: Authorization: Bearer YOUR_TOKEN
Header: Notion-Version: 2025-09-03
Expected status: 200
Body contains: "bot"

The Notion-Version header is required — without it the request fails.

3

Add monitors for your critical content

Add a database-query monitor for the database your sync depends on and a page monitor for any page that feeds a public surface. These catch lost-access (404) issues that the auth check won't.

4

Configure alerting for your team

Route alerts where you'll act on them:

  • Email -- Immediate notification to whoever owns the integration
  • Slack -- Alert your ops or internal-tools channel
  • Webhook -- Trigger your incident tooling or pause the sync
5

Tighten intervals for user-facing surfaces

If Notion feeds a public site or live dashboard, use 1-minute checks (Pro plan) so stale data or lost access is caught within a minute instead of five.

What to Watch For

Configure your monitors to alert on these conditions:

HTTP Status Codes

  • 200 -- API responding normally
  • 401 -- Token revoked or invalid
  • 404 -- Lost access to page/database
  • 429 -- Rate limited (3 req/s exceeded)
  • 500, 503, 529 -- Notion issue, alert now

Response Time

  • < 500ms -- Normal
  • 500ms-2s -- Degraded, watch trend
  • > 2s -- Severe; sync windows may overrun

Response body validation

For /users/me, check for "bot"; for a database query, check for "results". Body validation confirms you got a real Notion object rather than an error envelope, and it catches response-shape changes when the Notion-Version moves underneath you.

When Notion Goes Down: Response Playbook

When monitoring alerts you to a Notion problem, here's how to respond and limit the impact.

1. Verify and classify

Check status.notion.so. Determine whether it's auth (401), lost access (404), rate limiting (429), or a real outage (500/503/529). Each needs a different response.

2. Serve from cache

If a public site or dashboard reads from Notion, serve the last-good cached snapshot so visitors don't see errors or blanks. A read-through cache turns a Notion outage into a no-op for your users.

3. Pause and queue writes

If your integration writes to Notion, pause those jobs and queue them with idempotency keys. Retrying into a rate limit or outage just compounds the problem.

4. Re-check sharing on 404s

If only specific objects are failing with 404, it's almost certainly an access change, not an outage. Re-share the page/database with your integration and the monitor should recover immediately.

5. Communicate

Note any stale-data window for your team, and update your status page if a user-facing surface is affected. Link Notion's official status post when it's an upstream incident.

Frequently Asked Questions

Why monitor the Notion API instead of just using their status page?
Notion's status page reports platform-wide incidents, but won't reflect problems specific to your integration like a revoked token, hitting the 3 requests/second limit, or a page being unshared. External monitoring catches token, 429, and permission issues in 1-2 minutes regardless of what the status page shows.
How do I check Notion API status right now?
For platform-wide status, visit status.notion.so. For your integration, run: curl -H "Authorization: Bearer YOUR_TOKEN" -H "Notion-Version: 2025-09-03" https://api.notion.com/v1/users/me. For continuous monitoring, set up UptimeSignal to poll every 1-5 minutes and alert you instantly when the status changes.
Which Notion endpoints should I monitor?
Start with GET /v1/users/me as a lightweight auth + health check, add a POST /v1/databases/{id}/query for the database your sync depends on, and a GET /v1/pages/{id} for a critical page. Always include the required Notion-Version header so requests aren't rejected.
Can I monitor the Notion API for free?
Yes. UptimeSignal's free tier includes 25 monitors with 5-minute check intervals. You can monitor the users/me endpoint, your critical databases and pages, plus other APIs. Commercial use is allowed on the free tier. For 1-minute intervals and unlimited monitors, Pro is $10/mo billed annually ($15/mo monthly).
What are Notion's API rate limits?
Notion averages about three requests per second per integration (short bursts allowed), plus a per-workspace limit shared across the workspace's integrations and scaled to plan. Exceeding either returns a rate_limited error with HTTP 429 and a Retry-After header. Notion may also return HTTP 529 when overloaded — back off in both cases.
Why is the Notion-Version header required?
Every Notion API request must include a Notion-Version header (e.g. 2025-09-03). Without it the API returns an error that looks like an outage. Pin a specific version in your monitor and update it deliberately when you migrate, since response shapes can change between versions and break body validation.
Why did my integration suddenly return 404 or 403?
Notion integrations only see content explicitly shared with them. If someone removes the integration's access to a page or database, previously-working calls return 404 or restricted_resource errors even though the API is healthy. Monitoring a specific page/database surfaces this access loss immediately, separate from a real outage.
How do I monitor Notion database sync and integrations?
Point a monitor at POST /v1/databases/{id}/query for the database your sync depends on and validate that results come back. This confirms the API is up, your token is valid, and the database is still shared. Stay within the 3 req/s budget by checking every 1-5 minutes rather than continuously.

Start monitoring Notion now

UptimeSignal checks your endpoints from outside your network and catches errors before users do.

25 monitors free, unlimited for $10/month.

Monitor Other APIs