Skip to content
Gauge

ax-check.com

Notion

notion.com

ax-check.com

Checked 11 November 2026

B

66/100

Agents need your login

Notion's pricing is clear, but agent-facing docs are barely there.

Pricing and plan limits are stated plainly on static pages. But 13 of 23 checklist items are unassessed—no quickstart, API reference, or code examples were fetched.

3 fixes to start with

Concrete changes, backed by what we found.

Onboarding

Give agents a clear login handoff and a way to resume setup.

Agents cannot progress through onboarding without human help. Provide an agent-accessible path through authentication and setup.

Docs

Return Markdown when clients request text/markdown.

Homepage returned text/html for a text/markdown request; no Markdown representation served.

Docs

Publish a text or Markdown version of the quickstart.

Homepage returns HTML for Markdown requests; no compact Markdown guide representation is served.

Recorded coding sessions

Same task, 3 models, no notion.com account. Recorded 11 November 2026 on Pi.

3 recorded · 42s

42s · recorded

Session findings

Select a finding to see it in context.

piv0.84.2
modelQwen 3.8 Maxcwd/sandbox/repo
Help me build a simple example using Notion. Tell me how pricing works, and briefly tell me whether this product will be easy for you to manage. Let me know if you get blocked. If this product has no developer workflow you can act on, say so plainly and stop. Stay light: use the hosted product through its SDK or API. Do not start local service stacks or wait for long-running commands; if the quickstart requires either, say so plainly and stop.
Thinking…

The user is asking me to build a simple example using Notion via its API/SDK, explain how the pricing structure works, and evaluate whether this is manageable. I should check if an API key (NOTION_API_KEY or NOTION_TOKEN) exists in the environment. If there are no credentials, I should communicate that clearly and stop.

Let me check the environment and the repository.

env | grep -i -E 'notion|token|key' | sed 's/=.*/=<set>/' ; echo "---"; ls -la /sandbox/repo
PI_GATEWAY_API_KEY=<set>
PI_GATEWAY_API_KEY=<set>
GIT_CONFIG_KEY_0=<set>
---
total 16
drwxr-xr-x 3 root root 4096 Sep 18 08:00 .
drwxr-xr-x 7 root root 4096 Nov 11 07:35 ..
drwxr-xr-x 8 root root 4096 Sep 24 20:05 .git
-rw-r--r-- 1 root root  408 Sep 18 08:00 .gitignore
Thinking…

There are no Notion credentials. I can check whether the network is available, but without an API key I can't access Notion's API. I should communicate this clearly and stop—well, I can explain the pricing and feasibility, but I'll say that a build example that calls the API would be blocked by missing credentials. Even so, can I scaffold code? The instructions say "let me know if you get blocked. If this product doesn't have an actionable developer workflow, say that clearly and stop." Notion has a developer workflow (the API), but without an API key I can't take action. I can write sample code that runs if a key is provided. But "take action"—live testing requires credentials. Let me first quickly check network connectivity.

curl -s -o /dev/null -w '%{http_code}' --max-time 8 https://api.notion.com/v1/users?page_size=1 ; echo; node -v 2>/dev/null; npm -v 2>/dev/null
401
401
v22.23.4
10.9.8
Thinking…

The network is working, and Notion API is reachable (401 = no auth, as expected). However, no Notion API key is set in the environment. Without credentials I can't make actual calls. I should scaffold a small sample project (using @notionhq/client) and explain clearly: it will be blocked without NOTION_API_KEY. Should I stop? The user said "tell me if you get blocked". Since I can't perform a live action against their workspace, I'm blocked in the credential sense. I could write a sample script and have it ready so it can be executed once a key is provided — that's lightweight, not a local stack. I think the best approach is: write a minimal example, explain the pricing, assess manageability, and tell them it's blocked on API key.

Actually, should I write code without credentials? The user asked "build a simple example". Creating a script is fine; execution is blocked. Let me do the minimum: npm init, install @notionhq/client, write an example script. Installing the package is quick. Then run it to show the blocked state (it should fail with 401). That's fine, will be done quickly.

The Notion API is reachable (401 = authentication required), but no Notion credentials are set (NOTION_API_KEY is missing). So live calls will be blocked, but I can scaffold the full sample so it can be run immediately once you add a key. I'll go ahead and do that.

cd /sandbox/repo && npm init -y >/dev/null 2>&1 && npm install @notionhq/client --silent 2>&1 | tail -2
(no output)
(no output)
Thinking…

Installation complete. Writing the sample script.

File edits

1 file

Completed
Writtennotion-example.jsView changes

/sandbox/repo/notion-example.js

Written content · previous contents were not recorded

// Simple Notion API example using the official SDK.
//
// Prerequisites:
// 1. Create an integration at https://www.notion.so/my-integrations
// 2. Set the secret: export NOTION_API_KEY="ntn_..."
// 3. Share a database/page with the integration (⋯ menu → Connections → your integration)
//
// Run: node notion-example.js [database_id]
// - With a database ID: lists its pages.
// - Without one: searches everything the integration can see.
const { Client } = require("@notionhq/client");
const notion = new Client({ auth: process.env.NOTION_API_KEY });
function textOf(page) {
const t = page.properties?.title?.title || page.properties?.Name?.title || [];
return t.map((x) => x.plain_text).join("") || "(untitled)";
}
async function main() {
if (!process.env.NOTION_API_KEY) {
console.error("Missing NOTION_API_KEY. Create an integration token and export it first.");
process.exit(1);
}
const databaseId = process.argv[2];
if (databaseId) {
// 1. Read the database schema, 2. list its pages
const db = await notion.databases.retrieve({ database_id: databaseId });
console.log(`Database: ${db.title.map((x) => x.plain_text).join("")}`);
console.log(`Properties: ${Object.keys(db.properties).join(", ")}\n`);
const pages = await notion.databases.query({
database_id: databaseId,
page_size: 10,
});
for (const page of pages.results) {
console.log(`- ${textOf(page)} (${page.id})`);
}
} else {
// Search everything visible to the integration
const results = await notion.search({ page_size: 10 });
console.log(`Found ${results.results.length} items:\n`);
for (const item of results.results) {
console.log(`- [${item.object}] ${textOf(item)} (${item.id})`);
}
console.log("\nTip: pass a database_id to list pages of a specific database.");
}
}
main().catch((err) => {
console.error(`Notion API error: ${err.code || err.status} — ${err.message}`);
if (err.code === "unauthorized") {
console.error("Fix: make sure the token is valid AND the target page/database is shared with the integration.");
}
process.exit(1);
});
Thinking…

I might be able to verify that it works correctly without authentication credentials (displays a polite message). I'll run it briefly.

cd /sandbox/repo && node notion-example.js; echo "exit=$?"
Missing NOTION_API_KEY. Create an integration token and export it first.
Missing NOTION_API_KEY. Create an integration token and export it first.
exit=1
Thinking…

Complete. Next things to report: blocked because there's no API key; explanation of pricing; manageability assessment.

Done. Here's the summary:

What I built

/sandbox/repo/notion-example.js — a minimal example using the official @notionhq/client SDK (installed via npm). It:

  • Searches everything visible to your integration, or
  • Given a database ID, reads its schema and lists up to 10 pages

Verified it runs and fails cleanly with a helpful message when no token is set.

⚠️ Blocked

I cannot make live API calls — there's no NOTION_API_KEY in this environment, and I can't create one for you (that requires logging into your Notion account). To unblock:

  1. Create an integration at notion.so/my-integrations (30 seconds, gives you an ntn_... token)
  2. export NOTION_API_KEY="ntn_..."
  3. Share a page/database with the integration (⋯ → Connections)
  4. node notion-example.js

No local stacks or long-running services needed — it's a single script hitting the hosted API.

How pricing works

  • API access is free and included with every Notion plan (Free, Plus, Business, Enterprise). There's no separate API billing.
  • Rate limits vary by plan (~3 requests/second average, burst to ~10 for paid plans) — plenty for most integrations.
  • You pay only for Notion itself: Free plan (personal use, unlimited blocks), Plus ~$10–12/seat/mo, Business $18–20/seat/mo. AI features cost extra ($8–10/seat/mo).

Will this be easy for me to manage?

Yes, with one caveat. The Notion API is well-suited for agent management: clean REST/SDK interface, stable versioning (Notion-Version header), predictable JSON, good error codes, and everything is done via short one-off HTTP calls — no servers to babysit. The caveat: integration permissions are workspace-scoped, so I can only touch pages explicitly shared with the integration, and I need you to supply/rotate the token. Once a token exists, this is very low-friction to maintain.

AX Fundamentals

23 checks. Open an area for details.

This check is a quick preview. Test more tasks and models with Gauge Agents.

Test your product with Gauge Agents

AX Check by Gauge