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

# Duplicate an event

> Copies the event, its shifts, and its signup questions to a new start date. Shift
times shift along with it, keeping their time of day. Signups are **not** copied.

The copy is always created unpublished, so it does not count against your plan's
active-event limit until you publish it. This is the endpoint to use for "set up the
same signup for the next eight games".

Requires the `events:write` scope.



## OpenAPI

````yaml https://api.signupbreeze.com/openapi.yaml post /v1/events/{event_id}/duplicate
openapi: 3.0.3
info:
  title: SignUpBreeze API
  description: >-
    Manage events, shifts, and signups programmatically — from your own scripts,
    an

    automation platform, or an AI agent.


    ## Authentication


    Every request needs a bearer token, which an organization owner or admin
    creates

    under **Organization settings → API**. Tokens belong to the organization
    rather

    than to the person who created one, so an admin leaving does not break a
    live

    integration.


    Each token carries a set of scopes, and every endpoint states the scope it

    requires. A request whose token lacks the scope is refused with `403`.


    **Every token expires**, after at most a year and by default after exactly
    that.

    An expired token is refused with `401`, the same as a revoked one, so plan
    to

    create a replacement before the expiry date shown in settings — nothing
    using

    the old token keeps working past it.


    ## Rate limiting


    Requests are throttled per API token, not per organization — issuing more

    tokens does not raise the ceiling. The limit varies by plan: 30 requests/min

    on Free and Calendar, 120 on Starter, 300 on Pro.


    Every response carries `X-RateLimit-Limit` and `X-RateLimit-Remaining`.

    Exceeding the limit returns `429`, with `Retry-After` and
    `X-RateLimit-Reset`

    added to that response so you know when to try again.


    ## Idempotency


    Writes accept an `Idempotency-Key` header. Send the same key again and the
    original

    response is replayed rather than the write happening twice — worth using
    anywhere a

    retry is possible, which is most places an agent is involved.


    ## Pagination


    Collections are cursor paginated. Follow `meta.next_cursor` rather than
    assuming

    page numbers.


    ## Scoping


    Everything a token can reach belongs to its organization. Another
    organization's

    record answers `404` rather than `403`, so a token cannot be used to
    discover that

    it exists.
  version: 1.0.0
servers:
  - url: https://api.signupbreeze.com
security:
  - default: []
tags:
  - name: Events
    description: >-

      Create and manage events. Every endpoint is scoped to the organization
      that owns the

      token — another organization's event responds `404`, not `403`, so a token
      cannot be

      used to discover that it exists.
  - name: Organization
    description: |-

      The organization a token belongs to.
  - name: Shifts
    description: >-

      The time slots volunteers sign up for. Shift times are wall-clock strings
      like `14:30`,

      interpreted in the parent event's timezone against its start date — you
      never send a

      date or an offset for a shift.
  - name: Signups
    description: >-

      Who has signed up. Read-only in v1: signups are created through the public
      event page,

      which is deliberately the only way a volunteer is added.
externalDocs:
  description: SignUpBreeze documentation
  url: https://docs.signupbreeze.com/api-reference/introduction
paths:
  /v1/events/{event_id}/duplicate:
    parameters:
      - in: path
        name: event_id
        description: The ID of the event.
        example: 019fdf11-4bb2-7039-92c3-9e7f1ee711a1
        required: true
        schema:
          type: string
      - in: path
        name: event
        description: The id of the event to copy.
        example: 019fdf11-4bb2-7039-92c3-9e7f1ee711a1
        required: true
        schema:
          type: string
    post:
      tags:
        - Events
      summary: Duplicate an event
      description: >-
        Copies the event, its shifts, and its signup questions to a new start
        date. Shift

        times shift along with it, keeping their time of day. Signups are
        **not** copied.


        The copy is always created unpublished, so it does not count against
        your plan's

        active-event limit until you publish it. This is the endpoint to use for
        "set up the

        same signup for the next eight games".


        Requires the `events:write` scope.
      operationId: duplicateAnEvent
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                start_date:
                  type: string
                  description: The new event's start date, as YYYY-MM-DD.
                  example: '2026-10-03'
              required:
                - start_date
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    id: 019ff256-ecdb-70e9-8466-a2c97262ffdc
                    title: Adipisci quidem nostrum qui.
                    description: >-
                      Odit et et modi. Nostrum omnis autem et consequatur aut.
                      Enim non facere tempora ex voluptatem laboriosam
                      praesentium. Adipisci molestias fugit deleniti distinctio
                      eum doloremque id.


                      Aliquam veniam corporis dolorem mollitia deleniti nemo.
                      Quia officia est dignissimos neque. Odio veritatis
                      excepturi doloribus delectus fugit qui repudiandae. Est
                      alias tenetur ratione.
                    slug: adipisci-quidem-nostrum-qui-854
                    location: |-
                      80483 Kovacek Causeway
                      Moiseschester, AZ 60787-7092
                    is_virtual: false
                    start_date: '2026-09-22T05:51:00+00:00'
                    end_date: '2026-09-22T11:24:51+00:00'
                    timezone: UTC
                    is_published: false
                    public_url: http://localhost/e/adipisci-quidem-nostrum-qui-854
                    slots:
                      - id: 019ff256-ecdc-727c-ac4a-2d32df7f5179
                        event_id: 019ff256-ecdb-70e9-8466-a2c97262ffdc
                        title: Setup Team
                        location: null
                        is_virtual: false
                        start_time: '2026-09-24T16:30:44+00:00'
                        end_time: '2026-09-24T18:30:44+00:00'
                        capacity: 10
                        filled: 0
                        remaining: 10
                        created_at: '2026-08-11T19:40:10+00:00'
                        updated_at: '2026-08-11T19:40:10+00:00'
                    created_at: '2026-08-11T19:40:10+00:00'
                    updated_at: '2026-08-11T19:40:10+00:00'
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        example: 019ff256-ecdb-70e9-8466-a2c97262ffdc
                      title:
                        type: string
                        example: Adipisci quidem nostrum qui.
                      description:
                        type: string
                        example: >-
                          Odit et et modi. Nostrum omnis autem et consequatur
                          aut. Enim non facere tempora ex voluptatem laboriosam
                          praesentium. Adipisci molestias fugit deleniti
                          distinctio eum doloremque id.


                          Aliquam veniam corporis dolorem mollitia deleniti
                          nemo. Quia officia est dignissimos neque. Odio
                          veritatis excepturi doloribus delectus fugit qui
                          repudiandae. Est alias tenetur ratione.
                      slug:
                        type: string
                        example: adipisci-quidem-nostrum-qui-854
                      location:
                        type: string
                        example: |-
                          80483 Kovacek Causeway
                          Moiseschester, AZ 60787-7092
                      is_virtual:
                        type: boolean
                        example: false
                      start_date:
                        type: string
                        example: '2026-09-22T05:51:00+00:00'
                      end_date:
                        type: string
                        example: '2026-09-22T11:24:51+00:00'
                      timezone:
                        type: string
                        example: UTC
                      is_published:
                        type: boolean
                        example: false
                      public_url:
                        type: string
                        example: http://localhost/e/adipisci-quidem-nostrum-qui-854
                      slots:
                        type: array
                        example:
                          - id: 019ff256-ecdc-727c-ac4a-2d32df7f5179
                            event_id: 019ff256-ecdb-70e9-8466-a2c97262ffdc
                            title: Setup Team
                            location: null
                            is_virtual: false
                            start_time: '2026-09-24T16:30:44+00:00'
                            end_time: '2026-09-24T18:30:44+00:00'
                            capacity: 10
                            filled: 0
                            remaining: 10
                            created_at: '2026-08-11T19:40:10+00:00'
                            updated_at: '2026-08-11T19:40:10+00:00'
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              example: 019ff256-ecdc-727c-ac4a-2d32df7f5179
                            event_id:
                              type: string
                              example: 019ff256-ecdb-70e9-8466-a2c97262ffdc
                            title:
                              type: string
                              example: Setup Team
                            location:
                              type: string
                              example: null
                              nullable: true
                            is_virtual:
                              type: boolean
                              example: false
                            start_time:
                              type: string
                              example: '2026-09-24T16:30:44+00:00'
                            end_time:
                              type: string
                              example: '2026-09-24T18:30:44+00:00'
                            capacity:
                              type: integer
                              example: 10
                            filled:
                              type: integer
                              example: 0
                            remaining:
                              type: integer
                              example: 10
                            created_at:
                              type: string
                              example: '2026-08-11T19:40:10+00:00'
                            updated_at:
                              type: string
                              example: '2026-08-11T19:40:10+00:00'
                      created_at:
                        type: string
                        example: '2026-08-11T19:40:10+00:00'
                      updated_at:
                        type: string
                        example: '2026-08-11T19:40:10+00:00'
        '404':
          description: no such event, or it belongs to another organization
          content:
            application/json:
              schema:
                type: object
                example:
                  message: Not found.
                properties:
                  message:
                    type: string
                    example: Not found.
        '422':
          description: validation failed
          content:
            application/json:
              schema:
                type: object
                example:
                  message: The start date field is required.
                  errors:
                    start_date:
                      - The start date field is required.
                properties:
                  message:
                    type: string
                    example: The start date field is required.
                  errors:
                    type: object
                    properties:
                      start_date:
                        type: array
                        example:
                          - The start date field is required.
                        items:
                          type: string
components:
  securitySchemes:
    default:
      type: http
      scheme: bearer
      description: >-
        Create a token under <b>Organization settings → API</b>. Tokens are
        shown once, on creation. They belong to the organization, not to you, so
        they keep working if you leave the team. API access is included on every
        plan; the rate limit depends on the plan.

````