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

# Update an event

> Change an event’s title, description, schedule, venue, image or publication status.



## OpenAPI

````yaml api-reference/openapi.json PATCH /events/{id}
openapi: 3.0.3
info:
  title: TicketSpot Developer API
  version: 2.1.0
  description: >-
    Manage events and attendees for the site associated with your API key.
    Developer API access requires a paid Business, Business+ or Platform plan.
    Free plans, trials and ticket packs do not grant API access. Eligibility is
    checked on every request using the billing plan resolver and its existing
    cache invalidation.


    Create a key in the dashboard under Settings > API Keys. Send Authorization:
    Bearer <api_key>. Keys use ts-{uuid}-{secret}; the secret is shown once and
    stored as a hash. Available scopes: events:read, events:create,
    events:update, attendees:read, attendees:scan.


    Rate limits are shared across application instances: 120 requests/minute per
    key, 600 requests/minute per site, and 300 requests/minute per IP before
    authentication. Responses include RateLimit-Limit, RateLimit-Remaining and
    RateLimit-Reset (seconds until reset). Exceeding a limit returns 429 with
    Retry-After. Redis outages return 503. Maximum API body size is 8 MiB.


    Event and attendee lists use cursor pagination: limit defaults to 25
    (maximum 100), and pagination.next_cursor is null at the end. Attendee
    search matches case-insensitive prefixes of names and email addresses.
    Scanning ordinary tickets queues the existing check-in task; a 202 means
    accepted for processing, and the attendee record may update shortly
    afterward. Invalid or duplicate scans return 409.
servers:
  - url: https://ticketspotapp.com/api/api/v2
    description: Production API
security:
  - bearerAuth: []
paths:
  /events/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    patch:
      summary: Update an event
      description: >-
        Partial update of a native TicketSpot event. Ownership and internal
        fields are read-only. Date edits are interpreted in the event timezone;
        a timezone change preserves its previous local clock times. Existing
        occurrence synchronization and approval rules apply.
      operationId: updateEvent
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateEvent'
      responses:
        '200':
          description: Updated event.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  event:
                    $ref: '#/components/schemas/Event'
        '400':
          $ref: '#/components/responses/Error400'
        '401':
          $ref: '#/components/responses/Error401'
        '403':
          $ref: '#/components/responses/Error403'
        '404':
          $ref: '#/components/responses/Error404'
        '409':
          $ref: '#/components/responses/Error409'
        '413':
          $ref: '#/components/responses/Error413'
        '429':
          $ref: '#/components/responses/Error429'
        '500':
          $ref: '#/components/responses/Error500'
        '503':
          $ref: '#/components/responses/Error503'
components:
  parameters:
    Id:
      name: id
      in: path
      required: true
      schema:
        type: string
      description: Resource ID on the authenticated site.
  schemas:
    UpdateEvent:
      type: object
      properties:
        title:
          type: string
          minLength: 1
          maxLength: 200
          example: Developer Conference
        description:
          type: string
          maxLength: 50000
          description: Sanitized HTML event description.
        start_date:
          type: string
          format: date
          example: '2026-11-15'
        start_time:
          type: string
          pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]$
          example: '09:00'
        end_date:
          type: string
          format: date
          example: '2026-11-15'
        end_time:
          type: string
          pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]$
          example: '17:00'
        timezone:
          type: string
          example: America/Los_Angeles
          description: Valid IANA timezone. Nonexistent local times are rejected.
        venue:
          $ref: '#/components/schemas/VenueInput'
        hostName:
          type: string
          maxLength: 200
        image:
          type: string
          description: >-
            Direct public HTTPS URL (no redirects, private addresses,
            credentials or custom ports), or base64 data URL for JPEG, PNG, WebP
            or GIF. Maximum decoded size 5 MiB; images are validated and
            converted to JPEG.
        status:
          type: string
          enum:
            - draft
            - live
          default: live
      minProperties: 1
      additionalProperties: false
    Event:
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        description:
          type: string
        start_date:
          type: string
          format: date-time
        end_date:
          type: string
          format: date-time
        timezone:
          type: string
        venue:
          type: object
          additionalProperties: true
        venue_name:
          type: string
        latitude:
          oneOf:
            - type: string
            - type: number
          nullable: true
        longitude:
          oneOf:
            - type: string
            - type: number
          nullable: true
        image_url:
          type: string
          nullable: true
        hostName:
          type: string
          nullable: true
        subdomain:
          type: string
          nullable: true
        url:
          type: string
          nullable: true
        status:
          type: string
        is_demo:
          type: boolean
        created_at:
          type: string
          format: date-time
    VenueInput:
      type: object
      properties:
        venue_name:
          type: string
          maxLength: 1000
        multi_line_address_display:
          type: string
          maxLength: 1000
        latitude:
          type: number
          minimum: -90
          maximum: 90
        longitude:
          type: number
          minimum: -180
          maximum: 180
        address:
          type: object
          properties:
            address_1:
              type: string
              maxLength: 500
            address_2:
              type: string
              maxLength: 500
            city:
              type: string
              maxLength: 500
            region:
              type: string
              maxLength: 500
            postal_code:
              type: string
              maxLength: 500
            country:
              type: string
              maxLength: 500
            country_code:
              type: string
              maxLength: 500
            latitude:
              type: number
              minimum: -90
              maximum: 90
            longitude:
              type: number
              minimum: -180
              maximum: 180
          additionalProperties: false
      additionalProperties: false
    Error:
      type: object
      properties:
        error:
          type: string
        code:
          type: string
        message:
          type: string
  responses:
    Error400:
      description: Invalid request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Error401:
      description: Missing, invalid, expired or revoked API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Error403:
      description: Paid Business plan required, or API key is missing the operation scope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Error404:
      description: Resource not found on this site.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Error409:
      description: Operation conflicts with the resource state.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Error413:
      description: Request body exceeds 8 MiB.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Error429:
      description: Shared API rate limit exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
    Error500:
      description: Request could not be completed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Error503:
      description: Rate limiting or scan protection temporarily unavailable.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: TicketSpot API key
      description: ts-{uuid}-{secret}. Every key requires its independent secret.

````

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