This page maps the resources the API exposes and how they point at each other. Read it before you design a sync or a report, so you know which collection holds what. Each resource name links to its schema page, which lists every field.
Paths on this page are relative to https://<your-url>/api/v2. <your-url> is the address you sign in to plnnrly on, such as acme.plnnrly.com, or your organisation's own domain.
One organisation per host
Everything you read or write belongs to one organisation, and the host decides which one. A token works only on the host of the organisation it was created in.
Ids are unique per resource inside an organisation, not across resources and not across organisations. Project 12 and work item 12 are different records, and so are project 12 in one organisation and project 12 in another. Key your copy on the resource and the id together, and add the host if your integration serves several organisations.
GET / lists the resources your organisation has, with their paths. See Discovery.
Projects and work
A project belongs to a customer. It has a project manager, an account manager, tags, and a workflow mode that decides whether its work is planned in sprints or on a simple board.
| Resource | What it is | Where you reach it |
|---|---|---|
| Budget | A named pot of minutes on a project. Tasks are filed under it and time is logged against it. | /budgets, filtered by project_id |
| Budget group | An organisation-wide category that budgets are filed under. | /budget-groups |
| Project link | A named external URL pinned to a project, such as a staging site. | /project-links |
| Work item | One unit of work on a project's backlog and board. It has an issue key such as ACM-12, and it moves through the statuses of the project's workflow. | /work-items |
| Subtask | A checklist line on one work item. | /work-items |
| Work item link | A directed link between two work items, such as blocks or duplicates. | /work-items |
| Comment | A post in the thread of a work item or a Drive item. | /work-items |
| File | A file attached to a work item or a Drive item. | /work-items |
| Sprint | A time-boxed slice of a project's backlog. A work item with no sprint sits in the backlog. | /sprints |
| Task | A kanban card on one employee's board, filed under a budget, with an estimate in minutes. | /projects |
The issue key is built from the customer's code and a running number, so ACM-12 is a work item on a project of the customer with code ACM. Every work item path accepts the issue key in place of the numeric id.
Four different things are called a task. A work item with a work type named "task" is a backlog item. A subtask is a checklist line on a work item. A task under /projects/{project}/tasks is a kanban card. A todo under /todos is an unchecked line in a Drive document that mentions you.
Time
| Resource | What it is | Where you reach it |
|---|---|---|
| Worklog | Minutes one employee worked on one project on one day. It can also point at a task and a work item. | /worklogs |
| Timer | A running stopwatch on a work item or an event. It is deleted when it is discarded or its minutes are booked. | /timers |
Both collections return only your own rows unless you name other users. See Filters that default to you.
Drive
Drive items, folders and documents live in a drive, and a drive belongs to an owner: a project, a customer, the organisation, or one user. For those, the owner type decides which permission and which token scope apply. Notes need a drive scope in your token, but the record a note is attached to decides whether you may read or write it. Todos need the project_management grant. See Scopes and permissions.
| Resource | What it is | Where you reach it |
|---|---|---|
| Drive item | A document or file in a drive, with its title, folder, tags and sharing. | /drive-items |
| Drive folder | A folder in a drive. Items and subfolders can take their access from it. | /drive-folders |
| Drive document | The body of a document, in Markdown. The drive item points at it. | /drive-documents |
| Note | A free-text note on a project, a customer or a work item. | /notes |
| Todo | An unchecked task-list line in a document that mentions you. plnnrly rebuilds these from the document, so a todo has no stable id across edits. | /todos |
Drive items also have comments and files, under /drive-items/{drive_item}/comments and /drive-items/{drive_item}/files.
Customers
| Resource | What it is | Where you reach it |
|---|---|---|
| Customer | The record that projects, contacts, subscriptions and sales invoices hang off. | /customers |
| Contact | A customer's contact person, or an employee's emergency contact. Emergency contacts are visible only to that employee. | /contacts |
| Contact role | The list a contact's function is picked from. | /contact-roles |
| Customer category | The categories customers are grouped by. | /customer-categories |
Billing
| Resource | What it is | Where you reach it |
|---|---|---|
| Sales invoice | What a customer is billed. Its totals are the sum of its rows. | /sales-invoices |
| Sales invoice row | One line on a sales invoice. | /sales-invoices |
| Customer subscription | A recurring agreement with one customer. A renewal turns it into a sales invoice. | /customer-subscriptions |
| Subscription item | One line on a customer subscription. | /customer-subscriptions |
| Subscription type | A template that new subscriptions start from. | /subscription-types |
| Subscription type item | One template line, copied onto a subscription when the type is picked. | /subscription-types |
| Subscription product | The catalogue of what subscriptions can bill for. | /subscription-products |
| Invoice | A legacy invoice header from before sales invoices. It can be read and created, not changed. | /invoices |
Leave
| Resource | What it is | Where you reach it |
|---|---|---|
| Absence | A period an employee was away from work. | /absences |
| Holiday | A recurring named day off. It has no date of its own. | /holidays |
| Free day | One date the organisation is closed, made from a holiday or added by hand. | /free-days |
| Check-in | One attendance record, from clocking in to clocking out. | /checkins |
| Leave balance change | One entry in an employee's leave balance, in minutes. A negative value is a leave request, a positive one is a grant. | /furlough-balance-mutations |
Planning
An event is one block on a user's agenda, at /events. It can point at a kanban task, so time can be logged against it. A recurring series is one event with recurrence fields. Its occurrences are not records of their own, unless one was split off from the series in plnnrly.
Like worklogs and timers, /events returns only your own rows unless you name other users.
Organisation
| Resource | What it is | Where you reach it |
|---|---|---|
| User | A member of your organisation. Read-only. | /users, and /me for yourself |
| Company branch | One of your organisation's own locations. Customers are assigned to it. | /company-branches |
The API does not create, change or delete users. Roles, permissions and teams are not in the API at all.
Configuration
| Resource | What it is | Where you reach it |
|---|---|---|
| Workflow | A named set of statuses and the moves allowed between them. A project's workflow_id names the workflow its work items move through, and can be null. | /workflows |
| Workflow status | One status in a workflow, the column a work item sits in. | /workflow-statuses |
| Workflow transition | One allowed move from one status to another. | /workflow-transitions |
| Work type | The type a work item is filed under, such as bug or story. | /work-types |
| Label | A coloured tag for work items. Each label belongs to one project. | /labels |
Changing a work item's status is an action, not a field write. See Actions and state changes.
How records point at each other
A record points at another through a foreign key, usually named after the relation, with the related record next to it. On a work item row from GET /work-items:
{
"sprint_id": 31,
"sprint": { "id": 31 }
// 33 more fields: id, issue_key, title, priority, due_date, estimation, remaining_estimate, order, column_order, version, created_at, updated_at, project_id, task_id, workflow_status_id, work_type_id, parent_id, assignee_id, reporter_id, web_url, workflow_status, parent, assignee, reporter, work_type, comments_count, subtasks_count, attachments_count, child_work_items_count, labels_count, drive_items_count, links_count, links
}
The related record stays a bare {"id": …} until you name it in include. A few relations are always filled in, such as the customer on a project. See Views and includes.
Some fields can point at one of several kinds of record. They come as a {name}_type and {name}_id pair, plus the record itself. A Drive item's owner, for example:
{
"owner_type": "project",
"owner_id": 12,
"owner": { "id": 12 }
// 23 more fields: id, title, group, kind, source, folder_id, drive_folder, content_record_type, content_record_id, content_record, order_column, created_by, archived_by, inherits_permissions, general_access, access, created_at, updated_at, deleted_at, comments_count, files_count, tags_count, links
}
The type is always a short name, such as project, customer, organization, user, work_item or event, never an internal class name. The schema page of each resource lists the names its fields can hold. To filter on such a pair, send both halves; see Paired filters.
Areas your organisation may not have
Two areas exist only when your organisation has the feature behind them:
| Area | Resources |
|---|---|
| Billing | Sales invoices and their rows, customer subscriptions and their items, subscription types and their items, subscription products, and legacy invoices |
| Configuration (the sprints feature) | Workflows, workflow statuses, workflow transitions, work types and labels |
Sprints and work items are always there, with or without the sprints feature.
Without the feature, every operation in that area answers 404 endpoint-not-found, and GET / does not list it. Call GET / first if your integration has to work for more than one organisation.
The MCP & API switches that turn the whole API on or off are a separate thing. See For administrators.
Related
- Data formats: how dates, money, durations and empty values are written.
- Views and includes: how much of each record you get back.
- Scopes and permissions: which grant each area needs.