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

# Create a booking

> Create a new booking



## OpenAPI

````yaml /openapi.json post /booking/
openapi: 3.1.0
info:
  title: Cal ID API
  description: >-
    API documentation for external developers integrating with Cal ID. This
    documentation is auto-generated from our OpenAPI specification and includes
    details on all available endpoints, request/response schemas, and
    authentication methods.


    Authentication is required for all endpoints and can be done using API key
    generated from the Cal ID dashboard under the `settings/developer/api-keys`
    page. Use the Authorization header with the Bearer scheme to authenticate
    your requests.


    Example:

    - API Key: `Authorization: Bearer calid_xxxxx`


    Note: To manage Team's resources use the Team's owner/admin API key
  version: 1.0.0
  contact:
    name: API Support
    email: support@cal.id
    url: https://cal.id
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
  - url: https://api.cal.id
    description: 'Production server '
security:
  - bearerAuth: []
tags:
  - name: Health
    description: Health check endpoints
  - name: Users
    description: User management endpoints
  - name: Event Types
    description: Event type management endpoints
  - name: Teams
    description: Team management endpoints
  - name: Team Event Types
    description: Event type management endpoints for teams
  - name: Team Memberships
    description: Membership management endpoints for teams
  - name: Team Schedules
    description: Schedule management endpoints for teams
  - name: Availability
    description: User availability management endpoints
  - name: Schedule
    description: User schedule management endpoints
  - name: Slots
    description: Available slots retrieval endpoints
  - name: Booking
    description: Event booking endpoints
paths:
  /booking/:
    post:
      tags:
        - Booking
      summary: Create a booking
      description: Create a new booking
      operationId: create_booking
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                eventTypeId:
                  type: integer
                  exclusiveMinimum: 0
                  description: Unique identifier for the event type
                  example: 12
                  minimum: 1
                eventTypeSlug:
                  type: string
                  minLength: 1
                  description: >-
                    Event type slug selector. Accepted formats: `<slug>` for
                    your own event type, `<username>/<slug>` (owner-prefixed
                    user format), or `team/<teamSlug>/<slug>` for team event
                    types.
                  example: john-doe/discovery-call-30
                start:
                  type: string
                  format: date-time
                  description: >-
                    Booking start time (ISO 8601, e.g.,
                    '2025-10-09T14:30:00+05:30')
                  example: '2026-05-02T10:00:00.000Z'
                end:
                  type: string
                  format: date-time
                  description: >-
                    Booking end time (ISO 8601, e.g.,
                    '2025-10-09T15:00:00+05:30')
                  example: '2026-05-02T10:30:00.000Z'
                timeZone:
                  type: string
                  description: >-
                    IANA timezone identifier (e.g., 'Asia/Kolkata',
                    'America/New_York')
                  default: Asia/Kolkata
                  example: Asia/Kolkata
                responses:
                  type: object
                  properties:
                    name:
                      anyOf:
                        - type: string
                          minLength: 1
                        - type: object
                          properties:
                            firstName:
                              type: string
                            lastName:
                              type: string
                          additionalProperties: false
                      default: John Doe
                      description: >-
                        Booker's full name or name object with
                        firstName/lastName
                    email:
                      type: string
                      format: email
                      description: Booker's email address
                    location:
                      anyOf:
                        - type: string
                        - type: object
                          properties:
                            value:
                              type: string
                            optionValue:
                              type: string
                          required:
                            - value
                            - optionValue
                          additionalProperties: false
                      default:
                        value: integrations:google:meet
                        optionValue: ''
                      description: >-
                        Meeting location - string like
                        'integrations:google:meet' or object with
                        value/optionValue
                    phone:
                      type: string
                      description: Booker's phone number
                    guests:
                      type: array
                      items:
                        type: string
                        format: email
                      default: []
                      description: Array of guest email addresses
                    notes:
                      type: string
                      description: Additional notes or comments from the booker
                  required:
                    - email
                  additionalProperties: true
                  description: Booking form responses containing attendee details
                  example:
                    name: Jane Doe
                    email: jane@example.com
                    location:
                      value: integrations:google:meet
                      optionValue: ''
                    guests: []
                language:
                  type: string
                  default: en
                  description: >-
                    Language code for email communications (e.g., 'en', 'es',
                    'fr')
                  example: en
                metadata:
                  type: object
                  additionalProperties: {}
                  default: {}
                  description: Additional metadata for the booking
                  example: {}
              required:
                - start
                - end
                - responses
              additionalProperties: false
              example:
                eventTypeId: 12
                start: '2026-05-02T10:00:00.000Z'
                end: '2026-05-02T10:30:00.000Z'
                responses:
                  name: Jane Doe
                  email: jane@example.com
                  location:
                    value: integrations:google:meet
                    optionValue: ''
        required: true
      responses:
        '200':
          description: Booking created
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - true
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                      uid:
                        type: string
                      userId:
                        type: integer
                      status:
                        type: string
                        enum:
                          - PENDING
                          - ACCEPTED
                          - CANCELLED
                          - REJECTED
                      startTime:
                        type: string
                      endTime:
                        type: string
                      paymentRequired:
                        type: boolean
                      paymentUid:
                        type: string
                      paymentId:
                        type: integer
                      isDryRun:
                        type: boolean
                    additionalProperties: {}
                  message:
                    type: string
                  meta:
                    type: object
                    properties:
                      pagination:
                        type: object
                        properties:
                          page:
                            type: number
                          limit:
                            type: number
                          total:
                            type: number
                          totalPages:
                            type: number
                        required:
                          - page
                          - limit
                          - total
                          - totalPages
                        additionalProperties: false
                    additionalProperties: {}
                required:
                  - success
                additionalProperties: false
                description: Booking created
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                  message:
                    type: string
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      details: {}
                    required:
                      - code
                      - message
                    additionalProperties: false
                required:
                  - success
                  - message
                  - error
                additionalProperties: false
                description: Bad Request
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                  message:
                    type: string
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      details: {}
                    required:
                      - code
                      - message
                    additionalProperties: false
                required:
                  - success
                  - message
                  - error
                additionalProperties: false
                description: Unauthorized
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                  message:
                    type: string
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      details: {}
                    required:
                      - code
                      - message
                    additionalProperties: false
                required:
                  - success
                  - message
                  - error
                additionalProperties: false
                description: Internal Server Error
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT | API Key
      description: |-

        Use the Authorization header with Bearer scheme.

        Examples:
        - API Key: Authorization: Bearer calid_xxxxx
            

````

## Related topics

- [Create a booking](/docs/developers/guides/create-a-booking.md)
- [Mastering the Unified Calendar in Cal ID](/docs/getting-started/unified-calendar.md)
- [Create a webhook](/docs/api-reference/webhook/create-a-webhook.md)
- [Create a team](/docs/api-reference/teams/create-a-team.md)
- [Create a schedule](/docs/api-reference/schedule/create-a-schedule.md)
