Skip to content

Developer API · v1

Build on your workspace

A simple REST API to read and write your pages and databases. Authenticate with a personal access token, scoped to exactly what your integration needs.

Authentication

Create a token in Settings → API tokens. Tokens are scoped to one workspace and shown once, so copy it straight away. Send it as a bearer token on every request:

curl https://api.rodeo.so/api/public/v1/pages \
  -H "Authorization: Bearer rodeo_pat_xxxxxxxx"

The workspace is bound to the token, so you never pass a workspace id. A first-party session token or an MCP token will not work here: the public API only accepts personal access tokens.

Base URL and versioning

https://api.rodeo.so/api/public/v1

The version lives in the path (/v1). Breaking changes ship under a new version.

Scopes

  • workspace:readRead workspace metadata
  • pages:readList and read pages
  • pages:writeCreate and edit pages
  • databases:readRead database schemas, views, and rows
  • databases:writeCreate and update rows
  • files:writeUpload images to the workspace
  • comments:writePost comments on pages

Endpoints

  • GET/pagespages:readList the workspace's pages
  • POST/pagespages:writeCreate a top-level page
  • GET/databases/{id}databases:readGet a database's schema and views
  • GET/databases/{id}/rowsdatabases:readQuery rows (optional ?view= and ?limit=)
  • POST/databases/{id}/rowsdatabases:writeCreate a row

Example: create a row

curl -X POST https://api.rodeo.so/api/public/v1/databases/DB_ID/rows \
  -H "Authorization: Bearer rodeo_pat_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"values":{"Name":"Acme","Status":"Lead"}}'

Rate limits and errors

Each token is limited to 120 requests per minute. Responses use standard status codes:

  • 401 missing, invalid or expired token
  • 403 {"error":"insufficient_scope","required":"pages:write"}
  • 429 rate limit exceeded

Bring the team's docs, plans and data into one place.

Free for up to 3 members · no card · import from Notion