POST /api/schedule
Run the scheduling engine on a set of volunteers and shifts. The engine assigns volunteers to open shift slots respecting group requirements, max hours, and time-overlap constraints, then returns a fairness score and any conflicts. Authentication required: Yes —Authorization: Bearer [user_id].[signature]
Request body
List of volunteers to schedule.
Shifts that need to be filled by the engine.
Optional. Existing assignments to lock in before the engine runs. The engine will preserve these and fill remaining slots around them.
Response body
A map of
shift_id to an array of volunteer_id strings. Shifts with no assignable volunteers will not appear here — check unfilled_shifts for those.List of
shift_id values for shifts that could not be fully filled. Cross-reference with conflicts to understand why.A float representing how evenly the workload is distributed across all volunteers. Lower values indicate a more balanced schedule. A score of
0.12 is well-distributed; values closer to 1.0 indicate significant imbalance.Detailed reasons for each unfilled shift.
A map of
volunteer_id to a summary of their resulting schedule.Example
POST /api/schedule/csv
Same scheduling engine asPOST /api/schedule, but accepts CSV files via multipart/form-data instead of a JSON body. Useful for bulk imports from spreadsheet tools.
Authentication required: Yes — Authorization: Bearer [user_id].[signature]
Form fields
A CSV file with volunteer data. Use the same column structure as
sample_volunteers.csv: Name, Group, Max Hours, Email, Phone. The Email and Phone columns are metadata and are not used by the scheduling engine.A CSV file with shift data. Use the same column structure as
sample_shifts.csv: Name, Start, End, Groups.The Groups column accepts a comma-separated list of Group:Count pairs (e.g., "Delegates:2, Adults:2").Example
POST /api/schedule.
POST /api/validate
Validate a request payload without running the scheduler. The API checks the structure and types of yourvolunteers, unassigned_shifts, and current_assignments fields and returns any validation errors.
Authentication required: Yes — Authorization: Bearer [user_id].[signature]
Request body
Same schema asPOST /api/schedule — volunteers, unassigned_shifts, and optionally current_assignments.
Example
GET /api/usage
Retrieve your current API quota and usage history for your API key. Authentication required: Yes —Authorization: Bearer [user_id].[signature]
Response body
Your total daily request quota.
Number of requests made in the current billing period.
A list of recent API calls with timestamps and endpoint details.