---
title: "Replace a schedule's roster"
method: POST
path: "/api/v1/schedules/{id}/roster"
tags: ["Contacts"]
---

# Replace a schedule's roster

`POST /api/v1/schedules/{id}/roster`

## Request

- Base URL: `https://volunteerreminder.com`
- URL: `https://volunteerreminder.com/api/v1/schedules/{id}/roster`
- Auth: HTTP bearer

Assign contacts to a schedule. REPLACES the schedule's whole roster (matches the dashboard's save-the-form semantics) — send the complete desired set of contact ids, not a delta. Every id must belong to this account or the whole request is rejected. Requires `contacts:write`.

## Path parameters

- `id` integer, required: Schedule id.

## Request body

- AssignRosterRequest
  - `contact_ids` integer[], required: The complete roster for this schedule — REPLACES any existing assignment (not additive). Pass an empty array to clear the roster. Every id must belong to this account.

## Response `200`

The roster after the change.

- AssignRosterResponse
  - `schedule_id` number, required: The schedule the roster was assigned to.
  - `contact_ids` number[], required: The schedule's roster after this change (deduplicated).

## Other responses

- `400`: The request failed schema validation (`validation_error`). On the import endpoints, also when the text is UTF-16 (Excel "Unicode Text"; `unsupported_encoding`): resend it as CSV UTF-8.
- `401`: Missing or invalid API key.
- `403`: The API key lacks a scope required by this endpoint.
- `404`: The requested resource does not exist.

---

[API](https://skmtc.dev/volunteerreminder/apis/volunteerreminder-api.md) · [All operations](https://skmtc.dev/volunteerreminder/apis/volunteerreminder-api/llms.txt) · [OpenAPI document](https://skmtc.dev/volunteerreminder/apis/volunteerreminder-api/revisions/f8e7e26ba96f?raw)
