---
title: "Update an existing team"
method: PATCH
path: "/teams/{id}"
tags: ["teams"]
---

# Update an existing team

`PATCH /teams/{id}`

Updates an existing team, including how it assigns issues and its recurring assignment
schedule. Only provided fields are modified; supplying schedule.blocks replaces the whole
rotation, and omitting it leaves the rotation unchanged.

**Rate limit:** 120 requests per minute

## Path parameters

- `id` string, required

## Request body

- UpdateTeamRequestBody
  - `assignment_configuration` TeamAssignmentConfigurationInput
    - `assignment_method` 'routing' | 'schedule' | 'manual' — How issues are routed to team members. Setting schedule routes from this team's own schedule, so the team must already have one or be given one in the same request.
    - `only_assign_if_user_active` boolean — Whether issues are only assigned to members who are currently active.
    - `override_existing_assignee` boolean — Whether assignment replaces an existing assignee.
  - `name` string — The name of the team.
  - `schedule` TeamScheduleInput
    - `blocks` TeamScheduleBlockInput[] — Who receives issues and when. If provided, the schedule's blocks will be updated to be exactly the given blocks.
      - `days` string[] — The days this block covers, for example ["monday","tuesday"]. Required unless recurrence is daily, which covers every day.
      - `end_time` string, required — When the block ends, as HH:MM in the schedule's timezone. An end at or before the start means the next day, so 22:00 to 10:00 is an overnight shift and 00:00 to 00:00 is a full day. A block cannot run longer than 24 hours.
      - `recurrence` 'weekly' | 'biweekly' | 'daily' — How often the block repeats. Defaults to weekly. A block recurs indefinitely; to change a rotation, send the new set of blocks.
      - `start_time` string, required — When the block starts, as HH:MM in the schedule's timezone.
      - `team_id` string — The ID of the sub-team that receives issues during this block. Must already be a sub-team of the team that owns the schedule.
      - `user_id` string — The ID of the team member who receives issues during this block. Exactly one of user_id or team_id is required.
      - `week_offset` integer — Which of the two alternating weeks a biweekly block falls on, 0 or 1.
    - `support_hours_id` string — The ID of the support hours the schedule is limited to.
    - `timezone` string — The IANA timezone the block start times are read in. Defaults to America/Los_Angeles.
  - `user_ids` string[] — The list of user IDs to add to the team. If provided, the team members will be updated to be exactly the given users.

## Response `200`

- UpdateTeamResponseBody
  - `data` Team
    - `assignment_configuration` TeamAssignmentConfiguration
      - `assignment_method` string — How issues are routed to team members. One of routing, schedule, manual, pull_queue.
      - `only_assign_if_user_active` boolean — Whether issues are only assigned to members who are currently active.
      - `override_existing_assignee` boolean — Whether assignment replaces an existing assignee.
      - `team_schedule_id` string — The ID of the schedule this team assigns from. Read-only; a team has at most one schedule.
    - `id` string — The ID of the team.
    - `name` string — The name of the team.
    - `schedule` TeamSchedule
      - `blocks` TeamScheduleBlock[] — Who receives issues and when.
        - `days` string[] — The days this block covers. Empty when the recurrence is daily.
        - `end_time` string — When the block ends, as HH:MM in the schedule's timezone. An end at or before the start means the next day.
        - `recurrence` string — How often the block repeats: weekly, biweekly, or daily. A block configured in the Pylon app with a recurrence these fields cannot express reads as custom, with the fields above omitted.
        - `start_time` string — When the block starts, as HH:MM in the schedule's timezone.
        - `team_id` string — The sub-team that receives issues during this block.
        - `user_id` string — The team member who receives issues during this block.
        - `week_offset` integer — Which of the two alternating weeks a biweekly block falls on.
      - `id` string — The ID of the schedule.
      - `support_hours_id` string — The ID of the support hours the schedule is limited to.
      - `timezone` string — The IANA timezone the block hours are read in.
    - `users` MiniUser[] — The users in the team.
      - `email` string — The email of the user.
      - `id` string — The ID of the user.
  - `request_id` string — The request ID for tracking.

## Other responses

- `400` — The request was invalid or could not be completed.
- `403` — The authenticated caller or organization is not allowed to access this endpoint or operation.
- `404`
- `500` — An unexpected internal error occurred.

## Changes

- **2026-09-02** `cef2ab0dd800` — 4 info
  - added the new optional request property `assignment_configuration`
  - added the new optional request property `schedule`
  - added the optional property `data/assignment_configuration` to the response with the `200` status
  - added the optional property `data/schedule` to the response with the `200` status
- **2026-08-28** `fe3adb90ea45` — 1 info
  - added the non-success response with the status `403`

[Change history](https://skmtc.dev/usepylon/apis/pylon-api/changes/teams/:id/patch.md)

---

[API](https://skmtc.dev/usepylon/apis/pylon-api.md) · [All operations](https://skmtc.dev/usepylon/apis/pylon-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/usepylon/pylon-api/revisions/cef2ab0dd800/schema)
