Skip to main content

Resourcing API

Read the resourcing schedule, preview and apply weekly allocation changes as one list, and delete allocations through the Drum API and MCP.

Written by Ben Walker

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

GET /api/v1/resource_schedule

api_read

Global Resourcing (view) for the whole schedule, or view or edit Project Resourcing (or a project role with resourcing access) when you send project_id

POST /api/v1/allocation_changes/preview

api_read

Edit Project Resourcing, or a project role that can edit resourcing, on each change's project

POST /api/v1/allocation_changes/apply

api_create or api_update

Same as preview

DELETE /api/v1/allocations/:id

api_delete

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

start_week

Any day of the week, as yyyy-mm-dd. Weeks start on Monday. Defaults to this week in your account's time zone

end_week

Defaults to 8 weeks from start_week. At most 26 weeks in all

member_ids, team_ids, resource_type_ids

Only these people, teams (current members) or roles. Send an array or a comma list

project_id

Only people allocated to this project in the range, plus its unfilled role allocations

only_over_allocated

Only people over capacity in at least one week

limit, offset

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

create

deliverable_id or task_id; member_id and/or resource_type_id (a role alone is an unfilled role; a task needs a person); start_week; end_week or num_weeks; minutes_per_week and/or total_minutes; optional distribution (even, front_loaded, back_loaded), status (tentative, confirmed) and tied (deliverables only)

update

allocation_id, expected_plan_revision, then any of the person, role, status, tied, distribution, minutes_per_week, a new start_week/end_week span, or a new total_minutes plan

shift

allocation_id, expected_plan_revision, weeks (negative moves it earlier)

set_week

allocation_id, expected_plan_revision, week, minutes (0 clears the week)

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_week before this week answers past_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_exists with the existing allocation_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's budget names the deliverable, task or resource line and gives remaining_minutes, the current and future minutes the allocation can hold. The cap is the same one the resourcing editor uses.

  • total_minutes is spread over the weeks from start_week and must fit minutes_per_week in each week, or it answers total_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_week to 0 on the last week answers last_week_of_allocation. Delete the allocation instead.

  • Busy resourcing. If another save is working on the same allocations, the change answers 409 resourcing_busy and 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_state with current_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

allocation_not_found, deliverable_not_found, task_not_found, member_not_found, resource_type_not_found, project_not_found

Not on a project you can read

403

resourcing_not_permitted

You can't read this schedule

403

resourcing_edit_not_permitted

You can't edit resourcing on the project

409

stale_state, allocation_exists, boundary_resolution_required, resourcing_busy

See Rules above

422

too_many_changes, invalid_input, missing_input, past_week, date_range_inverted

The list or a change is malformed

422

date_range_too_long, too_many_weeks

More than 26 schedule weeks, a plan over 520 weeks, or a list writing over 1,040 weeks

422

total_does_not_fit, last_week_of_allocation, over_budget, validation_failed

See Rules above

Did this answer your question?