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

# Create a workflow

> Create an event-type workflow owned by the authenticated user. Not available to third-party OAuth access tokens.



## OpenAPI

````yaml /api-reference/v2/openapi.json post /v2/workflows
openapi: 3.0.0
info:
  title: Cal.com API v2
  description: ''
  version: 1.0.0
  contact: {}
servers: []
security: []
tags: []
paths:
  /v2/workflows:
    post:
      tags:
        - Workflows
      summary: Create a workflow
      description: >-
        Create an event-type workflow owned by the authenticated user. Not
        available to third-party OAuth access tokens.
      operationId: UserWorkflowsController_createWorkflow
      parameters:
        - name: cal-api-version
          in: header
          description: >-
            Must be set to 2026-09-22 to use this version of the workflow
            endpoints.
          required: true
          schema:
            type: string
            example: '2026-09-22'
        - name: Authorization
          in: header
          description: >-
            value must be `Bearer <token>` where `<token>` is api key prefixed
            with cal_, managed user access token, or OAuth access token
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEventTypeWorkflowDto_2026_09_22'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetEventTypeWorkflowOutput_2026_09_22'
components:
  schemas:
    CreateEventTypeWorkflowDto_2026_09_22:
      type: object
      properties:
        name:
          type: string
          description: Name of the workflow
          example: Platform Test Workflow
        activation:
          description: Activation settings for the workflow
          allOf:
            - $ref: '#/components/schemas/WorkflowActivationDto_2026_09_22'
        trigger:
          description: >-
            Trigger configuration for the event-type workflow, allowed triggers
            are
            beforeEvent,eventCancelled,newEvent,afterEvent,rescheduleEvent,afterHostsCalVideoNoShow,afterGuestsCalVideoNoShow,bookingRejected,bookingRequested,bookingPaymentInitiated,bookingPaid,bookingNoShowUpdated
          oneOf:
            - $ref: '#/components/schemas/OnBeforeEventTriggerDto'
              title: Before Event
            - $ref: '#/components/schemas/OnAfterEventTriggerDto'
              title: After Event
            - $ref: '#/components/schemas/OnCancelTriggerDto'
              title: Event Cancelled
            - $ref: '#/components/schemas/OnCreationTriggerDto'
              title: New Event
            - $ref: '#/components/schemas/OnRescheduleTriggerDto'
              title: Event Rescheduled
            - $ref: '#/components/schemas/OnAfterCalVideoGuestsNoShowTriggerDto'
              title: After Guest No-Show
            - $ref: '#/components/schemas/OnAfterCalVideoHostsNoShowTriggerDto'
              title: After Host No-Show
            - $ref: '#/components/schemas/OnRejectedTriggerDto'
              title: Booking Rejected
            - $ref: '#/components/schemas/OnRequestedTriggerDto'
              title: Booking Requested
            - $ref: '#/components/schemas/OnPaidTriggerDto'
              title: Booking Paid
            - $ref: '#/components/schemas/OnPaymentInitiatedTriggerDto'
              title: Booking Payment Initiated
            - $ref: '#/components/schemas/OnNoShowUpdateTriggerDto'
              title: Booking No-Show Updated
        steps:
          type: array
          minItems: 1
          description: >-
            Steps to execute as part of the event-type workflow, allowed steps
            are
            email_host,email_attendee,email_address,sms_attendee,sms_number,whatsapp_attendee,whatsapp_number,cal_ai_phone_call,paths,filter
          items:
            oneOf:
              - $ref: '#/components/schemas/CreatePathsWorkflowStepDto_2026_09_22'
                title: Paths
              - $ref: '#/components/schemas/CreateFilterWorkflowStepDto_2026_09_22'
                title: Filter
              - $ref: '#/components/schemas/WorkflowEmailAddressStepDto_2026_09_22'
                title: Email Address
              - $ref: '#/components/schemas/WorkflowEmailAttendeeStepDto_2026_09_22'
                title: Email Attendee
              - $ref: '#/components/schemas/WorkflowEmailHostStepDto_2026_09_22'
                title: Email Host
              - $ref: >-
                  #/components/schemas/WorkflowPhoneWhatsAppAttendeeStepDto_2026_09_22
                title: WhatsApp Attendee
              - $ref: >-
                  #/components/schemas/WorkflowPhoneWhatsAppNumberStepDto_2026_09_22
                title: WhatsApp Number
              - $ref: '#/components/schemas/WorkflowPhoneNumberStepDto_2026_09_22'
                title: SMS Number
              - $ref: '#/components/schemas/WorkflowPhoneAttendeeStepDto_2026_09_22'
                title: SMS Attendee
              - $ref: '#/components/schemas/WorkflowWebhookStepDto_2026_09_22'
                title: Webhook
      required:
        - name
        - activation
        - trigger
        - steps
    GetEventTypeWorkflowOutput_2026_09_22:
      type: object
      properties:
        status:
          enum:
            - success
            - error
          type: string
          description: Indicates the status of the response
          example: success
        data:
          $ref: '#/components/schemas/EventTypeWorkflowOutput_2026_09_22'
      required:
        - status
        - data
    WorkflowActivationDto_2026_09_22:
      type: object
      properties:
        isActiveOnAllEventTypes:
          type: boolean
          default: false
          description: Whether the workflow is active for all the event-types
          example: false
        activeOnEventTypeIds:
          default: []
          description: >-
            List of event-types IDs the workflow applies to, required if
            isActiveOnAllEventTypes is false
          example:
            - 698191
          type: array
          items:
            type: number
      required:
        - isActiveOnAllEventTypes
    OnBeforeEventTriggerDto:
      type: object
      properties:
        offset:
          description: >-
            Offset before/after the trigger time; required for BEFORE_EVENT,
            AFTER_EVENT, and FORM_SUBMITTED_NO_EVENT
          allOf:
            - $ref: '#/components/schemas/WorkflowTriggerOffsetDto'
        type:
          default: beforeEvent
          enum:
            - beforeEvent
          type: string
          description: Trigger type for the workflow
          example: beforeEvent
      required:
        - offset
        - type
    OnAfterEventTriggerDto:
      type: object
      properties:
        offset:
          description: >-
            Offset before/after the trigger time; required for BEFORE_EVENT,
            AFTER_EVENT, and FORM_SUBMITTED_NO_EVENT
          allOf:
            - $ref: '#/components/schemas/WorkflowTriggerOffsetDto'
        type:
          default: afterEvent
          enum:
            - afterEvent
          type: string
          description: Trigger type for the workflow
          example: afterEvent
      required:
        - offset
        - type
    OnCancelTriggerDto:
      type: object
      properties:
        type:
          default: eventCancelled
          enum:
            - eventCancelled
          type: string
          description: Trigger type for the workflow
      required:
        - type
    OnCreationTriggerDto:
      type: object
      properties:
        type:
          default: newEvent
          enum:
            - newEvent
          type: string
          description: Trigger type for the workflow
      required:
        - type
    OnRescheduleTriggerDto:
      type: object
      properties:
        type:
          default: rescheduleEvent
          enum:
            - rescheduleEvent
          type: string
          description: Trigger type for the workflow
      required:
        - type
    OnAfterCalVideoGuestsNoShowTriggerDto:
      type: object
      properties:
        offset:
          description: >-
            Offset before/after the trigger time; required for BEFORE_EVENT,
            AFTER_EVENT, and FORM_SUBMITTED_NO_EVENT
          allOf:
            - $ref: '#/components/schemas/WorkflowTriggerOffsetDto'
        type:
          default: afterGuestsCalVideoNoShow
          enum:
            - afterGuestsCalVideoNoShow
          type: string
          description: Trigger type for the workflow
          example: afterGuestsCalVideoNoShow
      required:
        - offset
        - type
    OnAfterCalVideoHostsNoShowTriggerDto:
      type: object
      properties:
        offset:
          description: >-
            Offset before/after the trigger time; required for BEFORE_EVENT,
            AFTER_EVENT, and FORM_SUBMITTED_NO_EVENT
          allOf:
            - $ref: '#/components/schemas/WorkflowTriggerOffsetDto'
        type:
          default: afterHostsCalVideoNoShow
          enum:
            - afterHostsCalVideoNoShow
          type: string
          description: Trigger type for the workflow
          example: afterHostsCalVideoNoShow
      required:
        - offset
        - type
    OnRejectedTriggerDto:
      type: object
      properties:
        type:
          default: bookingRejected
          enum:
            - bookingRejected
          type: string
          description: Trigger type for the workflow
      required:
        - type
    OnRequestedTriggerDto:
      type: object
      properties:
        type:
          default: bookingRequested
          enum:
            - bookingRequested
          type: string
          description: Trigger type for the workflow
      required:
        - type
    OnPaidTriggerDto:
      type: object
      properties:
        type:
          default: bookingPaid
          enum:
            - bookingPaid
          type: string
          description: Trigger type for the workflow
      required:
        - type
    OnPaymentInitiatedTriggerDto:
      type: object
      properties:
        type:
          default: bookingPaymentInitiated
          enum:
            - bookingPaymentInitiated
          type: string
          description: Trigger type for the workflow
      required:
        - type
    OnNoShowUpdateTriggerDto:
      type: object
      properties:
        type:
          default: bookingNoShowUpdated
          enum:
            - bookingNoShowUpdated
          type: string
          description: Trigger type for the workflow
      required:
        - type
    CreatePathsWorkflowStepDto_2026_09_22:
      type: object
      properties:
        action:
          enum:
            - paths
          type: string
          description: >-
            Marks the step that splits the workflow into conditional paths. It
            is always placed after every step outside a path, followed by the
            steps inside its paths, so it takes no stepNumber. Send `paths` to
            author the split and omit this step to delete it.
          example: paths
        paths:
          minItems: 2
          description: >-
            The branches this step splits into, in the order they should appear
            on the canvas. A split needs at least two. Omit to leave the
            persisted branches untouched.
          type: array
          items:
            $ref: '#/components/schemas/WorkflowPathInputDto_2026_09_22'
        pathId:
          type: string
          format: uuid
          description: >-
            Id of the filter path this split itself sits inside. Omit it for a
            split at the top level.
          example: 8b2f0c31-4a6d-4f89-b1c5-6d0e8a4f2b73
      required:
        - action
    CreateFilterWorkflowStepDto_2026_09_22:
      type: object
      properties:
        action:
          enum:
            - filter
          type: string
          description: >-
            Marks the step that gates everything after it on a set of
            conditions. Its position relative to the steps it gates is fixed, so
            it takes no stepNumber. Send `conditions` to author the gate and
            omit this step to delete it.
          example: filter
        gatedPathId:
          type: string
          format: uuid
          description: >-
            Id of the path this filter gates, so steps can name it as their
            pathId. Generated when omitted; send the gatedPathId from GET to
            keep the steps already behind this gate.
          example: 3f4c11a2-9b7e-4d15-8f0a-2f7de41b6c01
        matches:
          enum:
            - all
            - any
            - none
            - not_all
          type: string
          description: >-
            all: every condition matches; any: at least one matches; none: no
            conditions match; not_all: at least one condition does not match.
          example: all
          default: all
        conditions:
          description: >-
            The conditions every following step is gated on. Omit to leave the
            persisted conditions untouched; send an empty list for a gate that
            passes everything.
          type: array
          items:
            $ref: '#/components/schemas/WorkflowPathConditionInputDto_2026_09_22'
        pathId:
          type: string
          format: uuid
          description: >-
            Id of the conditional path this filter itself sits inside. Omit it
            for a filter at the top level.
          example: 8b2f0c31-4a6d-4f89-b1c5-6d0e8a4f2b73
      required:
        - action
    WorkflowEmailAddressStepDto_2026_09_22:
      type: object
      properties:
        action:
          enum:
            - email_host
            - email_attendee
            - email_address
            - sms_attendee
            - sms_number
            - whatsapp_attendee
            - whatsapp_number
            - cal_ai_phone_call
          type: string
          default: email_address
          description: Action to perform, send an email to a specific email address
          example: email_address
        stepNumber:
          type: number
          description: Step number in the workflow sequence
          example: 1
        recipient:
          type: string
          description: Recipient type
          example: attendee
          enum:
            - const
            - attendee
            - email
            - phone_number
        template:
          enum:
            - reminder
            - custom
            - rescheduled
            - completed
            - rating
            - cancelled
          type: string
          description: >-
            Template type for the step. Case-insensitive: uppercase values (e.g.
            `REMINDER`) are normalized to lowercase server-side for backwards
            compat.
          example: reminder
        sender:
          type: string
          description: Displayed sender name.
        autoTranslateEnabled:
          type: boolean
          description: >-
            Whether to enable auto-translation of the workflow step content for
            attendees. Only available for organizations.
          example: false
          default: false
        sourceLocale:
          enum:
            - ar
            - ca
            - de
            - es
            - eu
            - he
            - id
            - ja
            - lv
            - pl
            - ro
            - sr
            - th
            - vi
            - az
            - cs
            - el
            - es-419
            - fi
            - hr
            - it
            - km
            - nl
            - pt
            - ru
            - sv
            - tr
            - zh-CN
            - bg
            - da
            - en
            - et
            - fr
            - hu
            - iw
            - ko
            - 'no'
            - pt-BR
            - sk
            - sl
            - ta
            - uk
            - zh-TW
            - bn
          type: string
          description: >-
            The source locale of the workflow step content used for
            auto-translation (e.g. 'en'). Defaults to the user's locale.
          example: en
        pathId:
          type: string
          format: uuid
          description: >-
            Id of the conditional path this step belongs to, so it only runs
            when that path's conditions match. It must name a path defined in
            this request or already persisted on an echoed gate. Omit it for a
            step that always runs.
          example: 3f4c11a2-9b7e-4d15-8f0a-2f7de41b6c01
        verifiedEmailId:
          type: number
          description: >-
            Email address if recipient is EMAIL, required for action
            EMAIL_ADDRESS
          example: 31214
          externalDocs:
            url: >-
              https://cal.com/docs/api-reference/v2/organization-team-verified-resources/verify-an-email-for-an-org-team
        includeCalendarEvent:
          type: boolean
          default: false
          description: >-
            Whether to include a calendar event in the notification, can be
            included with actions email_host, email_attendee, email_address
          example: true
        message:
          description: Message content for this step
          allOf:
            - $ref: '#/components/schemas/HtmlWorkflowMessageDto_2026_09_22'
      required:
        - action
        - stepNumber
        - recipient
        - template
        - sender
        - verifiedEmailId
        - includeCalendarEvent
        - message
    WorkflowEmailAttendeeStepDto_2026_09_22:
      type: object
      properties:
        action:
          enum:
            - email_host
            - email_attendee
            - email_address
            - sms_attendee
            - sms_number
            - whatsapp_attendee
            - whatsapp_number
            - cal_ai_phone_call
          type: string
          default: email_attendee
          description: Action to perform, send an email to the attendees of the event
          example: email_attendee
        stepNumber:
          type: number
          description: Step number in the workflow sequence
          example: 1
        recipient:
          type: string
          description: Recipient type
          example: attendee
          enum:
            - const
            - attendee
            - email
            - phone_number
        template:
          enum:
            - reminder
            - custom
            - rescheduled
            - completed
            - rating
            - cancelled
          type: string
          description: >-
            Template type for the step. Case-insensitive: uppercase values (e.g.
            `REMINDER`) are normalized to lowercase server-side for backwards
            compat.
          example: reminder
        sender:
          type: string
          description: Displayed sender name.
        autoTranslateEnabled:
          type: boolean
          description: >-
            Whether to enable auto-translation of the workflow step content for
            attendees. Only available for organizations.
          example: false
          default: false
        sourceLocale:
          enum:
            - ar
            - ca
            - de
            - es
            - eu
            - he
            - id
            - ja
            - lv
            - pl
            - ro
            - sr
            - th
            - vi
            - az
            - cs
            - el
            - es-419
            - fi
            - hr
            - it
            - km
            - nl
            - pt
            - ru
            - sv
            - tr
            - zh-CN
            - bg
            - da
            - en
            - et
            - fr
            - hu
            - iw
            - ko
            - 'no'
            - pt-BR
            - sk
            - sl
            - ta
            - uk
            - zh-TW
            - bn
          type: string
          description: >-
            The source locale of the workflow step content used for
            auto-translation (e.g. 'en'). Defaults to the user's locale.
          example: en
        pathId:
          type: string
          format: uuid
          description: >-
            Id of the conditional path this step belongs to, so it only runs
            when that path's conditions match. It must name a path defined in
            this request or already persisted on an echoed gate. Omit it for a
            step that always runs.
          example: 3f4c11a2-9b7e-4d15-8f0a-2f7de41b6c01
        includeCalendarEvent:
          type: boolean
          default: false
          description: >-
            Whether to include a calendar event in the notification, can be
            included with actions email_host, email_attendee, email_address
          example: true
        skipNoShowAttendees:
          type: boolean
          default: false
          description: >-
            Whether an after-event rating email should skip attendees currently
            marked as no-show. It has no effect for other workflow triggers or
            templates.
          example: false
        message:
          description: Message content for this step
          allOf:
            - $ref: '#/components/schemas/HtmlWorkflowMessageDto_2026_09_22'
      required:
        - action
        - stepNumber
        - recipient
        - template
        - sender
        - includeCalendarEvent
        - message
    WorkflowEmailHostStepDto_2026_09_22:
      type: object
      properties:
        action:
          enum:
            - email_host
            - email_attendee
            - email_address
            - sms_attendee
            - sms_number
            - whatsapp_attendee
            - whatsapp_number
            - cal_ai_phone_call
          type: string
          default: email_host
          description: Action to perform, send an email to the host of the event
          example: email_host
        stepNumber:
          type: number
          description: Step number in the workflow sequence
          example: 1
        recipient:
          type: string
          description: Recipient type
          example: attendee
          enum:
            - const
            - attendee
            - email
            - phone_number
        template:
          enum:
            - reminder
            - custom
            - rescheduled
            - completed
            - rating
            - cancelled
          type: string
          description: >-
            Template type for the step. Case-insensitive: uppercase values (e.g.
            `REMINDER`) are normalized to lowercase server-side for backwards
            compat.
          example: reminder
        sender:
          type: string
          description: Displayed sender name.
        autoTranslateEnabled:
          type: boolean
          description: >-
            Whether to enable auto-translation of the workflow step content for
            attendees. Only available for organizations.
          example: false
          default: false
        sourceLocale:
          enum:
            - ar
            - ca
            - de
            - es
            - eu
            - he
            - id
            - ja
            - lv
            - pl
            - ro
            - sr
            - th
            - vi
            - az
            - cs
            - el
            - es-419
            - fi
            - hr
            - it
            - km
            - nl
            - pt
            - ru
            - sv
            - tr
            - zh-CN
            - bg
            - da
            - en
            - et
            - fr
            - hu
            - iw
            - ko
            - 'no'
            - pt-BR
            - sk
            - sl
            - ta
            - uk
            - zh-TW
            - bn
          type: string
          description: >-
            The source locale of the workflow step content used for
            auto-translation (e.g. 'en'). Defaults to the user's locale.
          example: en
        pathId:
          type: string
          format: uuid
          description: >-
            Id of the conditional path this step belongs to, so it only runs
            when that path's conditions match. It must name a path defined in
            this request or already persisted on an echoed gate. Omit it for a
            step that always runs.
          example: 3f4c11a2-9b7e-4d15-8f0a-2f7de41b6c01
        includeCalendarEvent:
          type: boolean
          default: false
          description: >-
            Whether to include a calendar event in the notification, can be
            included with actions email_host, email_attendee, email_address
          example: true
        message:
          description: Message content for this step
          allOf:
            - $ref: '#/components/schemas/HtmlWorkflowMessageDto_2026_09_22'
      required:
        - action
        - stepNumber
        - recipient
        - template
        - sender
        - includeCalendarEvent
        - message
    WorkflowPhoneWhatsAppAttendeeStepDto_2026_09_22:
      type: object
      properties:
        action:
          enum:
            - email_host
            - email_attendee
            - email_address
            - sms_attendee
            - sms_number
            - whatsapp_attendee
            - whatsapp_number
            - cal_ai_phone_call
          type: string
          default: whatsapp_attendee
          description: Action to perform
          example: whatsapp_attendee
        stepNumber:
          type: number
          description: Step number in the workflow sequence
          example: 1
        recipient:
          type: string
          description: Recipient type
          example: attendee
          enum:
            - const
            - attendee
            - email
            - phone_number
        template:
          enum:
            - reminder
            - custom
            - rescheduled
            - completed
            - rating
            - cancelled
          type: string
          description: >-
            Template type for the step. Case-insensitive: uppercase values (e.g.
            `REMINDER`) are normalized to lowercase server-side for backwards
            compat.
          example: reminder
        sender:
          type: string
          description: Displayed sender name.
        autoTranslateEnabled:
          type: boolean
          description: >-
            Whether to enable auto-translation of the workflow step content for
            attendees. Only available for organizations.
          example: false
          default: false
        sourceLocale:
          enum:
            - ar
            - ca
            - de
            - es
            - eu
            - he
            - id
            - ja
            - lv
            - pl
            - ro
            - sr
            - th
            - vi
            - az
            - cs
            - el
            - es-419
            - fi
            - hr
            - it
            - km
            - nl
            - pt
            - ru
            - sv
            - tr
            - zh-CN
            - bg
            - da
            - en
            - et
            - fr
            - hu
            - iw
            - ko
            - 'no'
            - pt-BR
            - sk
            - sl
            - ta
            - uk
            - zh-TW
            - bn
          type: string
          description: >-
            The source locale of the workflow step content used for
            auto-translation (e.g. 'en'). Defaults to the user's locale.
          example: en
        pathId:
          type: string
          format: uuid
          description: >-
            Id of the conditional path this step belongs to, so it only runs
            when that path's conditions match. It must name a path defined in
            this request or already persisted on an echoed gate. Omit it for a
            step that always runs.
          example: 3f4c11a2-9b7e-4d15-8f0a-2f7de41b6c01
        message:
          description: >-
            Message content for this step, send a text message via whatsapp to
            the phone numbers of the attendees
          allOf:
            - $ref: '#/components/schemas/TextWorkflowMessageDto_2026_09_22'
        phoneRequired:
          type: boolean
          default: false
          description: >-
            whether or not the attendees are required to provide their phone
            numbers when booking
          example: true
      required:
        - action
        - stepNumber
        - recipient
        - template
        - sender
        - message
    WorkflowPhoneWhatsAppNumberStepDto_2026_09_22:
      type: object
      properties:
        action:
          enum:
            - email_host
            - email_attendee
            - email_address
            - sms_attendee
            - sms_number
            - whatsapp_attendee
            - whatsapp_number
            - cal_ai_phone_call
          type: string
          default: whatsapp_number
          description: >-
            Action to perform, send a text message via whatsapp to a specific
            phone number
          example: whatsapp_number
        stepNumber:
          type: number
          description: Step number in the workflow sequence
          example: 1
        recipient:
          type: string
          description: Recipient type
          example: attendee
          enum:
            - const
            - attendee
            - email
            - phone_number
        template:
          enum:
            - reminder
            - custom
            - rescheduled
            - completed
            - rating
            - cancelled
          type: string
          description: >-
            Template type for the step. Case-insensitive: uppercase values (e.g.
            `REMINDER`) are normalized to lowercase server-side for backwards
            compat.
          example: reminder
        sender:
          type: string
          description: Displayed sender name.
        autoTranslateEnabled:
          type: boolean
          description: >-
            Whether to enable auto-translation of the workflow step content for
            attendees. Only available for organizations.
          example: false
          default: false
        sourceLocale:
          enum:
            - ar
            - ca
            - de
            - es
            - eu
            - he
            - id
            - ja
            - lv
            - pl
            - ro
            - sr
            - th
            - vi
            - az
            - cs
            - el
            - es-419
            - fi
            - hr
            - it
            - km
            - nl
            - pt
            - ru
            - sv
            - tr
            - zh-CN
            - bg
            - da
            - en
            - et
            - fr
            - hu
            - iw
            - ko
            - 'no'
            - pt-BR
            - sk
            - sl
            - ta
            - uk
            - zh-TW
            - bn
          type: string
          description: >-
            The source locale of the workflow step content used for
            auto-translation (e.g. 'en'). Defaults to the user's locale.
          example: en
        pathId:
          type: string
          format: uuid
          description: >-
            Id of the conditional path this step belongs to, so it only runs
            when that path's conditions match. It must name a path defined in
            this request or already persisted on an echoed gate. Omit it for a
            step that always runs.
          example: 3f4c11a2-9b7e-4d15-8f0a-2f7de41b6c01
        verifiedPhoneId:
          type: number
          description: >-
            Phone number if recipient is PHONE_NUMBER, required for actions
            SMS_NUMBER and WHATSAPP_NUMBER
          example: 3243434
          externalDocs:
            url: >-
              https://cal.com/docs/api-reference/v2/organization-team-verified-resources/verify-a-phone-number-for-an-org-team
        message:
          description: Message content for this step
          allOf:
            - $ref: '#/components/schemas/TextWorkflowMessageDto_2026_09_22'
      required:
        - action
        - stepNumber
        - recipient
        - template
        - sender
        - verifiedPhoneId
        - message
    WorkflowPhoneNumberStepDto_2026_09_22:
      type: object
      properties:
        action:
          enum:
            - email_host
            - email_attendee
            - email_address
            - sms_attendee
            - sms_number
            - whatsapp_attendee
            - whatsapp_number
            - cal_ai_phone_call
          type: string
          default: sms_number
          description: Action to perform, send a text message to a specific phone number
          example: sms_number
        stepNumber:
          type: number
          description: Step number in the workflow sequence
          example: 1
        recipient:
          type: string
          description: Recipient type
          example: attendee
          enum:
            - const
            - attendee
            - email
            - phone_number
        template:
          enum:
            - reminder
            - custom
            - rescheduled
            - completed
            - rating
            - cancelled
          type: string
          description: >-
            Template type for the step. Case-insensitive: uppercase values (e.g.
            `REMINDER`) are normalized to lowercase server-side for backwards
            compat.
          example: reminder
        sender:
          type: string
          description: Displayed sender name.
        autoTranslateEnabled:
          type: boolean
          description: >-
            Whether to enable auto-translation of the workflow step content for
            attendees. Only available for organizations.
          example: false
          default: false
        sourceLocale:
          enum:
            - ar
            - ca
            - de
            - es
            - eu
            - he
            - id
            - ja
            - lv
            - pl
            - ro
            - sr
            - th
            - vi
            - az
            - cs
            - el
            - es-419
            - fi
            - hr
            - it
            - km
            - nl
            - pt
            - ru
            - sv
            - tr
            - zh-CN
            - bg
            - da
            - en
            - et
            - fr
            - hu
            - iw
            - ko
            - 'no'
            - pt-BR
            - sk
            - sl
            - ta
            - uk
            - zh-TW
            - bn
          type: string
          description: >-
            The source locale of the workflow step content used for
            auto-translation (e.g. 'en'). Defaults to the user's locale.
          example: en
        pathId:
          type: string
          format: uuid
          description: >-
            Id of the conditional path this step belongs to, so it only runs
            when that path's conditions match. It must name a path defined in
            this request or already persisted on an echoed gate. Omit it for a
            step that always runs.
          example: 3f4c11a2-9b7e-4d15-8f0a-2f7de41b6c01
        verifiedPhoneId:
          type: number
          description: >-
            Phone number if recipient is PHONE_NUMBER, required for actions
            SMS_NUMBER and WHATSAPP_NUMBER
          example: 3243434
          externalDocs:
            url: >-
              https://cal.com/docs/api-reference/v2/organization-team-verified-resources/verify-a-phone-number-for-an-org-team
        message:
          description: Message content for this step
          allOf:
            - $ref: '#/components/schemas/TextWorkflowMessageDto_2026_09_22'
      required:
        - action
        - stepNumber
        - recipient
        - template
        - sender
        - verifiedPhoneId
        - message
    WorkflowPhoneAttendeeStepDto_2026_09_22:
      type: object
      properties:
        action:
          enum:
            - email_host
            - email_attendee
            - email_address
            - sms_attendee
            - sms_number
            - whatsapp_attendee
            - whatsapp_number
            - cal_ai_phone_call
          type: string
          default: sms_attendee
          description: >-
            Action to perform, send a text message to the phone numbers of the
            attendees
          example: sms_attendee
        stepNumber:
          type: number
          description: Step number in the workflow sequence
          example: 1
        recipient:
          type: string
          description: Recipient type
          example: attendee
          enum:
            - const
            - attendee
            - email
            - phone_number
        template:
          enum:
            - reminder
            - custom
            - rescheduled
            - completed
            - rating
            - cancelled
          type: string
          description: >-
            Template type for the step. Case-insensitive: uppercase values (e.g.
            `REMINDER`) are normalized to lowercase server-side for backwards
            compat.
          example: reminder
        sender:
          type: string
          description: Displayed sender name.
        autoTranslateEnabled:
          type: boolean
          description: >-
            Whether to enable auto-translation of the workflow step content for
            attendees. Only available for organizations.
          example: false
          default: false
        sourceLocale:
          enum:
            - ar
            - ca
            - de
            - es
            - eu
            - he
            - id
            - ja
            - lv
            - pl
            - ro
            - sr
            - th
            - vi
            - az
            - cs
            - el
            - es-419
            - fi
            - hr
            - it
            - km
            - nl
            - pt
            - ru
            - sv
            - tr
            - zh-CN
            - bg
            - da
            - en
            - et
            - fr
            - hu
            - iw
            - ko
            - 'no'
            - pt-BR
            - sk
            - sl
            - ta
            - uk
            - zh-TW
            - bn
          type: string
          description: >-
            The source locale of the workflow step content used for
            auto-translation (e.g. 'en'). Defaults to the user's locale.
          example: en
        pathId:
          type: string
          format: uuid
          description: >-
            Id of the conditional path this step belongs to, so it only runs
            when that path's conditions match. It must name a path defined in
            this request or already persisted on an echoed gate. Omit it for a
            step that always runs.
          example: 3f4c11a2-9b7e-4d15-8f0a-2f7de41b6c01
        message:
          description: Message content for this step
          allOf:
            - $ref: '#/components/schemas/TextWorkflowMessageDto_2026_09_22'
        phoneRequired:
          type: boolean
          default: false
          description: >-
            whether or not the attendees are required to provide their phone
            numbers when booking
          example: true
      required:
        - action
        - stepNumber
        - recipient
        - template
        - sender
        - message
    WorkflowWebhookStepDto_2026_09_22:
      type: object
      properties:
        action:
          enum:
            - webhook
          type: string
          description: Action to perform
          example: webhook
        stepNumber:
          type: number
          description: Step number in the workflow sequence
          example: 1
        url:
          type: string
          maxLength: 2048
          format: uri
          description: The HTTP or HTTPS URL that receives signed booking payloads.
          example: https://example.com/webhook
        secret:
          type: string
          minLength: 1
          maxLength: 255
          description: >-
            HMAC key for X-Cal-Signature-256. This secret is write-only and is
            never returned.
          writeOnly: true
        pathId:
          type: string
          format: uuid
          description: >-
            Id of the conditional path this step belongs to, so it only runs
            when that path's conditions match. It must name a path defined in
            this request or already persisted on an echoed gate. Omit it for a
            step that always runs.
          example: 3f4c11a2-9b7e-4d15-8f0a-2f7de41b6c01
      required:
        - action
        - stepNumber
        - url
    EventTypeWorkflowOutput_2026_09_22:
      type: object
      properties:
        id:
          type: number
          description: Unique identifier of the workflow
          example: 101
        name:
          type: string
          description: Name of the workflow
          example: Platform Test Workflow
        userId:
          type: number
          description: ID of the user who owns the workflow (if not team-owned)
          example: 2313
        teamId:
          type: number
          description: ID of the team owning the workflow
          example: 4214321
        createdAt:
          type: string
          description: Timestamp of creation
          example: '2024-05-12T10:00:00.000Z'
          format: date-time
        updatedAt:
          type: string
          description: Timestamp of last update
          example: '2024-05-12T11:30:00.000Z'
          format: date-time
        type:
          enum:
            - event-type
          type: string
          description: type of the workflow
          example: event-type
          default: event-type
        activation:
          description: Activation settings for the workflow
          allOf:
            - $ref: '#/components/schemas/EventTypeWorkflowActivationOutputDto'
        trigger:
          description: Trigger configuration
          allOf:
            - $ref: '#/components/schemas/EventTypeWorkflowTriggerOutputDto'
        steps:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/EventTypeWorkflowStepOutputDto'
                title: Step
              - $ref: '#/components/schemas/PathsWorkflowStepOutputDto_2026_09_22'
                title: Paths step
              - $ref: '#/components/schemas/FilterWorkflowStepOutputDto_2026_09_22'
                title: Filter step
              - $ref: '#/components/schemas/DelayWorkflowStepOutputDto'
                title: Delay step
              - $ref: '#/components/schemas/LeadEnrichmentWorkflowStepOutputDto'
                title: Lead enrichment step
              - $ref: '#/components/schemas/WebhookWorkflowStepOutputDto_2026_09_22'
                title: Webhook step
      required:
        - id
        - name
        - type
        - activation
        - trigger
        - steps
    WorkflowTriggerOffsetDto:
      type: object
      properties:
        value:
          type: number
          minimum: 1
          description: Time value for offset before/after event trigger
          example: 24
        unit:
          enum:
            - hour
            - minute
            - day
          type: string
          description: Unit for the offset time
          example: hour
      required:
        - value
        - unit
    WorkflowPathInputDto_2026_09_22:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: >-
            Identifier of the path. Generated when omitted; send the id from GET
            to edit an existing branch rather than replace it. An existing path
            id must belong to this workflow and this gate.
          example: 3f4c11a2-9b7e-4d15-8f0a-2f7de41b6c01
        name:
          type: string
          maxLength: 255
          description: Name of the branch, shown on the canvas
          example: Enterprise leads
        matches:
          enum:
            - all
            - any
            - none
            - not_all
          type: string
          description: >-
            How conditions must match: all (every condition), any (at least
            one), none (no conditions), or not_all (at least one condition does
            not match). Omit to preserve an existing branch’s mode; new branches
            default to all.
          example: all
          default: all
        conditions:
          description: >-
            The conditions deciding whether this branch matches. Omit or send an
            empty list for a branch that always matches.
          default: []
          type: array
          items:
            $ref: '#/components/schemas/WorkflowPathConditionInputDto_2026_09_22'
      required:
        - name
    WorkflowPathConditionInputDto_2026_09_22:
      type: object
      properties:
        id:
          type: string
          pattern: ^[\w-]{1,64}$
          description: >-
            Identifier of the condition. Generated when omitted; send the id
            from GET to edit one.
          example: b1d2e3f4-5a6b-4c7d-8e9f-0a1b2c3d4e5f
        field:
          type: string
          maxLength: 255
          description: >-
            The booking question or event field this condition reads. Use a
            field identifier returned by the workflow condition-fields endpoint.
          example: company-size
        operator:
          type: string
          maxLength: 64
          description: >-
            How the field is compared. The operator has to be one the field's
            type accepts — `equal` for a text or number field, `select_equals`
            for a select, `multiselect_equals` for a multiselect — because a
            condition whose operator its field rejects is scored false and
            silences the branch.
          example: select_equals
          enum:
            - between
            - equal
            - greater
            - greater_or_equal
            - is_empty
            - is_not_empty
            - less
            - less_or_equal
            - like
            - multiselect_equals
            - multiselect_not_equals
            - not_between
            - not_equal
            - not_like
            - select_any_in
            - select_equals
            - select_not_any_in
            - select_not_equals
            - starts_with
        values:
          maxItems: 100
          description: >-
            The values the field is compared against. Omit or send an empty list
            for operators that take none, such as is_empty.
          example:
            - enterprise
          default: []
          type: array
          items:
            type: string
            maxLength: 1000
      required:
        - field
        - operator
    HtmlWorkflowMessageDto_2026_09_22:
      type: object
      properties:
        subject:
          type: string
          description: Subject of the message
          example: >-
            Reminder: Your Meeting {EVENT_NAME} - {EVENT_DATE_ddd, MMM D, YYYY
            h:mma} with Cal.com
        html:
          type: string
          description: HTML content of the message (used for Emails)
          example: >-
            <p>This is a reminder from {ORGANIZER} of {EVENT_NAME} to {ATTENDEE}
            starting here  {LOCATION} {MEETING_URL} at {START_TIME_h:mma}
            {TIMEZONE}.</p>
      required:
        - subject
        - html
    TextWorkflowMessageDto_2026_09_22:
      type: object
      properties:
        subject:
          type: string
          description: Subject of the message
          example: >-
            Reminder: Your Meeting {EVENT_NAME} - {EVENT_DATE_ddd, MMM D, YYYY
            h:mma} with Cal.com
        text:
          type: string
          description: Text content of the message (used for SMS)
          example: >-
            This is a reminder message from {ORGANIZER} of {EVENT_NAME} to
            {ATTENDEE} starting here {LOCATION} {MEETING_URL} at
            {START_TIME_h:mma} {TIMEZONE}.
      required:
        - subject
        - text
    EventTypeWorkflowActivationOutputDto:
      type: object
      properties:
        isActiveOnAllEventTypes:
          type: boolean
          default: false
          description: >-
            Whether the workflow is active for all event types associated with
            the team/user
          example: false
        activeOnEventTypeIds:
          description: >-
            List of Event Type IDs the workflow is specifically active on (if
            not active on all)
          example:
            - 698191
            - 698192
          type: array
          items:
            type: number
    EventTypeWorkflowTriggerOutputDto:
      type: object
      properties:
        type:
          enum:
            - beforeEvent
            - eventCancelled
            - newEvent
            - afterEvent
            - rescheduleEvent
            - afterHostsCalVideoNoShow
            - afterGuestsCalVideoNoShow
            - bookingRejected
            - bookingRequested
            - bookingPaymentInitiated
            - bookingPaid
            - bookingNoShowUpdated
          type: string
          description: Trigger type for the workflow
          example: beforeEvent
        offset:
          description: Offset details (present for BEFORE_EVENT/AFTER_EVENT)
          allOf:
            - $ref: '#/components/schemas/WorkflowTriggerOffsetOutputDto'
      required:
        - type
    EventTypeWorkflowStepOutputDto:
      type: object
      properties:
        id:
          type: number
          description: Unique identifier of the step
          example: 67244
        stepNumber:
          type: number
          description: Step number in the workflow sequence
          example: 1
        recipient:
          type: string
          description: Intended recipient type
          example: const
          enum:
            - const
            - attendee
            - email
            - phone_number
        email:
          type: string
          description: Verified email address if action is EMAIL_ADDRESS
          example: notifications@example.com
        phone:
          type: string
          description: Verified Phone if action is SMS_NUMBER or WHATSAPP_NUMBER
        phoneRequired:
          type: boolean
          default: false
          description: >-
            whether or not the attendees are required to provide their phone
            numbers when booking
          example: true
        template:
          enum:
            - reminder
            - custom
            - rescheduled
            - completed
            - rating
            - cancelled
          type: string
          description: Template type used
          example: reminder
        includeCalendarEvent:
          type: boolean
          default: false
          description: Whether a calendar event (.ics) was included (for email actions)
          example: true
        skipNoShowAttendees:
          type: boolean
          default: false
          description: >-
            Whether an after-event attendee rating email skips attendees
            currently marked as no-show.
          example: false
        sender:
          type: string
          description: Displayed sender name used for this step
          example: Cal.com Notifications
        message:
          description: Message content for this step
          allOf:
            - $ref: '#/components/schemas/WorkflowMessageOutputDto'
        autoTranslateEnabled:
          type: boolean
          description: >-
            Whether auto-translation of the workflow step content for attendees
            is enabled. Only available for organizations.
          example: false
          default: false
        sourceLocale:
          nullable: true
          enum:
            - ar
            - ca
            - de
            - es
            - eu
            - he
            - id
            - ja
            - lv
            - pl
            - ro
            - sr
            - th
            - vi
            - az
            - cs
            - el
            - es-419
            - fi
            - hr
            - it
            - km
            - nl
            - pt
            - ru
            - sv
            - tr
            - zh-CN
            - bg
            - da
            - en
            - et
            - fr
            - hu
            - iw
            - ko
            - 'no'
            - pt-BR
            - sk
            - sl
            - ta
            - uk
            - zh-TW
            - bn
          type: string
          description: >-
            The source locale of the workflow step content used for
            auto-translation (e.g. 'en').
          example: en
        pathId:
          type: string
          description: >-
            Id of the conditional path this step belongs to; the step only runs
            when that path's conditions match. Absent for unconditional steps.
          example: 3f4c11a2-9b7e-4d15-8f0a-2f7de41b6c01
        action:
          enum:
            - email_host
            - email_attendee
            - email_address
            - sms_attendee
            - sms_number
            - whatsapp_attendee
            - whatsapp_number
            - cal_ai_phone_call
          type: string
          description: Action to perform
          example: email_host
      required:
        - id
        - stepNumber
        - recipient
        - template
        - sender
        - message
        - action
    PathsWorkflowStepOutputDto_2026_09_22:
      type: object
      properties:
        id:
          type: number
          description: Unique identifier of the step
          example: 67244
        stepNumber:
          type: number
          description: Step number in the workflow sequence
          example: 1
        action:
          enum:
            - paths
          type: string
          description: >-
            The step that splits the workflow into conditional paths; include
            this step by id when updating the workflow's steps.
          example: paths
        pathId:
          type: string
          description: >-
            Id of the conditional path this split itself belongs to, when it
            sits inside a filter's path. Absent at the top level.
          example: 8b2f0c31-4a6d-4f89-b1c5-6d0e8a4f2b73
        paths:
          type: array
          items:
            $ref: '#/components/schemas/WorkflowStepPathOutputDto_2026_09_22'
      required:
        - id
        - stepNumber
        - action
        - paths
    FilterWorkflowStepOutputDto_2026_09_22:
      type: object
      properties:
        id:
          type: number
          description: Unique identifier of the step
          example: 67244
        stepNumber:
          type: number
          description: Step number in the workflow sequence
          example: 1
        action:
          enum:
            - filter
          type: string
          description: >-
            The step that gates every step after it on a set of conditions;
            include this step by id when updating the workflow's steps.
          example: filter
        gatedPathId:
          type: string
          description: >-
            Id of the path this filter gates. Every step carrying this as its
            pathId runs only when the filter's conditions match.
          example: 3f4c11a2-9b7e-4d15-8f0a-2f7de41b6c01
        conditions:
          description: >-
            The conditions every following step is gated on. A filter with no
            conditions passes everything.
          type: array
          items:
            $ref: '#/components/schemas/WorkflowPathConditionOutputDto'
        pathId:
          type: string
          description: >-
            Id of the conditional path this filter itself belongs to, when it
            sits inside a split branch or another filter. Absent at the top
            level.
          example: 8b2f0c31-4a6d-4f89-b1c5-6d0e8a4f2b73
        matches:
          enum:
            - all
            - any
            - none
            - not_all
          type: string
          description: >-
            all: every condition matches; any: at least one matches; none: no
            conditions match; not_all: at least one condition does not match.
          example: all
      required:
        - id
        - stepNumber
        - action
        - gatedPathId
        - conditions
        - matches
    DelayWorkflowStepOutputDto:
      type: object
      properties:
        id:
          type: number
          description: Unique identifier of the step
          example: 67244
        stepNumber:
          type: number
          description: Step number in the workflow sequence
          example: 1
        action:
          enum:
            - delay
          type: string
          description: >-
            A wait before the next sending step. Its duration is read-only
            through the API and can only be edited in the Cal.com app; include
            this step by id when updating the workflow's steps.
          example: delay
        delay:
          description: >-
            How long this step waits. Absent when the step has no stored
            duration.
          allOf:
            - $ref: '#/components/schemas/WorkflowDelayDurationOutputDto'
        pathId:
          type: string
          description: >-
            Id of the conditional path this delay belongs to, when it sits
            inside a split branch or a filter. Absent at the top level.
          example: 8b2f0c31-4a6d-4f89-b1c5-6d0e8a4f2b73
      required:
        - id
        - stepNumber
        - action
    LeadEnrichmentWorkflowStepOutputDto:
      type: object
      properties:
        id:
          type: number
          description: Unique identifier of the step
          example: 67244
        stepNumber:
          type: number
          description: Step number in the workflow sequence
          example: 1
        action:
          enum:
            - lead_enrichment
          type: string
          description: >-
            The step that looks the attendee or form submitter up with the lead
            enrichment provider when the workflow runs; the steps after it can
            use the result in their conditions and messages. It can only be
            added or configured in the Cal.com app; include this step by id when
            updating the workflow's steps.
          example: lead_enrichment
        pathId:
          type: string
          description: >-
            Id of the conditional path this step belongs to, when it sits inside
            a split branch or a filter. Absent at the top level.
          example: 8b2f0c31-4a6d-4f89-b1c5-6d0e8a4f2b73
      required:
        - id
        - stepNumber
        - action
    WebhookWorkflowStepOutputDto_2026_09_22:
      type: object
      properties:
        id:
          type: number
          description: Workflow step id
          example: 123
        stepNumber:
          type: number
          description: Step number in the workflow sequence
          example: 1
        action:
          enum:
            - webhook
          type: string
          description: Action to perform
          example: webhook
        url:
          type: string
          description: The HTTP or HTTPS URL that receives signed booking payloads.
        hasSecret:
          type: boolean
          description: >-
            Whether a signing secret is saved. The secret itself is never
            returned.
        pathId:
          type: string
          format: uuid
          description: >-
            Id of the conditional path this step belongs to, so it only runs
            when that path's conditions match.
          example: 3f4c11a2-9b7e-4d15-8f0a-2f7de41b6c01
      required:
        - id
        - stepNumber
        - action
        - url
        - hasSecret
    WorkflowTriggerOffsetOutputDto:
      type: object
      properties:
        value:
          type: number
          description: Time value for offset
          example: 24
        unit:
          enum:
            - hour
            - minute
            - day
          type: string
          description: Unit for the offset time
          example: hour
      required:
        - value
        - unit
    WorkflowMessageOutputDto:
      type: object
      properties:
        subject:
          type: string
          description: Subject of the message
          example: >-
            Reminder: Your Meeting {EVENT_NAME} - {EVENT_DATE_ddd, MMM D, YYYY
            h:mma} with Cal.com
        html:
          type: string
          description: HTML content of the message
          example: <p>Reminder for {EVENT_NAME}.</p>
        text:
          type: string
          description: Text content of the message (used for SMS/WhatsApp)
          example: Reminder for {EVENT_NAME}.
      required:
        - subject
    WorkflowStepPathOutputDto_2026_09_22:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the path
          example: 3f4c11a2-9b7e-4d15-8f0a-2f7de41b6c01
        name:
          type: string
          description: Name of the path
          example: Enterprise leads
        position:
          type: number
          description: Position of the path among the branches of its step, starting at 0
          example: 0
        conditions:
          description: >-
            The conditions deciding whether this path matches. A path with no
            conditions always matches.
          type: array
          items:
            $ref: '#/components/schemas/WorkflowPathConditionOutputDto'
        matches:
          enum:
            - all
            - any
            - none
            - not_all
          type: string
          description: >-
            all: every condition matches; any: at least one matches; none: no
            conditions match; not_all: at least one condition does not match.
          example: all
      required:
        - id
        - name
        - position
        - conditions
        - matches
    WorkflowPathConditionOutputDto:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the condition
          example: b1d2e3f4-5a6b-4c7d-8e9f-0a1b2c3d4e5f
        field:
          type: string
          description: >-
            What the condition reads: a booking question identifier, a routing
            form field id, or an event field id.
          example: company-size
        operator:
          type: string
          description: >-
            How the field is compared, as the conditions editor stores it. The
            operator belongs to the field's type: text, email, phone and number
            fields use `equal`, `not_equal`, `like`, `greater`, `between` and
            the like; a select uses `select_equals` or `select_any_in`; a
            multiselect uses `multiselect_equals`. To render an operator with
            the label the editor shows, resolve the field's type from the
            booking questions of the event types this workflow is active on, or
            from the routing form's fields for a form workflow.
          example: select_equals
          enum:
            - between
            - equal
            - greater
            - greater_or_equal
            - is_empty
            - is_not_empty
            - less
            - less_or_equal
            - like
            - multiselect_equals
            - multiselect_not_equals
            - not_between
            - not_equal
            - not_like
            - select_any_in
            - select_equals
            - select_not_any_in
            - select_not_equals
            - starts_with
        values:
          description: >-
            The values the field is compared against. Empty for operators that
            take none, such as is_empty.
          example:
            - enterprise
          type: array
          items:
            type: string
      required:
        - id
        - field
        - operator
        - values
    WorkflowDelayDurationOutputDto:
      type: object
      properties:
        value:
          type: number
          description: How long to wait before the next sending step
          example: 2
        unit:
          enum:
            - hour
            - minute
            - day
          type: string
          description: Unit for the delay duration
          example: hour
      required:
        - value
        - unit

````

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