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

# Duplicate a Scheduling Page

> Copy a scheduling page with its durations, locations, hosts and questions. The copy gets a new link and stays inactive until you activate it.



## OpenAPI

````yaml POST /event-types/{uuid}/duplicate
openapi: 3.0.0
info:
  title: Zeeg Public API
  description: >-
    Zeeg public API documentation.


    ## Authentication

    All endpoints require a Bearer token. You can generate an API token from
    [your Zeeg dashboard](https://app.zeeg.me/account/settings/api-access).


    Each token is scoped to specific permissions (e.g. `events:read`,
    `webhooks:write`). Make sure your token has the required scopes for the
    endpoints you want to use.


    ## Responses

    Every response is JSON, whatever `Accept` header the request sends.
  version: 2.0.0
  x-logo:
    url: https://app.zeeg.me/img/logo-dark.2ca83593.svg
    backgroundColor: '#f7f7f9'
    altText: zeeg
  contact:
    name: Zeeg Support
    email: support@zeeg.me
    url: https://zeeg.me/en/contact
  license:
    name: Proprietary
    url: https://zeeg.me/en/legal/terms
  termsOfService: https://zeeg.me/en/legal/terms
servers:
  - url: https://api.zeeg.me/v2
    description: Production
security:
  - bearer: []
tags:
  - name: Scheduled Events
    description: Management of events scheduled via Zeeg
  - name: Scheduling Pages
    description: Scheduling pages information and management
  - name: Availability Schedule
    description: Read and change availability for users
  - name: Webhooks
    description: Webhooks management
  - name: Notes
    description: Notes for scheduled events
  - name: Workspaces & Teams
    description: Workspace users and team member management
  - name: AI Agent
    description: AI Agent integration endpoints
  - name: Payloads
    description: Webhook payload schemas
  - name: CRM - Objects
    description: >-
      Discover the schema of CRM objects (standard and custom) including all
      attribute definitions
  - name: CRM - Companies
    description: Create, read, update, and delete CRM company records
  - name: CRM - People
    description: Create, read, update, and delete CRM person records
  - name: Routing Forms - Forms
    description: Read routing forms with their questions and their routes
  - name: Routing Forms - Submissions
    description: Read and delete the submissions that invitees send through a routing form
paths:
  /event-types/{uuid}/duplicate:
    parameters:
      - schema:
          type: string
          format: uuid
        name: uuid
        in: path
        required: true
        description: UUID of the scheduling page to copy
    post:
      tags:
        - Scheduling Pages
      summary: Duplicate a scheduling page
      description: >-
        Copies a scheduling page with its durations, locations, hosts, questions
        and settings, as the dashboard's duplicate action does, and answers with
        the copy as fetching it returns it. Workflows and single-use links are
        not copied. The copy has its own `uuid`, "(copy)" in its title and a new
        slug, and is created inactive, so its booking link takes no bookings
        until you activate it. Each call makes another copy. Requires the
        `event_types:write` scope.
      operationId: post-api-event-type-duplicate
      responses:
        '201':
          description: >-
            Created. The body is the copy as `GET /event-types/{uuid}` returns
            it; `isActive` is false.
          content:
            application/json:
              schema:
                type: object
                required:
                  - resource
                properties:
                  resource:
                    $ref: '#/components/schemas/SchedulingPageDetail'
        '401':
          $ref: '#/components/responses/401'
        '403':
          description: Your role does not allow this page to be written.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchedulingPageWriteError'
        '404':
          description: The page does not exist or is not one you may manage.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              examples:
                Scheduling page not found:
                  value:
                    error: Entry for EventType not found
        '422':
          description: >-
            The page is an active group page and your plan does not include
            group pages.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchedulingPageWriteError'
      security:
        - bearer: []
components:
  schemas:
    SchedulingPageDetail:
      description: >-
        A scheduling page (event type) with full details, as returned when
        fetching a single scheduling page. Extends the list shape with hosts,
        notifications, and Flexi configuration.
      allOf:
        - $ref: '#/components/schemas/SchedulingPage'
        - type: object
          properties:
            notifications:
              type: object
              description: >-
                Notification settings for this scheduling page, including
                invitee email behaviour, host email behaviour and the templates
                used by the dashboard UI.
              properties:
                inviteeConfirmation:
                  type: string
                  enum:
                    - calendar_invitation
                    - email
                    - none
                  description: >-
                    How the invitee is notified once a booking is confirmed.
                    `calendar_invitation` sends a calendar invite from the
                    host's connected calendar, `email` sends a Zeeg confirmation
                    email, `none` sends nothing.
                addEventLinkNotif:
                  type: boolean
                  description: >-
                    When true, invitee notification emails include a link to the
                    event detail page.
                excludePII:
                  type: boolean
                  description: >-
                    When true, host notification emails omit the invitee's
                    personal information.
                excludeHostEmails:
                  type: boolean
                  description: >-
                    When true, hosts do not receive confirmation, update or
                    cancellation emails for events booked on this scheduling
                    page.
                privateCalendarEvent:
                  type: boolean
                  description: >-
                    When true, the calendar event synced to the host's connected
                    calendar (Google, Microsoft or Exchange) is marked as
                    private, so people with access to the host's calendar see
                    only the busy time and not the subject, attendees or
                    location.
                defaultNotifications:
                  type: object
                  description: >-
                    Pre-filled default templates (subject, body and available
                    variables), keyed by notification type: the invitee emails
                    and calendar invitation in the scheduling page language, and
                    the texts the hosts read (the host confirmation and
                    cancellation emails and the CRM meeting notes) in the
                    requesting user's dashboard language. Primarily consumed by
                    the dashboard UI.
                  additionalProperties: true
                customNotifications:
                  type: object
                  description: >-
                    Customized template overrides (subject and body), keyed by
                    notification type. Only populated for notification types the
                    user has customized.
                  additionalProperties: true
                notificationVariables:
                  type: array
                  description: >-
                    Template variables available for use in custom notification
                    templates.
                  items:
                    type: object
                    properties:
                      key:
                        type: string
                      title:
                        type: string
            hosts:
              type: array
              description: >-
                Assigned hosts for the scheduling page. Populated for
                ONE_ON_ONE, GROUP, ROUND_ROBIN and COLLECTIVE pages. For FLEXI
                pages this array is empty; see `flexiCollections` instead.
              items:
                type: object
                properties:
                  uuid:
                    type: string
                    description: Stable identifier of the host user.
                  firstName:
                    type: string
                  lastName:
                    type: string
                    nullable: true
                  email:
                    type: string
                    format: email
                  avatarUrl:
                    type: string
                    format: uri
                    nullable: true
                  slug:
                    type: string
                  priority:
                    type: integer
                    nullable: true
                    description: Round-robin priority weighting, when applicable.
                  schedule:
                    nullable: true
                    allOf:
                      - $ref: '#/components/schemas/EmbeddedSchedule'
                      - type: object
                        required:
                          - isDefault
                        properties:
                          isDefault:
                            type: boolean
                            description: >-
                              Whether this is the host's default schedule, or
                              one dedicated to this page.
                    x-mint:
                      post:
                        - Alpha
                    description: >-
                      The availability schedule this host uses for this
                      scheduling page, inlined. Only populated when
                      `availabilityType` is `per_host`; `null` when the page
                      uses a shared schedule (see the top-level `schedule`).
            flexiCollections:
              type: array
              description: >-
                Host collections for FLEXI scheduling pages. Empty for all other
                page types.
              items:
                type: object
                properties:
                  hostStatus:
                    type: string
                  members:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        firstName:
                          type: string
                        lastName:
                          type: string
                          nullable: true
                        email:
                          type: string
                          format: email
                        avatarUrl:
                          type: string
                          format: uri
                          nullable: true
                        slug:
                          type: string
            schedule:
              nullable: true
              allOf:
                - $ref: '#/components/schemas/EmbeddedSchedule'
              x-mint:
                post:
                  - Alpha
              description: >-
                The page-level availability schedule shared by all hosts,
                inlined with full hours (the list endpoint returns a reference
                only). Only populated when `availabilityType` is `shared`.
            currentTime:
              type: string
              format: date-time
              description: Current server time
            isSecret:
              type: boolean
            questionSettings:
              allOf:
                - $ref: '#/components/schemas/SchedulingPageQuestions'
              description: >-
                Present only when `expand` names it. The booking form as `GET
                /event-types/{uuid}/questions` returns it, hidden questions and
                CRM fields included.
            notificationSettings:
              allOf:
                - $ref: '#/components/schemas/SchedulingPageNotifications'
              description: >-
                Present only when `expand` names it. The notification settings
                as `GET /event-types/{uuid}/notifications` returns them, custom
                texts included.
    SchedulingPageWriteError:
      type: object
      properties:
        success:
          type: boolean
        message:
          type: string
        status:
          type: integer
    SchedulingPage:
      type: object
      required:
        - uri
        - uuid
        - title
        - type
        - slug
        - schedulingUrl
        - isActive
        - duration
        - profile
        - color
        - language
        - maxActiveInvitees
        - inviteeNameFormat
      properties:
        uri:
          type: string
          format: uri
        uuid:
          type: string
          format: uuid
        title:
          type: string
        type:
          type: string
        slug:
          type: string
        schedulingUrl:
          type: string
          format: uri
        isActive:
          type: boolean
        duration:
          type: integer
        eventDurations:
          type: array
          description: The durations an invitee can pick, shortest first.
          items:
            type: object
            properties:
              minutes:
                type: integer
              default:
                type: boolean
              price:
                type: number
                nullable: true
                description: >-
                  Price charged for this duration on a paid scheduling page, in
                  the page currency. `null` when the duration is free.
                example: 10.5
        profile:
          type: object
          nullable: true
          required:
            - type
          properties:
            type:
              type: string
            firstName:
              type: string
            lastName:
              type: string
              nullable: true
            slug:
              type: string
            url:
              type: string
              format: uri
            avatarUrl:
              type: string
              format: uri
              nullable: true
            email:
              type: string
              format: email
        description:
          type: string
          nullable: true
        color:
          type: string
        language:
          type: string
          enum:
            - en
            - de
            - de-du
            - nl
            - fi
            - es
            - fr
            - pl
            - da
            - sv
            - it
          description: >-
            The language of the booking page and of the emails its invitees get:
            `en` English, `de` German addressing the invitee formally (Sie),
            `de-du` German addressing the invitee informally (du), `nl` Dutch,
            `fi` Finnish, `es` Spanish, `fr` French, `pl` Polish, `da` Danish,
            `sv` Swedish, `it` Italian.
        maxActiveInvitees:
          type: integer
        inviteeNameFormat:
          type: string
        inviteePhoneNumber:
          type: boolean
        inviteeQuestions:
          type: array
          nullable: true
          items:
            type: object
            required:
              - order
              - question
              - isActive
              - isRequired
              - type
            properties:
              id:
                type: integer
                description: >-
                  Numeric ID of the question, used when submitting answers via
                  the booking API.
              order:
                type: integer
              question:
                type: string
              isActive:
                type: boolean
              isRequired:
                type: boolean
              type:
                type: string
              options:
                type: array
                nullable: true
                items: {}
        availabilityType:
          type: string
          enum:
            - shared
            - per_host
          x-mint:
            post:
              - Alpha
          description: >-
            Where the availability schedule for this scheduling page lives.
            `shared` — one schedule is set on the page itself and applies to
            everyone; see `schedule`. `per_host` — each host has their own
            schedule for this page (COLLECTIVE / ROUND_ROBIN); the per-host
            schedules are returned on the single-page endpoint in
            `hosts[].schedule`.
        schedule:
          type: object
          nullable: true
          required:
            - uri
            - uuid
            - title
          x-mint:
            post:
              - Alpha
          description: >-
            Reference to the page-level availability schedule shared by all
            hosts. `null` when `availabilityType` is `per_host`. In list
            responses this is a reference only; the single-page endpoint inlines
            the full schedule (hours and overrides).
          properties:
            uri:
              type: string
              format: uri
              example: https://api.zeeg.me/v2/schedules/Q1ZYo391da
              description: API resource URI for this schedule
            uuid:
              type: string
              description: Schedule identifier
              example: Q1ZYo391da
            title:
              type: string
              description: Display name of the schedule
        confirmation:
          type: object
          required:
            - redirectEnabled
            - redirectUrl
            - confirmationDataInUrl
            - redirectDelay
          description: >-
            What happens after a booking is confirmed on this scheduling page.
            Always present, in its off state when no redirect is configured, so
            the fields can be read without first testing whether a redirect
            exists. Returned identically by this endpoint and by `GET
            /event-types/{uuid}`.
          properties:
            redirectEnabled:
              type: boolean
              description: >-
                Whether the invitee is sent to an external URL after booking
                instead of staying on the Zeeg confirmation page.
              example: true
            redirectUrl:
              type: string
              format: uri
              nullable: true
              description: >-
                Destination the invitee is sent to. Can be `null` while
                `redirectEnabled` is `true`, so test it before you use it.
              example: https://acme.com/thanks
            confirmationDataInUrl:
              type: boolean
              description: >-
                Whether the booking details are appended to `redirectUrl` as
                query parameters. Carries `invitee_uuid` and `assigned_to`
                alongside the start and end times, the guests, the invitee name
                and email, the answers to booking questions, and any `c__`
                custom query parameters. `invitee_uuid` is the same identifier
                the `invitee.scheduled` webhook sends as `inviteeUuid`.
              example: true
            redirectDelay:
              type: integer
              minimum: 0
              description: >-
                Seconds the confirmation page is shown before the redirect
                happens. `0` redirects immediately.
              example: 10
      description: A scheduling page (event type) as returned in list responses.
    EmbeddedSchedule:
      type: object
      description: >-
        An availability schedule embedded in a scheduling-page response. Same
        identifiers and hours vocabulary as the Availability Schedules
        endpoints; `uuid` can be used directly with `GET /schedules/{uuid}`.
        User-level time off (vacation, out-of-office) is per user, not per
        schedule, and is not embedded — fetch it via `GET
        /schedules?email={host}`.
      required:
        - uri
        - uuid
        - title
        - timezone
        - weeklyHours
        - specialHours
      properties:
        uri:
          type: string
          format: uri
          example: https://api.zeeg.me/v2/schedules/Q1ZYo391da
          description: API resource URI for this schedule
        uuid:
          type: string
          description: Schedule identifier
          example: Q1ZYo391da
        title:
          type: string
          description: Display name of the schedule
        timezone:
          type: string
          description: IANA timezone identifier
        weeklyHours:
          type: array
          items:
            type: object
            properties:
              day:
                type: string
                enum:
                  - Mon
                  - Tue
                  - Wed
                  - Thu
                  - Fri
                  - Sat
                  - Sun
                description: Day of the week (3-letter).
              timesets:
                type: array
                items:
                  type: array
                  minItems: 2
                  maxItems: 2
                  items:
                    type: string
                    pattern: ^\d{2}:\d{2}$
                description: Time intervals for the day
          description: Weekly recurring availability hours
        specialHours:
          type: array
          nullable: true
          items:
            type: object
            properties:
              date:
                type: string
                format: date
              timesets:
                type: array
                nullable: true
                items:
                  type: array
                  minItems: 2
                  maxItems: 2
                  items:
                    type: string
                    pattern: ^\d{2}:\d{2}$
          description: Date-specific availability overrides
    SchedulingPageQuestions:
      type: object
      required:
        - askForPhoneNumber
        - allowAdditionalGuests
        - nameFormat
        - questions
      properties:
        askForPhoneNumber:
          type: boolean
          description: Whether the booking form asks for the invitee's phone number.
        allowAdditionalGuests:
          type: boolean
          description: >-
            Whether invitees may add guests. Always false while the workspace
            requires invitee email verification, whatever was set.
        nameFormat:
          type: string
          enum:
            - FULL_NAME
            - SEPARATED
            - SEPARATED_WITH_SALUTATION
          description: >-
            One name field, first and last name, or first and last name with a
            salutation.
        questions:
          type: array
          description: Every question in display order, hidden ones included.
          items:
            $ref: '#/components/schemas/SchedulingPageQuestion'
    SchedulingPageNotifications:
      type: object
      required:
        - inviteeConfirmation
        - addEventLinkNotif
        - privateCalendarEvent
        - excludePII
        - excludeHostEmails
        - calendarAdditionalAttendees
        - customNotifications
      properties:
        inviteeConfirmation:
          type: string
          enum:
            - calendar_invitation
            - email
            - none
          description: How the invitee is told about the booking.
        addEventLinkNotif:
          type: boolean
          description: Whether invitee emails carry the links to reschedule or cancel.
        privateCalendarEvent:
          type: boolean
          description: Whether the calendar entry is marked private.
        excludePII:
          type: boolean
          description: >-
            Whether host emails and calendar entries leave out the invitee's
            details.
        excludeHostEmails:
          type: boolean
          description: Whether the hosts get no booking emails.
        calendarAdditionalAttendees:
          type: array
          maxItems: 3
          items:
            type: string
            format: email
          description: >-
            Addresses added to every calendar invitation once each has
            confirmed.
        customNotifications:
          description: >-
            Only the notifications with their own text; every other one sends
            its default.
          allOf:
            - $ref: '#/components/schemas/SchedulingPageCustomNotifications'
    SchedulingPageQuestion:
      type: object
      required:
        - id
        - label
        - type
        - required
        - active
        - choices
        - crmAttribute
      properties:
        id:
          type: integer
          example: 812
        label:
          type: string
          example: What would you like to discuss?
        type:
          type: string
          enum:
            - TEXT_INPUT
            - TEXTAREA
            - SELECT
            - RADIO_INPUT
            - CHECKBOX
            - DATE_INPUT
            - PHONE_NUMBER
            - CRM_ATTRIBUTE
        required:
          type: boolean
        active:
          type: boolean
          description: false while the question is hidden from the booking form.
        choices:
          type: array
          nullable: true
          items:
            type: string
          description: >-
            The answers to pick from, for SELECT, RADIO_INPUT and CHECKBOX; null
            for other types.
        crmAttribute:
          type: object
          nullable: true
          description: >-
            The CRM field the answer is saved to, for CRM_ATTRIBUTE; null for
            other types.
          properties:
            objectSlug:
              type: string
              example: people
            attributeSlug:
              type: string
              example: job_title
            overrideValue:
              type: boolean
              description: true overwrites a value the CRM record already holds.
    SchedulingPageCustomNotifications:
      type: object
      description: >-
        Own texts per notification. Tags are written as `:tag`, for example
        `:invitee_full_name`, `:scheduling_page_name`, `:event_start_date`,
        `:event_start_time`, `:location`, `:meeting_link`, `:cancellation_link`,
        `:rescheduling_link` and `:questions_and_answers`; cancellation texts
        also take `:canceled_by` and `:cancellation_reason`.
      properties:
        inviteeConfirmation:
          description: The email the invitee gets when they book.
          allOf:
            - $ref: '#/components/schemas/SchedulingPageNotificationText'
        inviteeCancellation:
          description: The email the invitee gets when the booking is cancelled.
          allOf:
            - $ref: '#/components/schemas/SchedulingPageNotificationText'
        hostConfirmation:
          description: The email the hosts get for a new booking.
          allOf:
            - $ref: '#/components/schemas/SchedulingPageNotificationText'
        hostCancellation:
          description: The email the hosts get when a booking is cancelled.
          allOf:
            - $ref: '#/components/schemas/SchedulingPageNotificationText'
        inviteeInvitation:
          description: >-
            The calendar invitation. The subject is the event title, the body
            its description.
          allOf:
            - $ref: '#/components/schemas/SchedulingPageNotificationText'
        hubspot:
          description: The meeting note written to HubSpot for a booking.
          allOf:
            - $ref: '#/components/schemas/SchedulingPageNotificationText'
        hubspot_group:
          description: >-
            The HubSpot note for a booking on a page with several invitees per
            slot.
          allOf:
            - $ref: '#/components/schemas/SchedulingPageNotificationText'
        pipedrive:
          description: The meeting note written to Pipedrive for a booking.
          allOf:
            - $ref: '#/components/schemas/SchedulingPageNotificationText'
        pipedrive_group:
          description: >-
            The Pipedrive note for a booking on a page with several invitees per
            slot.
          allOf:
            - $ref: '#/components/schemas/SchedulingPageNotificationText'
        salesforce:
          description: The meeting note written to Salesforce for a booking.
          allOf:
            - $ref: '#/components/schemas/SchedulingPageNotificationText'
        salesforce_group:
          description: >-
            The Salesforce note for a booking on a page with several invitees
            per slot.
          allOf:
            - $ref: '#/components/schemas/SchedulingPageNotificationText'
    SchedulingPageNotificationText:
      type: object
      required:
        - subject
        - body
      properties:
        subject:
          type: string
          maxLength: 500
          example: 'Confirmed: :scheduling_page_name on :event_start_date'
        body:
          type: string
          maxLength: 3000
          description: >-
            Simple HTML (p, br, b, strong, i, em, u, a, ul, ol, li, blockquote,
            code, span, div, table). The lengths count text without markup.
          example: <p>Hi :invitee_first_name, see you at :event_start_time.</p>
        isModerationValid:
          type: boolean
          readOnly: true
          description: >-
            false when moderation rejected this text. It is not sent, and the
            default text goes out instead.
  responses:
    '401':
      description: Unauthorized
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Unauthenticated.
          examples:
            Unauthenticated:
              value:
                message: Unauthenticated.
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: ''

````

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