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

# Create a booking

> Books a slot on an event type. Free event types confirm immediately; paid event types return a `pending` booking whose `checkout_url`(via the linked checkout) must be paid to confirm.



## OpenAPI

````yaml /developer/api-reference/openapi.json post /bookings
openapi: 3.1.1
info:
  title: Crevio API V1
  version: 1.0.0
  description: >
    API for the Crevio creator platform — a multi-tenant SaaS for digital
    product sales.

    Uses snake_case keys following Stripe conventions. All resource IDs are
    string IDs (e.g., "prod_abc123").
  contact:
    email: support@crevio.co
    name: Crevio Support
    url: https://crevio.co/docs
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://api.crevio.co/v1
    description: Production
security:
  - ApiKey: []
tags:
  - name: Account
    description: Current account information
  - name: Analytics
    description: Account-wide business analytics
  - name: BlogCategories
    description: Blog post categories
  - name: BlogPosts
    description: Blog content management
  - name: Carts
    description: Shopping cart management
  - name: CheckoutLinks
    description: Shareable checkout links
  - name: Checkouts
    description: Checkout session management
  - name: Customers
    description: Customer relationship management
  - name: Discounts
    description: Discount code management
  - name: Emails
    description: Email sending
  - name: Experiences
    description: Digital experiences (courses, communities, downloads)
  - name: Files
    description: File uploads and external media management
  - name: FormSubmissions
    description: Form submission management
  - name: FormationDocuments
    description: Documents generated for a formation
  - name: Formations
    description: Whitelabel business formation via doola Partner API
  - name: Forms
  - name: Invoices
    description: Invoice creation, payment, and lifecycle management
  - name: LegalPages
  - name: Me
    description: Current user profile
  - name: OrderItems
    description: Order line items
  - name: Orders
    description: Order history and details
  - name: PriceVariants
    description: Product pricing tiers
  - name: Products
    description: Digital product catalog
  - name: Refunds
    description: Refund management
  - name: Reviews
    description: Product reviews
  - name: Socials
    description: Social media management (accounts, posts, media).
  - name: Subscriptions
    description: Subscription lifecycle management (cancel, pause, resume)
  - name: Tags
    description: Customer tags
  - name: TaskRuns
    description: Individual execution records for AI tasks.
  - name: Tasks
    description: >-
      AI tasks — scheduled or event-triggered agentic work (cron, interval,
      once, immediate, event).
  - name: WebhookEndpoints
    description: Webhook endpoint management
  - name: WebhookEvents
    description: Webhook event delivery history
  - name: Leads
    description: Find, verify and enrich business leads (Hunter.io-backed).
  - name: Ads
    description: >-
      Paid advertising — campaigns, ad groups, ads, audiences, targeting, leads,
      conversions, and reports across Meta, Google, TikTok, LinkedIn, Pinterest,
      and X.
  - name: Domains
    description: Custom web domains for your sites.
  - name: Web
    description: >-
      Web search & scraping (search, read, map, crawl, extract, research),
      backed by Firecrawl.
  - name: Skills
    description: >-
      AI skills marketplace — search the catalog and install or uninstall skills
      for your account's agent.
  - name: Schedules
    description: Reusable availability schedules that back event types.
  - name: EventTypes
    x-displayName: Event Types
    description: Bookable services customers can schedule time on.
  - name: Bookings
    description: Reservations made against event types.
  - name: Connections
    description: Third-party app connections (connect, list, execute)
  - name: Approvals
    description: Human-in-the-loop approvals for gated actions
  - name: Logs
    description: Account activity log
paths:
  /bookings:
    post:
      tags:
        - Bookings
      summary: Create a booking
      description: >-
        Books a slot on an event type. Free event types confirm immediately;
        paid event types return a `pending` booking whose `checkout_url`(via the
        linked checkout) must be paid to confirm.
      operationId: createBooking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                event_type_id:
                  type: string
                  example: etype_abc123
                start_time:
                  type: string
                  format: date-time
                  description: UTC slot start (from the slots endpoint).
                time_zone:
                  type: string
                  example: America/New_York
                  description: Attendee's timezone (for their confirmation/reminders).
                attendee:
                  type: object
                  properties:
                    name:
                      type: string
                    email:
                      type: string
                      format: email
                    phone:
                      type: string
                      nullable: true
                  required:
                    - email
                intake_answers:
                  type: array
                  items:
                    type: object
                    additionalProperties: true
                  description: >-
                    Answers to the event type's intake form (when one is
                    attached). Stored as a FormSubmission.
                price_variant_id:
                  type: string
                  example: pv_abc123
                  description: >-
                    For paid event types: which price variant to charge.
                    Defaults to the experience's first paid variant. The
                    response includes a `checkout` with a `purchase_url` —
                    redirect the customer there to pay; the booking confirms
                    once paid.
              required:
                - event_type_id
                - start_time
                - attendee
      responses:
        '201':
          description: The created booking
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Booking'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          description: The requested slot is no longer available.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                        enum:
                          - slot_unavailable
                      message:
                        type: string
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - ApiKey: []
      x-codeSamples:
        - lang: typescript
          label: Typescript (SDK)
          source: |-
            import { Crevio } from "@crevio/sdk";

            const crevio = new Crevio({
              apiKey: process.env["CREVIO_API_KEY"] ?? "",
            });

            async function run() {
              const result = await crevio.bookings.create({
                eventTypeId: "etype_abc123",
                startTime: new Date("2026-02-01T21:30:21.072Z"),
                timeZone: "America/New_York",
                attendee: {
                  email: "Trey77@hotmail.com",
                },
                priceVariantId: "pv_abc123",
              });

              console.log(result);
            }

            run();
components:
  schemas:
    Booking:
      type: object
      properties:
        object:
          type: string
        id:
          type: string
        event_type_id:
          type: string
        customer_id:
          type:
            - string
            - 'null'
        order_id:
          type:
            - string
            - 'null'
        status:
          type: string
          enum:
            - pending
            - confirmed
            - cancelled
            - completed
            - no_show
        time_zone:
          type: string
        attendee_name:
          type:
            - string
            - 'null'
        attendee_email:
          type:
            - string
            - 'null'
        attendee_phone:
          type:
            - string
            - 'null'
        location_details:
          type:
            - string
            - 'null'
        meet_url:
          type:
            - string
            - 'null'
        cancel_reason:
          type:
            - string
            - 'null'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        intake_answers:
          type: array
          items:
            type: object
        start_time:
          type: string
          format: date-time
        end_time:
          type: string
          format: date-time
        cancelled_at:
          type:
            - string
            - 'null'
          format: date-time
        event_type:
          oneOf:
            - type: string
            - $ref: '#/components/schemas/EventType'
            - type: 'null'
          description: ID by default, full object when expanded
        checkout:
          oneOf:
            - type: string
            - $ref: '#/components/schemas/Checkout'
            - type: 'null'
          description: ID by default, full object when expanded
      required:
        - object
        - id
        - event_type_id
        - customer_id
        - order_id
        - status
        - time_zone
        - attendee_name
        - attendee_email
        - attendee_phone
        - location_details
        - meet_url
        - cancel_reason
        - created_at
        - updated_at
        - intake_answers
        - start_time
        - end_time
        - cancelled_at
    EventType:
      type: object
      properties:
        object:
          type: string
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        duration_minutes:
          type: integer
        buffer_before_minutes:
          type: integer
        buffer_after_minutes:
          type: integer
        min_notice_minutes:
          type: integer
        booking_window_days:
          type: integer
        max_per_day:
          type:
            - integer
            - 'null'
        reminder_minutes:
          type: array
          items:
            type: number
        location_type:
          type: string
          enum:
            - google_meet
            - zoom
            - custom_link
            - physical
            - phone
        location_details:
          type:
            - string
            - 'null'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        form_id:
          type:
            - string
            - 'null'
        form:
          oneOf:
            - type: string
            - $ref: '#/components/schemas/Form'
            - type: 'null'
          description: ID by default, full object when expanded
        free:
          type: boolean
        schedule_id:
          type:
            - string
            - 'null'
        product_id:
          type:
            - string
            - 'null'
        price_variants:
          type: array
          items:
            $ref: '#/components/schemas/PriceVariant'
      required:
        - object
        - id
        - name
        - slug
        - duration_minutes
        - buffer_before_minutes
        - buffer_after_minutes
        - min_notice_minutes
        - booking_window_days
        - max_per_day
        - reminder_minutes
        - location_type
        - location_details
        - created_at
        - updated_at
        - form_id
        - free
        - schedule_id
        - product_id
        - price_variants
    Checkout:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
        status:
          type: string
          enum:
            - open
            - complete
            - abandoned
            - expired
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        mode:
          type: string
        currency:
          type:
            - string
            - 'null'
        total:
          type: number
        purchase_url:
          type: string
        customer:
          oneOf:
            - type: string
            - $ref: '#/components/schemas/Customer'
            - type: 'null'
          description: ID by default, full object when expanded
        checkout_items:
          type: array
          items:
            $ref: '#/components/schemas/CheckoutItem'
      required:
        - id
        - object
        - status
        - created_at
        - updated_at
        - mode
        - currency
        - total
        - purchase_url
        - checkout_items
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - api_error
                - invalid_request_error
                - validation_error
            code:
              type: string
            message:
              type: string
            param:
              type: string
            errors:
              type: object
          required:
            - type
            - message
      required:
        - error
    Form:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
        name:
          type: string
        settings:
          type: object
        tag_ids:
          type: array
          items:
            type: integer
        archived_at:
          type:
            - string
            - 'null'
          format: date-time
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        confirmation_required:
          type: boolean
        form_fields:
          type: array
          items:
            $ref: '#/components/schemas/FormField'
      required:
        - id
        - object
        - name
        - settings
        - tag_ids
        - archived_at
        - created_at
        - updated_at
        - confirmation_required
        - form_fields
    PriceVariant:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
        name:
          type: string
        amount:
          type:
            - integer
            - 'null'
        amount_type:
          type: string
          enum:
            - free
            - fixed
            - custom
        billing_type:
          type: string
          enum:
            - subscription
            - one_time
            - payment_plan
        recurring_interval:
          type:
            - string
            - 'null'
          enum:
            - day
            - week
            - month
            - year
            - null
        interval_count:
          type: integer
        installment_count:
          type:
            - integer
            - 'null'
        setup_fee_amount:
          type:
            - integer
            - 'null'
        trial_period_days:
          type:
            - integer
            - 'null'
        revoke_after_days:
          type:
            - integer
            - 'null'
        quantity_available:
          type:
            - integer
            - 'null'
        archived:
          type:
            - boolean
            - 'null'
        position:
          type: integer
        hidden:
          type:
            - boolean
            - 'null'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        currency:
          type:
            - string
            - 'null'
        discounted_from_amount:
          type:
            - integer
            - 'null'
        minimum_amount:
          type:
            - integer
            - 'null'
        maximum_amount:
          type:
            - integer
            - 'null'
        preset_amount:
          type:
            - integer
            - 'null'
        waitlist:
          type: boolean
        benefits:
          type: array
          items:
            type: string
        purchase_url:
          type: string
        product:
          type: string
      required:
        - id
        - object
        - name
        - amount
        - amount_type
        - billing_type
        - recurring_interval
        - interval_count
        - installment_count
        - setup_fee_amount
        - trial_period_days
        - revoke_after_days
        - quantity_available
        - archived
        - position
        - hidden
        - created_at
        - updated_at
        - currency
        - discounted_from_amount
        - minimum_amount
        - maximum_amount
        - preset_amount
        - waitlist
        - purchase_url
        - product
    Customer:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
        email:
          type: string
        name:
          type:
            - string
            - 'null'
        first_name:
          type:
            - string
            - 'null'
        last_name:
          type:
            - string
            - 'null'
        customer_type:
          type: string
          enum:
            - paid
            - free
            - lead
        notes:
          type:
            - string
            - 'null'
        confirmed_at:
          type:
            - string
            - 'null'
          format: date-time
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        orders_count:
          type: integer
        total_spend:
          type: number
        tags:
          type: array
      required:
        - id
        - object
        - email
        - name
        - first_name
        - last_name
        - customer_type
        - notes
        - confirmed_at
        - created_at
        - updated_at
        - orders_count
        - total_spend
        - tags
    CheckoutItem:
      type: object
      properties:
        object:
          type: string
        quantity:
          type: integer
        price_variant:
          type: string
        product:
          type:
            - string
            - 'null'
      required:
        - object
        - quantity
        - price_variant
        - product
    FormField:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
        name:
          type: string
        field_type:
          type: string
          enum:
            - email
            - text
            - phone
            - textarea
            - radio
            - select
            - checkbox
        required:
          type:
            - boolean
            - 'null'
        position:
          type:
            - integer
            - 'null'
        options:
          type: array
          items:
            type: string
      required:
        - id
        - object
        - name
        - field_type
        - required
        - position
        - options
  responses:
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: invalid_request_error
              code: bad_request
              message: The request was malformed or contained invalid parameters
    Unauthorized:
      description: Authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: invalid_request_error
              code: authentication_required
              message: You did not provide an API key.
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: invalid_request_error
              code: forbidden
              message: You do not have permission to perform this action
    UnprocessableEntity:
      description: Validation error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: validation_error
              code: validation_failed
              message: Email is required
              errors:
                email:
                  - can't be blank
    InternalServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: api_error
              code: internal_error
              message: An unexpected error occurred
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: Authorization
      description: 'API key in the format: Bearer {api_token}'

````