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

# POST /appointments/{appointmentId}/book

> Book an appointment



## OpenAPI

````yaml /api/openapi/consumer-api.json post /appointments/{appointmentId}/book
openapi: 3.1.0
info:
  description: Consumer API for Fanfare
  title: Fanfare Consumer API
  version: 1.0.0
servers:
  - description: Production
    url: https://consumer.fanfare.io/api
  - description: Local development
    url: http://localhost:4802
security: []
paths:
  /appointments/{appointmentId}/book:
    post:
      tags:
        - Appointments
      description: Book an appointment
      operationId: postAppointmentsByAppointmentIdBook
      parameters:
        - in: path
          name: appointmentId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                locationId:
                  nullable: true
                  type: string
                slotId:
                  type: string
              required:
                - slotId
              type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  appointmentId:
                    type: string
                  bookingId:
                    type: string
                  confirmationCode:
                    type: string
                  consumerId:
                    type: string
                  createdAt:
                    type: string
                  endTime:
                    type: string
                  locationId:
                    anyOf:
                      - type: string
                      - type: 'null'
                  locationName:
                    anyOf:
                      - type: string
                      - type: 'null'
                  slotId:
                    type: string
                  startTime:
                    type: string
                  status:
                    type: string
                required:
                  - bookingId
                  - appointmentId
                  - consumerId
                  - slotId
                  - startTime
                  - endTime
                  - confirmationCode
                  - status
                  - createdAt
                type: object
          description: Appointment booked successfully
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    const: validation_error
                  issues:
                    items:
                      properties:
                        expected:
                          type: string
                        kind:
                          type: string
                        message:
                          type: string
                        path:
                          items:
                            properties:
                              input: {}
                              key:
                                type: string
                              origin:
                                type: string
                              type:
                                type: string
                            required:
                              - type
                              - origin
                              - input
                              - key
                            type: object
                          type: array
                        received:
                          type: string
                        type:
                          type: string
                      required:
                        - kind
                        - type
                        - expected
                        - received
                        - message
                        - path
                      type: object
                    type: array
                required:
                  - error
                  - issues
                type: object
          description: Bad Request - Invalid input schema
        '401':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Unauthorized - Authentication required
        '403':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden - User must be authenticated
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Internal server error

````