Build on Onplana
This page is for the developer connecting another application to Onplana. It lists the five ways in that work today, what each one is for, and where its full guide lives.
| You want to | Use | Plans |
|---|---|---|
| Read and change projects and tasks from your code | The REST API with a personal access token | Every plan |
| Hear about changes as they happen | Webhooks | Business and above |
| Pull data into Power BI, Excel or a warehouse | The OData reporting feed | Professional and above |
| Let an AI agent work in Onplana | The MCP server | Every plan |
| Send approved time and expense to accounting | Accounting export (Xero, or CSV) | Onplana Services |
Connect your application
Section titled “Connect your application”Every API request carries a personal access token as a Bearer token. Create one under Settings, then Developer, grant only the scopes your integration needs, restrict it to the projects it should see, and set an expiry. A token acts as the person who made it, in one organization, and can never do more than they can. See Create API tokens.
- The API reference. The OpenAPI 3.1 spec is at
https://api.onplana.com/api/openapi.json, and the same spec as an interactive Swagger UI is at api.onplana.com/api/docs. - The organization. A token is bound to the one organization it was
made in, so a request with a token needs no organization header. If you
get 400 with the code
WORKSPACE_NOT_RESOLVED, make a new token: it will carry the organization. - Errors come back as JSON:
{ "error": "...", "code": "...", "requestId": "..." }. Theerrorsentence is safe to show; quote therequestIdwhen you write to support. - Rate limits. Some route families allow a fixed number of requests per
minute. A refused request answers 429 with a
Retry-Afterheader in seconds. Wait that long, then retry.
Hear about changes: webhooks
Section titled “Hear about changes: webhooks”A webhook POSTs a JSON payload to your URL when the events you chose
happen: tasks created, updated, deleted or moved to a new status, projects
created, updated, archived or completed, comments, members, clients and
deals. Each delivery carries an X-Webhook-Signature header, the
HMAC-SHA256 of the raw body with your webhook’s secret, so you can prove it
came from Onplana. Your endpoint has 10 seconds to answer with a 2xx, and
a webhook that fails 10 times in a row stops being delivered to until you
fix it and send a test. See Send webhooks for
the full event list and the verification code.
Read for reporting: the OData feed
Section titled “Read for reporting: the OData feed”A read-only OData v4 feed at https://api.onplana.com/api/odata serves
projects, tasks, assignments, resources, timesheet lines, custom field
values and task baselines, under the entity and column names Project Online
used, on Professional and above. Authenticate with a token that has the Reporting feed (OData)
scope. See Connect Power BI or Excel to the OData feed.
Connect an AI agent: the MCP server
Section titled “Connect an AI agent: the MCP server”The Model Context Protocol endpoint at https://mcp.onplana.com/mcp lets
Claude, ChatGPT, Cursor, Codex and any other MCP client read and manage
work in an organization, with the same permissions as the person who
connects it. Clients sign in through the browser (OAuth 2.1 with PKCE;
clients register themselves, so there is no app to create first) or with a
personal access token. See Connect an external AI agent,
and the Claude
and ChatGPT
directory guides.
What Onplana already connects to
Section titled “What Onplana already connects to”Before you build, check whether the connection exists: Microsoft Teams, SharePoint, Outlook and Google Calendar, two-way sync with Microsoft To Do, Microsoft Planner, file links from SharePoint, OneDrive, Box and Dropbox, and accounting export to Xero (QuickBooks is coming next). See Connect Google and Microsoft and Export to your accounting system.
Get listed
Section titled “Get listed”Onplana lists itself in the directories of the tools it integrates with. If you run a product and want Onplana in your app directory or marketplace, or you have built an integration you would like us to point to, write to us.
Was this helpful?
Thanks for your feedback!