Use these endpoints to read your team's resourcing schedule and to create, change or remove weekly allocations. They follow the same rules as the resourcing editor in Drum. The MCP Resourcing toolset uses the same rules too, through get_resource_schedule, preview_allocation_changes, apply_allocation_changes and delete_record with kind allocation.
All endpoints sit under /api/v1/ and need an account-scoped bearer token. See Drum API authentication, permissions and rate limits.
Permissions
Endpoint | API permission | Drum permission |
|
| Global Resourcing (view) for the whole schedule, or view or edit Project Resourcing (or a project role with resourcing access) when you send |
|
| Edit Project Resourcing, or a project role that can edit resourcing, on each change's project |
|
| Same as preview |
|
| Same as preview |
A change on a project you can't edit answers 403 resourcing_edit_not_permitted. A record on a project you can't read or resource answers 404, as if it didn't exist. Timesheet Only users can't use these endpoints. Timed allocations are read only here.
Read the schedule
GET https://app.getdrum.com/api/v1/resource_schedule?start_week=2026-11-02&end_week=2026-11-23&team_ids=3
Authorization: Bearer YOUR_API_TOKEN
Parameter | Notes |
| Any day of the week, as |
| Defaults to 8 weeks from |
| Only these people, teams (current members) or roles. Send an array or a comma list |
| Only people allocated to this project in the range, plus its unfilled role allocations |
| Only people over capacity in at least one week |
| People per page (default 10, maximum 50) and people to skip |
Each person has a figure per week, in whole minutes:
capacity_minutes: the billable target hours of their work schedule that week (38 hours if they have no schedule).unavailable_minutes: public holidays in their region plus leave.load_minutes: for each project, the larger of planned and tracked minutes, added up.other_work_minutes: the part of the load on projects you can't read. Those allocations aren't listed.free_minutes: capacity less unavailable time, less load. Negative means over-allocated.
Each allocation has a plan_revision. Send it as expected_plan_revision when you change that allocation.
Preview and apply changes
Send a list of 1 to 50 changes as {"changes": [...]}. They run in order, and a later change sees what an earlier one did. Preview first: it runs the whole list and saves nothing. Then send the same list to apply. Apply is all or nothing: if any change fails, none of them is saved and the error names the change_index.
POST https://app.getdrum.com/api/v1/allocation_changes/preview
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{"changes": [{"type": "shift", "allocation_id": 9001, "expected_plan_revision": 5, "weeks": 1}]}
type | Main inputs |
|
|
|
|
|
|
|
|
The first change on an allocation needs expected_plan_revision. If a tied allocation would end up outside its deliverable's dates, send boundary: extend moves the deliverable's dates, and detach unties the allocation.
The result lists each change with ok, plus an impact summary: the people and weeks whose planned minutes change (capacity, before, after and free minutes) and the budgets the changes draw on. remaining_cents only appears if you can see the project's money. In a preview, a failed change has ok false and an error, and the other changes still run.
Rules
No past weeks. No change can write a week before this week, and a
start_weekbefore this week answerspast_week. The exception is a resize that sends the allocation's current start unchanged. Its past weeks stay as they are. This week follows your account's time zone.One allocation per person. A person can have one allocation on a deliverable (whatever the role) and one on a task. A change that would give them a second answers
allocation_existswith the existingallocation_id, so update that one instead.Size limits. One plan covers at most 520 weeks, and one list writes at most 1,040 weeks.
Budget cap. A change that adds minutes past the remaining budget answers
over_budget, unless your role has Allow Over Budget Resourcing. The error'sbudgetnames the deliverable, task or resource line and givesremaining_minutes, the current and future minutes the allocation can hold. The cap is the same one the resourcing editor uses.total_minutesis spread over the weeks fromstart_weekand must fitminutes_per_weekin each week, or it answerstotal_does_not_fit.Clearing the last week. In the resourcing editor, clearing an allocation's last week removes the allocation. Through the API, a
set_weekto 0 on the last week answerslast_week_of_allocation. Delete the allocation instead.Busy resourcing. If another save is working on the same allocations, the change answers
409 resourcing_busyand nothing is saved. A preview gives up after 3 seconds. Wait a moment and try again.Stale revisions. If someone changed the allocation since you read it, the change answers
409 stale_statewithcurrent_plan_revision. Read the schedule again before retrying.
Delete an allocation
DELETE https://app.getdrum.com/api/v1/allocations/9002
Authorization: Bearer YOUR_API_TOKEN
An allocation with no past weeks is removed for good. One with past weeks keeps them as history and loses its current and future weeks. A task resource line that no allocation uses any more is removed with it when it can be. On MCP, use delete_record with kind allocation.
Errors
Status | code | When |
404 |
| Not on a project you can read |
403 |
| You can't read this schedule |
403 |
| You can't edit resourcing on the project |
409 |
| See Rules above |
422 |
| The list or a change is malformed |
422 |
| More than 26 schedule weeks, a plan over 520 weeks, or a list writing over 1,040 weeks |
422 |
| See Rules above |
