---
title: "Update platform user"
method: PATCH
path: "/v4/user/{id}"
tags: ["User V4"]
---

# Update platform user

`PATCH /v4/user/{id}`

## Request

- Base URL: `https://developer.meetergo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://developer.meetergo.com/v4/user/{id}`
- Auth: one of:
  - API key in header `x-meetergo-api-user-id`
  - HTTP bearer
  - HTTP bearer

Updates basic profile fields (first name, last name, slug) for a user in your company. Any user can update their own profile; only company admins can update other users. Provide any subset of fields — omitted fields stay unchanged. Slugs must be unique across the platform and at least 5 characters; invalid characters are normalized automatically. Email and login identity are not editable here; this is a database-only update and does not affect the user’s authentication.

## Path parameters

- `id` string, required

## Request body

- UpdatePlatformUserDto
  - `givenName` string: User's first name
  - `familyName` string: User's last name
  - `slug` string: Public booking slug. Must be unique and at least 5 characters. Invalid characters are normalized automatically (e.g. 'John Doe' becomes 'john-doe').

## Response `200`

User updated successfully

- UserResponseDto
  - `id` string, required: User unique identifier
  - `companyId` string, nullable: Company ID the user belongs to
  - `email` string: User email address
  - `isAdmin` boolean, required: Whether user is a company administrator
  - `familyName` string, required: User family name/lastname
  - `givenName` string, required: User given name/firstname
  - `picture` string: URL to user profile picture
  - `createdAt` string, required: User creation timestamp
  - `updatedAt` string, required: User last update timestamp
  - `deletedAt` string, nullable: User deletion timestamp
  - `title` string, required: User job title
  - `anonymousBooking` boolean, required: Whether user allows anonymous booking
  - `anonymousCalendarActivity` boolean, required: Whether user allows anonymous calendar activity
  - `slug` string, required: User unique slug for public URLs
  - `showGettingStartedList` boolean, required: Whether to show getting started list
  - `recieveEmailMarketing` boolean, required: Whether user receives marketing emails
  - `timezone` string, required: User timezone
  - `language` 'en' | 'de' | 'fr' | 'es' | 'no' | 'nl' | 'it' | 'pl' | 'se' | 'tr' | 'da', required
  - `referralId` string: Referral ID if user was referred
  - `personalPage` PersonalPageResponseDto, required
    - `useCustomColors` boolean, required: Whether custom colors are enabled for the personal page
    - `primaryColor` string, required: Primary color for the personal page theme
    - `secondaryColor` string, required: Secondary color for the personal page theme
    - `headerImage` string, nullable: Header image URL for the personal page
    - `description` string, required: Personal page description text
    - `onlineProfiles` OnlineProfiles, required
      - `linkedIn` string, required
      - `facebook` string, required
      - `twitter` string, required
      - `instagram` string, required
      - `xing` string, required
      - `phone` string, required
      - `email` string, required
      - `customLinks` CustomLink[], required
        - `name` string, required
        - `url` string, required
        - `icon` string, required
      - `addressStreet` string, required
      - `addressCity` string, required
      - `addressPostalCode` string, required
      - `addressCountry` string, required
    - `meetingTypes` MeetingTypeBasicResponseDto[]: Meeting types assigned to this personal page
      - `meetingInfo` MeetingInfo, required
        - `name` string, required: Name of the meeting type
        - `description` string, required: Description of the meeting type
        - `nameLocalised` LocalisedContent
          - `en` string, required
          - `de` string
          - `fr` string
          - `es` string
          - `no` string
          - `it` string
          - `nl` string
          - `da` string
          - `pl` string
          - `se` string
          - `tr` string
        - `descriptionLocalised` LocalisedContent
          - `en` string, required
          - `de` string
          - `fr` string
          - `es` string
          - `no` string
          - `it` string
          - `nl` string
          - `da` string
          - `pl` string
          - `se` string
          - `tr` string
        - `enableRedirect` boolean, required: Enable redirect after booking completion
        - `redirect` string, required: Redirect URL to navigate after booking
        - `passEventDetailsToRedirect` boolean, required: Pass event details (invitee name, email, form answers) as query params to redirect URL
        - `duration` number, required: Primary duration in minutes
        - `channel` 'local' | 'local-attendee' | 'google' | 'zoom' | 'phone' | 'phone-incoming' | 'whatsapp' | 'connect' | 'webex' | 'skypeForConsumer' | 'skypeForBusiness' | 'teamsForBusiness' | 'teamsForBusiness2' | 'teamsForExchange' | 'teams2ForExchange' | 'custom' | 'resource' | 'whereby' | 'kmeet' | 'zava' | 'jitsi' | 'nextcloudTalk' | 'openTalk' | 'alfaview', required: Meeting channel/location type
        - `customChannelName` string, required: Custom name for the meeting channel
        - `customChannelLink` string, required: Custom link for the meeting channel
        - `connectChannelName` string, required: Custom display name for the connect channel
        - `groupBooking` boolean, required: Enable group booking (multiple attendees per slot)
        - `showAvailableSlots` boolean, required: Show available spots count on the booking page
        - `enrichInvitee` boolean, required: Enable invitee data enrichment
        - `autoCreateSpace` boolean, required: Auto-create a Space when someone books
        - `spacePresetId` object, nullable: Space preset id used for the auto-created Space
        - `spaceAutoInvite` boolean, required: Publish the auto-created Space and invite the booker
        - `confirmationButton` ConfirmationButton, required
          - `useConfirmationButton` boolean, required
          - `text` string, required
          - `color` string, required
          - `link` string, required
        - `bufferBefore` number, required: Buffer time before meeting in minutes
        - `bufferAfter` number, required: Buffer time after meeting in minutes
        - `bufferMustStayWithinWorkingHours` boolean, required: Only offer slots where buffer fits within working hours (no spillover into breaks or after-hours)
        - `rollingSlots` boolean, required: Restart the slot grid after each appointment instead of keeping a fixed grid per working block
        - `color` object, nullable: Color for the meeting type in RGB format, e.g. "rgb(0, 153, 255)"
      - `spots` number, required: Number of available spots for the meeting
      - `enabled` boolean, required: Whether the meeting type is enabled
      - `slug` string, required: Meeting type unique slug
      - `formId` string: Form ID associated with the meeting type
      - `communicationSettingsId` number, nullable: Communication settings ID
      - `availabilityId` string: Availability ID associated with the meeting type
      - `companyId` string, required: Company ID that owns this meeting type
      - `queueId` string: Queue ID if meeting type uses a queue
      - `locations` string[], required: Available meeting locations
      - `workspaceId` string: Workspace ID if meeting type belongs to a workspace
      - `isGlobalQueue` boolean, required: Whether this meeting type uses a global queue
      - `userId` string: User ID who owns this meeting type
      - `createdById` string, required: User ID who created this meeting type
      - `createdAt` string, required: Creation timestamp
      - `deletedAt` string: Deletion timestamp if soft deleted
      - `resourceChannelIds` string[]: IDs of resource channels associated with this meeting type
  - `calendarSyncProviders` CalendarSync
    - `id` string, required
    - `type` 'google' | 'outlook' | 'icloud' | 'caldav' | 'exchange' | 'nextcloud' | 'smart-we' | 'salesforce', required
  - `defaultAvailabilityId` string: Default availability ID
  - `aircallUserId` string: Aircall user ID
  - `phone` string: User phone number
  - `userType` 'standard' | 'resource' | 'api-platform' | 'partner' | 'viewer', required
  - `wherebyApiKey` string, nullable: Whereby API key
  - `fullName` string, required: User full name (computed)
  - `groupIds` string[]: IDs of groups the user belongs to
  - `groupAdminIds` string[]: IDs of groups the user is admin of
  - `meetingTypeIds` string[]: IDs of meeting types owned by the user
  - `meetingTypeTemplateIds` string[]: IDs of meeting type templates created by the user
  - `appointmentIds` string[]: IDs of appointments where user is a host
  - `workspaceIds` string[]: IDs of workspaces the user belongs to
  - `reminderIds` string[]: IDs of reminders owned by the user
  - `formIds` string[]: IDs of forms owned by the user
  - `queueIds` string[]: IDs of queues the user belongs to
  - `queueUserGroupIds` string[]: IDs of queue user groups the user belongs to
  - `availabilityIds` string[]: IDs of availabilities owned by the user
  - `company` CompanyBasicDto
    - `id` string, required: Company unique identifier
    - `name` string, required: Company name
    - `slug` string, required: Company unique slug
    - `logo` string: Company logo URL
    - `description` string: Company description
    - `timezone` string, required: Company timezone
    - `language` string, required: Company language
    - `tier` string: Effective plan tier (trial resolves to the trialled tier)
    - `isInTrial` boolean: Whether the company is in a trial
    - `featureAccess` object: Resolved plan entitlements and limits. Lets an integration explain a limit before hitting it instead of failing into one.

## Other responses

- `400`: Bad request — empty body, slug too short, or slug already taken
- `401`: Missing, malformed, or expired credentials.
- `403`: Forbidden — non-admins can only update their own profile
- `404`: User not found or does not belong to your company
- `429`: Rate limited. Back off and retry.

---

[API](https://skmtc.dev/meetergo/apis/meetergo-platform-api.md) · [All operations](https://skmtc.dev/meetergo/apis/meetergo-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/meetergo/apis/meetergo-platform-api/revisions/b5d66cd8be67?raw)
