> ## 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.

# Edit an Event's location

> Changes the fields sent and keeps the rest of the location, including its `id`. `type` is required and must match the stored location; to change it, delete the location and add a new one. Pass null for `label`, `price` or `capacity` to remove it. A location returned as `type: "unknown"` can't be edited.

On a published Event, a location's price and currency can't change, and changing a location emails the guests. If the Event changes while the location is being saved, nothing is saved and 409 is returned.

The authenticated user must be its owner, one of its hosts, an accepted co-host, or a member of the owning team; an accepted co-host can't change a price. PBAC permission for team events: `calEvent.update`. Learn more about API access control at https://cal.com/docs/api-reference/v2/access-control. If accessed using an OAuth access token, the `EVENT_WRITE` scope is required.



## OpenAPI

````yaml /api-reference/v2/openapi.json patch /v2/events/{uuid}/locations/{locationId}
openapi: 3.0.0
info:
  title: Cal.com API v2
  description: ''
  version: 1.0.0
  contact: {}
servers: []
security: []
tags: []
paths:
  /v2/events/{uuid}/locations/{locationId}:
    patch:
      tags:
        - Events
      summary: Edit an Event's location
      description: >-
        Changes the fields sent and keeps the rest of the location, including
        its `id`. `type` is required and must match the stored location; to
        change it, delete the location and add a new one. Pass null for `label`,
        `price` or `capacity` to remove it. A location returned as `type:
        "unknown"` can't be edited.


        On a published Event, a location's price and currency can't change, and
        changing a location emails the guests. If the Event changes while the
        location is being saved, nothing is saved and 409 is returned.


        The authenticated user must be its owner, one of its hosts, an accepted
        co-host, or a member of the owning team; an accepted co-host can't
        change a price. PBAC permission for team events: `calEvent.update`.
        Learn more about API access control at
        https://cal.com/docs/api-reference/v2/access-control. If accessed using
        an OAuth access token, the `EVENT_WRITE` scope is required.
      operationId: EventLocationsController_update
      parameters:
        - name: uuid
          required: true
          in: path
          description: >-
            Event UUID. Accepts the canonical UUID (e.g.
            `018ff5cd-6dc4-7d57-bcbc-374702ca8b38`) or its short-uuid (Flickr
            Base58) form (e.g. `1cbZYoAFoJdwqN4tixezd5`).
          schema:
            type: string
            format: uuid
        - name: locationId
          required: true
          in: path
          description: The location's `id`, from `GET /v2/events/{uuid}/locations`.
          schema:
            type: string
        - 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:
              oneOf:
                - $ref: '#/components/schemas/UpdateEventAddressLocationInput'
                  title: Address
                - $ref: '#/components/schemas/UpdateEventLinkLocationInput'
                  title: Link
                - $ref: '#/components/schemas/UpdateEventIntegrationLocationInput'
                  title: Integration
                - $ref: >-
                    #/components/schemas/UpdateEventOrganizersDefaultAppLocationInput
                  title: Organizer Default App
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventLocationOutputResponseDto'
        '400':
          description: >-
            Invalid Event UUID, an invalid field, a different `type`, a price
            change on a published Event, or a cancelled Event
        '401':
          description: Unauthenticated
        '403':
          description: Insufficient permissions, or a co-host changing a price
        '404':
          description: Event or location not found
        '409':
          description: The Event changed while the location was being saved
components:
  schemas:
    UpdateEventAddressLocationInput:
      type: object
      properties:
        label:
          type: string
          nullable: true
          description: Name shown for this location. Pass null to remove it.
          maxLength: 100
        price:
          type: number
          nullable: true
          minimum: 1
          description: >-
            Price for this location, in the currency's smallest unit. Pass null
            to make it free.
          example: 1500
        currency:
          enum:
            - usd
            - eur
            - gbp
            - cad
            - aud
            - chf
            - nzd
            - jpy
            - brl
            - mxn
            - inr
            - sgd
            - hkd
            - dkk
            - nok
            - sek
            - pln
            - czk
            - huf
            - ron
            - bgn
            - krw
            - thb
            - php
            - myr
            - idr
            - try
            - zar
            - aed
            - cop
          type: string
          description: >-
            Cal Pay currency code. Required with `price` when the location has
            no currency yet.
          example: usd
        capacity:
          type: number
          nullable: true
          minimum: 1
          description: >-
            Seats at this location. Pass null for unlimited. All locations
            together can have at most 100000 seats.
          maximum: 100000
        type:
          type: string
          example: address
          enum:
            - address
          description: The location's type. It can't change.
        address:
          type: string
          minLength: 1
          example: 1 Example Street, Berlin
      required:
        - type
    UpdateEventLinkLocationInput:
      type: object
      properties:
        label:
          type: string
          nullable: true
          description: Name shown for this location. Pass null to remove it.
          maxLength: 100
        price:
          type: number
          nullable: true
          minimum: 1
          description: >-
            Price for this location, in the currency's smallest unit. Pass null
            to make it free.
          example: 1500
        currency:
          enum:
            - usd
            - eur
            - gbp
            - cad
            - aud
            - chf
            - nzd
            - jpy
            - brl
            - mxn
            - inr
            - sgd
            - hkd
            - dkk
            - nok
            - sek
            - pln
            - czk
            - huf
            - ron
            - bgn
            - krw
            - thb
            - php
            - myr
            - idr
            - try
            - zar
            - aed
            - cop
          type: string
          description: >-
            Cal Pay currency code. Required with `price` when the location has
            no currency yet.
          example: usd
        capacity:
          type: number
          nullable: true
          minimum: 1
          description: >-
            Seats at this location. Pass null for unlimited. All locations
            together can have at most 100000 seats.
          maximum: 100000
        type:
          type: string
          example: link
          enum:
            - link
          description: The location's type. It can't change.
        link:
          type: string
          format: uri
          example: https://example.com/watch
      required:
        - type
    UpdateEventIntegrationLocationInput:
      type: object
      properties:
        label:
          type: string
          nullable: true
          description: Name shown for this location. Pass null to remove it.
          maxLength: 100
        price:
          type: number
          nullable: true
          minimum: 1
          description: >-
            Price for this location, in the currency's smallest unit. Pass null
            to make it free.
          example: 1500
        currency:
          enum:
            - usd
            - eur
            - gbp
            - cad
            - aud
            - chf
            - nzd
            - jpy
            - brl
            - mxn
            - inr
            - sgd
            - hkd
            - dkk
            - nok
            - sek
            - pln
            - czk
            - huf
            - ron
            - bgn
            - krw
            - thb
            - php
            - myr
            - idr
            - try
            - zar
            - aed
            - cop
          type: string
          description: >-
            Cal Pay currency code. Required with `price` when the location has
            no currency yet.
          example: usd
        capacity:
          type: number
          nullable: true
          minimum: 1
          description: >-
            Seats at this location. Pass null for unlimited. All locations
            together can have at most 100000 seats.
          maximum: 100000
        type:
          type: string
          example: integration
          enum:
            - integration
          description: The location's type. It can't change.
        integration:
          enum:
            - cal-video
            - google-meet
            - zoom
            - whereby-video
            - whatsapp-video
            - webex-video
            - telegram-video
            - tandem
            - sylaps-video
            - skype-video
            - sirius-video
            - signal-video
            - shimmer-video
            - salesroom-video
            - roam-video
            - riverside-video
            - ping-video
            - office365-video
            - mirotalk-video
            - jitsi
            - jelly-video
            - jelly-conferencing
            - huddle
            - facetime-video
            - element-call-video
            - eightxeight-video
            - discord-video
            - demodesk-video
            - campfire-video
          type: string
          example: cal-video
          description: >-
            Switching the integration drops the stored `credentialId` unless a
            new one is sent.
        credentialId:
          type: number
          description: >-
            Identifies which connected account will host the Event when a host
            has multiple connected accounts.
      required:
        - type
    UpdateEventOrganizersDefaultAppLocationInput:
      type: object
      properties:
        label:
          type: string
          nullable: true
          description: Name shown for this location. Pass null to remove it.
          maxLength: 100
        price:
          type: number
          nullable: true
          minimum: 1
          description: >-
            Price for this location, in the currency's smallest unit. Pass null
            to make it free.
          example: 1500
        currency:
          enum:
            - usd
            - eur
            - gbp
            - cad
            - aud
            - chf
            - nzd
            - jpy
            - brl
            - mxn
            - inr
            - sgd
            - hkd
            - dkk
            - nok
            - sek
            - pln
            - czk
            - huf
            - ron
            - bgn
            - krw
            - thb
            - php
            - myr
            - idr
            - try
            - zar
            - aed
            - cop
          type: string
          description: >-
            Cal Pay currency code. Required with `price` when the location has
            no currency yet.
          example: usd
        capacity:
          type: number
          nullable: true
          minimum: 1
          description: >-
            Seats at this location. Pass null for unlimited. All locations
            together can have at most 100000 seats.
          maximum: 100000
        type:
          type: string
          example: organizersDefaultApp
          enum:
            - organizersDefaultApp
          description: The location's type. It can't change.
      required:
        - type
    EventLocationOutputResponseDto:
      type: object
      properties:
        status:
          enum:
            - success
            - error
          type: string
          example: success
        data:
          oneOf:
            - $ref: '#/components/schemas/EventAddressLocationOutput'
              title: Address
            - $ref: '#/components/schemas/EventLinkLocationOutput'
              title: Link
            - $ref: '#/components/schemas/EventIntegrationLocationOutput'
              title: Integration
            - $ref: '#/components/schemas/EventOrganizersDefaultAppLocationOutput'
              title: Organizer Default App
      required:
        - status
        - data
    EventAddressLocationOutput:
      type: object
      properties:
        id:
          type: string
          description: >-
            Identifier of this location. Pass it to `PATCH` or `DELETE
            /v2/events/{uuid}/locations/{locationId}` to edit or remove this
            location.
        label:
          type: string
          description: Name shown for this location.
          maxLength: 100
        price:
          type: number
          nullable: true
          example: 2500
          description: >-
            Price a guest who picks this location pays, in the currency's
            smallest unit. null when the location is free.
        currency:
          type: string
          nullable: true
          example: usd
          description: Currency of price. null when the location is free.
        capacity:
          type: number
          description: Seats at this location. Absent when unlimited.
          minimum: 1
          maximum: 100000
        type:
          type: string
          example: address
          enum:
            - address
        address:
          type: string
          example: 123 Event Street
      required:
        - id
        - price
        - currency
        - type
        - address
    EventLinkLocationOutput:
      type: object
      properties:
        id:
          type: string
          description: >-
            Identifier of this location. Pass it to `PATCH` or `DELETE
            /v2/events/{uuid}/locations/{locationId}` to edit or remove this
            location.
        label:
          type: string
          description: Name shown for this location.
          maxLength: 100
        price:
          type: number
          nullable: true
          example: 2500
          description: >-
            Price a guest who picks this location pays, in the currency's
            smallest unit. null when the location is free.
        currency:
          type: string
          nullable: true
          example: usd
          description: Currency of price. null when the location is free.
        capacity:
          type: number
          description: Seats at this location. Absent when unlimited.
          minimum: 1
          maximum: 100000
        type:
          type: string
          example: link
          enum:
            - link
        link:
          type: string
          example: https://example.com/event
      required:
        - id
        - price
        - currency
        - type
        - link
    EventIntegrationLocationOutput:
      type: object
      properties:
        id:
          type: string
          description: >-
            Identifier of this location. Pass it to `PATCH` or `DELETE
            /v2/events/{uuid}/locations/{locationId}` to edit or remove this
            location.
        label:
          type: string
          description: Name shown for this location.
          maxLength: 100
        price:
          type: number
          nullable: true
          example: 2500
          description: >-
            Price a guest who picks this location pays, in the currency's
            smallest unit. null when the location is free.
        currency:
          type: string
          nullable: true
          example: usd
          description: Currency of price. null when the location is free.
        capacity:
          type: number
          description: Seats at this location. Absent when unlimited.
          minimum: 1
          maximum: 100000
        type:
          type: string
          example: integration
          enum:
            - integration
        integration:
          type: string
          description: >-
            The integration's API name, e.g. `zoom` or `google-meet`. An app
            without an API name is returned with its stored type, e.g.
            `integrations:dialpad_video`.
          example: zoom
        credentialId:
          type: number
          description: >-
            Identifies which connected account will host the Event when a host
            has multiple connected accounts.
      required:
        - id
        - price
        - currency
        - type
        - integration
    EventOrganizersDefaultAppLocationOutput:
      type: object
      properties:
        id:
          type: string
          description: >-
            Identifier of this location. Pass it to `PATCH` or `DELETE
            /v2/events/{uuid}/locations/{locationId}` to edit or remove this
            location.
        label:
          type: string
          description: Name shown for this location.
          maxLength: 100
        price:
          type: number
          nullable: true
          example: 2500
          description: >-
            Price a guest who picks this location pays, in the currency's
            smallest unit. null when the location is free.
        currency:
          type: string
          nullable: true
          example: usd
          description: Currency of price. null when the location is free.
        capacity:
          type: number
          description: Seats at this location. Absent when unlimited.
          minimum: 1
          maximum: 100000
        type:
          type: string
          example: organizersDefaultApp
          enum:
            - organizersDefaultApp
      required:
        - id
        - price
        - currency
        - type

````

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