> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replo.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Add staff to a booking service

> **Beta** — this endpoint may change before general availability.



## OpenAPI

````yaml /api-reference/openapi.json post /booking-services/{serviceId}/staff
openapi: 3.1.0
info:
  title: Replo Public API
  version: '2026-11-10'
servers:
  - url: https://api.replo.app/v1
security: []
paths:
  /booking-services/{serviceId}/staff:
    post:
      tags:
        - Booking-staff
      summary: Add staff to a booking service
      description: '**Beta** — this endpoint may change before general availability.'
      operationId: booking-staff.add
      parameters:
        - name: Replo-Api-Version
          in: header
          required: true
          schema:
            type: string
            enum:
              - '2026-11-10'
          description: The public API version to use for this request.
        - schema:
            type: string
            format: uuid
            description: The service's id, from replo_booking_services_list
          required: true
          description: The service's id, from replo_booking_services_list
          name: serviceId
          in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                projectId:
                  type: string
                  format: uuid
                  description: The project that owns the forms, from list_projects
                scheduleId:
                  type: string
                  format: uuid
                  description: The opening hours this staff member works for this service
                staff:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - person
                        email:
                          type: string
                          format: email
                          description: >-
                            A teammate's email; they must already be on the
                            project
                        name:
                          type: string
                          minLength: 1
                          maxLength: 255
                          description: >-
                            The name visitors see; their account name if left
                            out, or the name they already have on another
                            service
                      required:
                        - kind
                        - email
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - resource
                        name:
                          type: string
                          minLength: 1
                          maxLength: 255
                          description: A table, bay or room, such as Table 4
                      required:
                        - kind
                        - name
                  description: A teammate, or a table, bay or room that isn't a person
                weight:
                  type: integer
                  minimum: 1
                  maximum: 100
                  description: >-
                    Share of bookings when the visitor doesn't pick: a host with
                    weight 2 gets about twice as many as one with weight 1
              required:
                - projectId
                - scheduleId
                - staff
              additionalProperties: false
      responses:
        '201':
          description: Add staff to a booking service
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    enum:
                      - booking_staff
                  id:
                    type: string
                    format: uuid
                  serviceId:
                    type: string
                    format: uuid
                  scheduleId:
                    type: string
                    format: uuid
                  name:
                    type: string
                  kind:
                    type: string
                    enum:
                      - person
                      - resource
                    description: 'person: a teammate; resource: a table, bay or room'
                  weight:
                    type: integer
                    minimum: 1
                    maximum: 100
                    description: >-
                      Share of bookings when the visitor doesn't pick: a host
                      with weight 2 gets about twice as many as one with weight
                      1
                required:
                  - object
                  - id
                  - serviceId
                  - scheduleId
                  - name
                  - kind
                  - weight
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '401':
          description: >-
            Missing or invalid Replo Public API token. Send an active key as
            `Authorization: Bearer replo_sk_...`; if it was revoked, create a
            new key in Replo Settings.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '403':
          description: >-
            You are not authorized to access this resource. Ask a workspace
            owner to perform this action or to grant the key's creator access.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '404':
          description: >-
            Not Found. The resource may not exist, this key may lack the
            required scope, or the key's creator may have lost access. Check the
            key's scopes in Replo Settings and the creator's project or
            workspace access; a workspace owner can grant access.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '409':
          description: The resource is in a conflicting state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '413':
          description: File content exceeds the 10 MiB limit.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '429':
          description: >-
            Too many requests. Please retry after the time indicated by the
            Retry-After header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '500':
          description: An internal error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '503':
          description: Service temporarily unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
      security:
        - bearerAuth: []
components:
  schemas:
    PublicApiError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            doc_url:
              type: string
            issues:
              type: array
              items:
                type: object
                properties:
                  param:
                    type:
                      - string
                      - 'null'
                    description: >-
                      Dotted path to the failing field within the request body,
                      query or path, e.g. "name" or "variants.0.available"; null
                      when the rule covers the whole input.
                  message:
                    type: string
                    description: Why the field was rejected.
                required:
                  - param
                  - message
              description: >-
                Present on an invalid_request whose input failed validation:
                each failing field and why, at most 10.
          required:
            - code
            - message
            - doc_url
      required:
        - error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.