---
title: "Update Staff Member"
method: PUT
path: "/v1/smb/staff/{staff_id}"
tags: ["smb", "SMB"]
---

# Update Staff Member

`PUT /v1/smb/staff/{staff_id}`

## Request

- Base URL: `https://api.elevenlabs.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.elevenlabs.io/v1/smb/staff/{staff_id}`
- Auth: none declared

Update an existing staff member. Only the fields sent are changed.

## Path parameters

- `staff_id` string, required

## Headers

- `xi-api-key` string, nullable: Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.
- `xi-workspace-id` string, nullable: The customer workspace a reseller's API key acts on.

## Request body

- BodySmbUpdateStaffMember
  - `request` SMBUpdateStaffRequestPatch, required
    - `groups` SMBGroupMembership[]: Group memberships for this item. Each entry carries the group label and the item's 0-based rank within that group.
      - `label` string, required
      - `rank` integer: 0-based display position within this group in the dashboard. Change it with the reorder endpoint; send back the value you read to keep the order, a membership sent without it goes to position 0.
    - `ungrouped_rank` integer, nullable: Display position among items with no group; `null` sorts last. Change it with the reorder endpoint.
    - `name` string
    - `description` string
    - `is_active` boolean: Whether the staff member can be booked. Inactive staff keep their booking history.
    - `email` string: Email address of the staff member.
    - `phone` string
    - `sms_notifications_opted_in` boolean: Whether this staff member currently receives SMS booking notifications. Defaults to opted out — a staff member must be explicitly opted in (mirroring the client SMS default); flipped to False automatically when they reply STOP to the workspace number.
    - `photo_url` string, uri, nullable
    - `location_id` string, nullable: Location this staff member is assigned to; empty means available at all locations.
    - `working_hours` WorkingHours
      - `hours` object
      - `timezone` string, zoneinfo, nullable: Timezone these wall-clock hours are interpreted in. None means inherit the business timezone (agent_info.timezone); use ``effective_timezone(business_tz)`` to resolve the cascade.
    - `display_on_booking_page` boolean: Whether customers can see and pick this staff member by name on the booking page. False keeps them bookable, just not shown by name.
    - `customer_facing_name` string

## Response `200`

Successful Response

- SMBStaffResourceDBModel: Represents a staff member who can provide services. Inherits all staff fields from SMBStaffBase and adds database-specific fields.
  - `groups` SMBGroupMembership[]: Group memberships for this item. Each entry carries the group label and the item's 0-based rank within that group.
    - `label` string, required
    - `rank` integer: 0-based display position within this group in the dashboard. Change it with the reorder endpoint; send back the value you read to keep the order, a membership sent without it goes to position 0.
  - `ungrouped_rank` integer, nullable: Display position among items with no group; `null` sorts last. Change it with the reorder endpoint.
  - `name` string, required
  - `description` string
  - `is_active` boolean: Whether the staff member can be booked. Inactive staff keep their booking history.
  - `email` string: Email address of the staff member.
  - `phone` string
  - `sms_notifications_opted_in` boolean: Whether this staff member currently receives SMS booking notifications. Defaults to opted out — a staff member must be explicitly opted in (mirroring the client SMS default); flipped to False automatically when they reply STOP to the workspace number.
  - `photo_url` string, uri, nullable
  - `location_id` string, nullable: Location this staff member is assigned to; empty means available at all locations.
  - `working_hours` WorkingHours
    - `hours` object
    - `timezone` string, zoneinfo, nullable: Timezone these wall-clock hours are interpreted in. None means inherit the business timezone (agent_info.timezone); use ``effective_timezone(business_tz)`` to resolve the cascade.
  - `display_on_booking_page` boolean: Whether customers can see and pick this staff member by name on the booking page. False keeps them bookable, just not shown by name.
  - `customer_facing_name` string
  - `_id` string, required
  - `created_at_unix` integer: Unix timestamp (seconds since epoch)
  - `updated_at_unix` integer: Unix timestamp (seconds since epoch)

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-28** `0e2bfc751634`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/changes/v1/smb/staff/:staff_id/put.md)

---

[API](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation.md) - [All operations](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/llms.txt) - [OpenAPI document](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/revisions/0e2bfc751634?raw)
