Skip to content

Rate limits and plan rules

All plansDeveloper or integrator

Onplana counts requests and refuses the ones over a limit, so one busy client cannot slow the service down for everyone else. This page lists the limits, read from the code that enforces them, and the plan each way in needs.

A refused request answers HTTP 429 Too Many Requests. The response carries a Retry-After header: the number of seconds until the window resets. Wait that long, then send the request again. Read the header rather than the JSON body, because the body’s fields are not the same on every route.

Responses counted by the API limits below also carry X-RateLimit-Limit (the limit), X-RateLimit-Remaining (what is left in this window) and X-RateLimit-Reset (when the window resets, in Unix seconds), so a client can slow down before it is refused.

Limits are per minute and depend on the organization’s plan. Each window starts with the first request counted in it.

Route family Counted per Free Professional Business Enterprise Enterprise+ Window
Personal access tokens and OAuth tokens (REST, MCP) Token 30 120 300 No limit No limit 1 minute
Signed-in requests to /api that name an organization Organization 200 800 1200 No limit No limit 1 minute

A request made with a token counts against that token. The organization limit counts requests that carry the X-Organization-Id header, which is how the web app calls the API. A token request needs no such header; one that sends it anyway counts against both.

The free tools on the public site answer without a sign-in, so they are counted per visitor, per file and per email address instead of per organization. These limits are the same on every plan.

Route family: /api/public/ai-gantt

Counted Requests Window
Open the tool, per IP address 60 1 hour
Generate, per IP address 20 1 hour
Generate, per IP address, daily 50 1 day
Generate, across all visitors 200 1 day
Unlock the full result by email, per IP address 10 1 hour
Unlock the full result, per email address 3 1 day
Open the result in a free workspace, per IP address 3 1 hour
Open the result in a free workspace, per result 3 1 hour
Optimize with AI, per IP address 10 1 hour
Optimize with AI, per result 5 1 hour

Route family: /api/public/maturity-assessment

Counted Requests Window
Open the tool, per IP address 60 1 hour
Submit answers, per IP address 30 1 hour
Unlock the full result by email, per IP address 10 1 hour
Unlock the full result, per email address 3 1 day

Route family: /api/public/migration-cost-calculator

Counted Requests Window
Open the tool, per IP address 60 1 hour
Estimate, per IP address 30 1 hour
Unlock the full result by email, per IP address 10 1 hour
Unlock the full result, per email address 3 1 day

Route family: /api/public/migration-preview, /api/public/migration

Counted Requests Window
Open the tool, per IP address 60 1 hour
Analyze a file, per IP address 20 1 hour
The same file again (by its hash) 5 1 day
Unlock the full result by email, per IP address 10 1 hour
Unlock the full result, per email address 3 1 day

Route family: /api/public/resource-heatmap

Counted Requests Window
Open the tool, per IP address 60 1 hour
Analyze a file, per IP address 20 1 hour
The same file again (by its hash) 5 1 day
Unlock the full result by email, per IP address 10 1 hour
Unlock the full result, per email address 3 1 day

Route family: /api/public/resource-leveler

Counted Requests Window
Open the tool, per IP address 60 1 hour
Upload a file, per IP address 20 1 hour
Upload a file, per IP address, daily 50 1 day
Unlock the full result by email, per IP address 10 1 hour
Unlock the full result, per email address 3 1 day
Open the result in a free workspace, per IP address 3 1 hour
Open the result in a free workspace, per result 3 1 hour

Schedule health check and Onplana Schedule

Section titled “Schedule health check and Onplana Schedule”

Route family: /api/public/schedule

Counted Requests Window
The same file again (by its hash) 5 1 day
The same file from one desktop install 20 1 day
The same file from the desktop app, across everyone 50 1 day
The same pasted plan again (by its hash) 5 1 day
Unlock the full result, per email address 15 1 day
Join the waitlist, per email address 5 1 day
Join the waitlist, per IP address 10 1 hour
Open the result in a free workspace, per IP address 50 1 hour
Open the result in a free workspace, per result 5 1 hour
Open the tool, per IP address 120 1 minute
Desktop app upload, per IP address 30 1 hour
Desktop app requests, per install 60 1 day
Read a shared snapshot, per IP address 120 1 minute
Unlock the full result by email, per IP address 20 1 hour

Route family: /api/public/schedule-risk

Counted Requests Window
Open the tool, per IP address 60 1 hour
Upload a file, per IP address 10 1 hour
Upload a file, per IP address, daily 30 1 day
Unlock the full result by email, per IP address 10 1 hour
Unlock the full result, per email address 3 1 day
Open the result in a free workspace, per IP address 3 1 hour
Open the result in a free workspace, per result 3 1 hour

Route family: /api/public/status-report

Counted Requests Window
Open the tool, per IP address 60 1 hour
Generate, per IP address 20 1 hour
Generate, per IP address, daily 50 1 day
Generate, across all visitors 500 1 day
Unlock the full result by email, per IP address 10 1 hour
Unlock the full result, per email address 3 1 day
Door Plans Guide
REST API with a personal access token Every plan Guide
Webhooks Business and above Guide
OData reporting feed Professional and above Guide
MCP server for AI agents Every plan Guide

The MCP server for AI agents counts concurrent connections by plan: Free 2, Professional 3, Business 5, Enterprise 10, Enterprise+ Unlimited.

See Build on Onplana for what each door is for, and the pricing page for the full plan comparison.