---
title: "Retrieve a Practitioner"
method: GET
path: "/shop/practitioners/{practitionerId}"
tags: ["Practitioners"]
---

# Retrieve a Practitioner

`GET /shop/practitioners/{practitionerId}`

Use this endpoint to retrieve a single `Practitioner` model.

## Response `200`

Successfully retrieved the Practitioner

- object
  - `data` Practitioner, required — A bookable staff member — typically a therapist, instructor or stylist — that appointments and sessions can be assigned to. Practitioners own a working rota, optional commission rules, and the set of session/appointment types they are qualified to deliver.
    - `id` string, object-id, required — Stable identifier for the practitioner. Used when assigning sessions, appointments and rotas to the practitioner, and when the booking storefront resolves a slot to a specific staff member.
    - `appointment_restrictions` PractitionerAppointmentRestriction[], required
      - `id` string, required — The ID of the restriction
      - `applies_to_type` 'specific' | 'categories', required — The type of the restriction
      - `appointment_type_ids` string[] — The IDs of appointment types that this restriction applies to
      - `appointment_types` object[] — The appointment types associated with this product
        - `id` string, required
        - `name` string, required
      - `categories` object[] — The category associated with this product
        - `id` string, required
        - `name` string, required
      - `category_ids` string[] — The IDs of categories that this restriction applies to
      - `date_from` string, date, required — The first day that this restriction should apply
      - `date_to` string, date, required — The last date that this restriction should apply
      - `max_duration` integer — For a `max_duration` rule, this specifies the maximum number of minutes of the appointment type that the practitioner may offer each day.
      - `occupied_mins` integer
      - `type` 'cannot_offer' | 'max_duration' — The type of the restriction
    - `avatar` Media
      - `id` string, uuid, required — Unique identifier of the uploaded media item, returned from `createMedia`. Pass this ID into any field that accepts a media reference (logos, hero images, product images, etc.).
      - `file_name` string, required — Original filename of the uploaded asset, preserved as provided at upload time. Used for display in the media library and as a hint when serving downloads.
      - `mime_type` string, required — The mime type of the media item.
      - `original_url` string, required — The url of the media resource.
      - `size` integer, required — The size of the media item in bytes.
      - `url` string, required — The url of the converted media resource.
    - `signature` Media
      - `id` string, uuid, required — Unique identifier of the uploaded media item, returned from `createMedia`. Pass this ID into any field that accepts a media reference (logos, hero images, product images, etc.).
      - `file_name` string, required — Original filename of the uploaded asset, preserved as provided at upload time. Used for display in the media library and as a hint when serving downloads.
      - `mime_type` string, required — The mime type of the media item.
      - `original_url` string, required — The url of the media resource.
      - `size` integer, required — The size of the media item in bytes.
      - `url` string, required — The url of the converted media resource.
    - `can_offer_tags` string[], required
    - `gender` string, nullable — Self-identified gender of the practitioner, surfaced to guests who filter the booking storefront by practitioner gender. Free text — common values are `female`, `male` and `non-binary`. `null` when the practitioner hasn't supplied a value.
    - `name` string, required — Public display name of the practitioner. Shown to guests on the booking storefront and on receipts. Should be the name the practitioner wants to appear in front of guests — typically first name plus last initial or full name.
    - `registration_number` string, nullable — Optional registration or license number for the practitioner. Used to track professional credentials or qualifications.
    - `organisation_id` string, uuid, required — Organisation the practitioner belongs to. Practitioners are scoped to a single organisation and are not visible to API callers from other organisations.
    - `site_ids` string[], required
    - `tag_ids` string[], required
    - `tags` Tag[], required
      - `id` string, required
      - `name` string, required
      - `organisation_id` string, required
    - `zones` Zone[], required
      - `id` string, object-id, required — Unique identifier for the zone.
      - `name` string, required — Display name for the zone, shown wherever zones are listed or filtered. Plain text only.
      - `organisation_id` string, uuid, required — ID of the organisation that owns this zone. Inherited from the site on create.
      - `site_id` string, uuid, required — ID of the site this zone belongs to.
    - `commission_package_id` string, mongo-id, nullable — The commission package to use for this practitioner. If not set, the practitioner's default commission package will be the site's default commission package (as defined by `ShopSite.default_commission_package_id`).
    - `external_id` string, nullable, required — Optional external identifier for the practitioner, used to correlate this record with an entry in a third-party system (e.g. a PMS, payroll provider, or CRM). Not interpreted by the platform — treated as an opaque string.
    - `user_id` string, uuid, nullable, required — Staff `User` linked to this practitioner record, if any. Linking lets the user manage their own rota and view their appointments from the staff console. `null` for practitioners that don't have a login account.
    - `created_at` string, date-time, required — When then resource was created.
    - `updated_at` string, date-time, required — When then resource was last updated.

## Other responses

- `401` — The user is unauthenticated
- `403` — The authenticated user does not have permission.
- `404` — The resource couldn't be found

---

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