Last Updated: October 15, 2025
PRO workspaces can issue a one-time API access key to call ResourcePlanner's built-in REST endpoints directly. The key authenticates requests to the same server-side routes that power the web application, so you always receive normalized JSON responses.
Only one API access key can exist per workspace. Regenerating a key immediately invalidates the previous value.
All API requests must include the key in the Authorization header using the Bearer scheme:
curl https://resourceplanner.io/api/resources \
-H "Authorization: Bearer <YOUR_API_ACCESS_KEY>"The following endpoints accept bearer authentication. Payloads use camelCase fields, and responses always return the normalized ResourcePlanner shape.
| Method | Endpoint | Notes |
| ------ | -------- | ----- |
| GET | `/api/resources` | List all resources in the workspace. |
| POST | `/api/resources` | Create a new resource. |
| PUT | `/api/resources/{id}` | Update a resource (partial updates supported). |
| DELETE | `/api/resources/{id}` | Delete a resource and its assignments. |
| GET | `/api/projects` | List all projects. |
| POST | `/api/projects` | Create a project. |
| PUT | `/api/projects/{id}` | Update a project. |
| DELETE | `/api/projects/{id}` | Delete a project and its assignments. |
| GET | `/api/assignments` | Optional filters: `projectId`, `resourceId`, `dateFrom`, `dateTo`. |
| POST | `/api/assignments` | Create an assignment using camelCase payloads. |
| PUT | `/api/assignments/{id}` | Update date range, hours, note, or links. |
| DELETE | `/api/assignments/{id}` | Remove an assignment. |GET /api/assignments accepts optional projectId, resourceId, dateFrom, and dateTo query parameters to refine the list. Provide just one date to fetch everything after or before that point, or pass both to limit results to a specific window. Aliases from and to work as shorthand. When no filters are provided, you receive every assignment in the workspace.
Write endpoints accept the same payloads the web app uses internally. The examples below demonstrate how to create each entity with typical fields.
curl -X POST https://resourceplanner.io/api/resources \
-H "Authorization: Bearer <YOUR_API_ACCESS_KEY>" \
-H "Content-Type: application/json" \
-d '{
"name": "Jordan Weaver",
"email": "jordan.weaver@example.com",
"invited": true,
"role": "edit",
"capacity": 37.5,
"hourlyExpense": 45,
"hourlyRate": 110,
"workDays": [1, 2, 3, 4, 5]
}'curl -X POST https://resourceplanner.io/api/projects \
-H "Authorization: Bearer <YOUR_API_ACCESS_KEY>" \
-H "Content-Type: application/json" \
-d '{
"title": "Website Relaunch",
"color": "#2563eb",
"note": "Public roadmap initiative"
}'curl -X POST https://resourceplanner.io/api/assignments \
-H "Authorization: Bearer <YOUR_API_ACCESS_KEY>" \
-H "Content-Type: application/json" \
-d '{
"project": "PROJECT_ID",
"resource": "RESOURCE_ID",
"dateFrom": "2025-10-20",
"dateTo": "2025-10-24",
"hoursPerDay": 6,
"note": "Internal workshop prep"
}'