Developer docs
Production Planner API
Use Enterprise API tokens to connect Zapier, Make.com, IFTTT, and n8n to schedule data. All endpoints require bearer auth except health and invite onboarding routes.
Quickstart
- Open Settings → API & Integrations (Enterprise).
- Create a Personal Access Token with the scopes you need.
- For remote MCP clients, start with OAuth instead of a manual token.
- For manual/local MCP fallback only, create a token with
projects:read,blocks:read, andblocks:write. - Use the token as a Bearer token in REST connector requests.
- For MCP, call
/api/mcpwithinitialize, savemcp-session-id, then usetools/listandtools/call. - Start with the events trigger endpoint, then call actions to write blocks.
curl "https://api.get-planner.com/v1/connectors/events?limit=25" \ -H "Authorization: Bearer plr_pat_pat_xxx.secret"
Authentication
Send your token as Authorization: Bearer <token>. REST connector tokens can be PATs or service-account tokens and are always scoped.
For Planner MCP specifically, every connection needs auth. OAuth is the recommended auth flow for hosted/remote clients such as ChatGPT, Claude remote connectors, and Cursor remote MCP.
Base URL: https://api.get-planner.com
Format: plr_pat_<prefix>.<secret>
MCP endpoint
Planner MCP supports Streamable HTTP plus OAuth metadata for remote clients:
POST https://api.get-planner.com/api/mcp
OAuth metadata https://api.get-planner.com/.well-known/oauth-authorization-server
Protected resource metadata https://api.get-planner.com/.well-known/oauth-protected-resource/api/mcp
Remote OAuth clients (ChatGPT / Claude / Cursor)
Use the MCP endpoint above. Let the client discover OAuth automatically when possible.
ChatGPT note: use the dedicated ChatGPT MCP endpoint https://api.get-planner.com/api/mcp/openai. Treat OAuth as required, not optional. Use metadata URLs only when ChatGPT asks for them.
ChatGPT form match: in Settings -> Apps -> Create, set Name to Planner, paste https://api.get-planner.com/api/mcp/openai into MCP Server URL, set Authentication to OAuth, then create the app.
Claude note: Claude's custom connector UI uses four fields. Generate the Planner Client ID and Secret in Settings -> MCP, then paste Name, URL, Client ID, and Client Secret into Claude.
Cursor note: add a remote MCP server, use Name Planner, choose Streamable HTTP, paste the MCP endpoint into the URL field, and continue with OAuth.
Planner MCP endpoint: https://api.get-planner.com/api/mcp OAuth metadata: https://api.get-planner.com/.well-known/oauth-authorization-server Protected resource metadata: https://api.get-planner.com/.well-known/oauth-protected-resource/api/mcp
Manual tokens remain available for local/manual MCP clients that cannot complete OAuth. They are still required auth, not an optional extra.
Recommended manual MCP scopes: projects:read, blocks:read, blocks:write.
Planner intentionally does not accept bearer tokens in URL query params.
1) Manual fallback: initialize
curl -X POST "https://api.get-planner.com/api/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-d '{ "jsonrpc":"2.0", "id": "init-1", "method": "initialize", "params": {} }'2) Manual fallback: list tools
curl -X POST "https://api.get-planner.com/api/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-H "mcp-session-id: <SESSION_ID>" \
-d '{ "jsonrpc":"2.0", "id": "list-1", "method": "tools/list" }'3) Manual fallback: call a tool
curl -X POST "https://api.get-planner.com/api/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-H "mcp-session-id: <SESSION_ID>" \
-d '{ "jsonrpc":"2.0", "id":"call-1", "method":"tools/call", "params": { "name":"listProjects", "arguments":{} } }'Connector endpoints
| Method | Path | Use case | Scope |
|---|---|---|---|
| GET | /v1/connectors/events | Generic polling trigger for Make.com and n8n. | events:read |
| GET | /v1/connectors/zapier/triggers/events | Zapier trigger-compatible events feed. | events:read |
| POST | /v1/connectors/actions/blocks | Create schedule blocks from external workflows. | blocks:write |
Request and response payload examples are available in the app under Settings → API & Integrations.
Webhooks
Manage webhook subscriptions via /integrations/webhooks/subscriptions. Deliveries are signed using HMAC SHA-256.
signature = HMAC_SHA256(signing_secret, "{timestamp}.{raw_body}")
header: x-planner-signature: sha256=<hex_digest>
header: x-planner-timestamp: <unix_seconds>Scopes
events:readprojects:readblocks:readblocks:writewebhooks:readwebhooks:writeNeed broader integration support or an SDK package? Contact customer support to join Enterprise integration onboarding.