---
title: "Update a contact in a session"
method: PATCH
path: "/sessions/{period_id}/people/{id}"
tags: ["Sessions"]
---

# Update a contact in a session

`PATCH /sessions/{period_id}/people/{id}`

## Request

- Base URL: `https://api.livestorm.co/v1`
- URL: `https://api.livestorm.co/v1/sessions/{period_id}/people/{id}`
- Auth: one of:
  - API key in header `Authorization`
  - OAuth 2
    - Authorization code: `https://app.livestorm.co/oauth/authorize`
    - Token URL: `https://app.livestorm.co/oauth/token`

Update a contact's registration data for a specific session. This endpoint allows updating UTM tracking data (referrer, utm_source, utm_medium, etc.) and custom registration fields. Protected fields like email cannot be modified. For a team member, it also sets their role on this session (session_role). The role adds to the event's default roles, the member's event-level role and their workspace role: a lower session role does not remove what those already allow, so an event organizer set to session viewer stays an organizer. The event owner's session role cannot be set.

## Path parameters

- `period_id` string, required
- `id` string, required

## Request body

- object
  - `data` object
    - `type` string
    - `attributes` object
      - `referrer` string: Referrer URL
      - `utm_source` string: UTM source tracking parameter
      - `utm_medium` string: UTM medium tracking parameter
      - `utm_term` string: UTM term tracking parameter
      - `utm_content` string: UTM content tracking parameter
      - `utm_campaign` string: UTM campaign tracking parameter
      - `session_role` 'organizer' | 'moderator' | 'speaker' | 'viewer': Role of the team member on this session. Team members only.
      - `fields` object[]: Custom registration fields to update
        - `id` string, required: Field slug identifier
        - `value` union: Field value (string or array for multi-select)
          - string
          - string[]

## Response `200`

Contact updated with custom fields

- object
  - `data` object, required: Data
    - `id` string: ID
    - `type` string: Type
    - `attributes` object: Attributes
      - `role` string: Role of the person (participant or team_member)
      - `created_at` integer: Creation timestamp
      - `updated_at` integer: Last update timestamp
      - `timezone` string: Person's timezone
      - `first_name` string: First name
      - `last_name` string: Last name
      - `email` string: Email address
      - `avatar_link` string: Avatar URL
      - `registrant_detail` object: Session-specific registration details
        - `event_id` string: Event ID
        - `session_id` string: Session ID
        - `created_at` integer: Registration timestamp
        - `updated_at` integer: Last update timestamp
        - `referrer` string: Referrer URL
        - `utm_source` string: UTM source parameter
        - `utm_medium` string: UTM medium parameter
        - `utm_term` string: UTM term parameter
        - `utm_content` string: UTM content parameter
        - `utm_campaign` string: UTM campaign parameter
        - `fields` object[]: Custom registration fields
          - `id` string: Field slug identifier
          - `type` string: Field type
          - `value` union: Field value (string or array for multi-select)
            - string
            - string[]
      - `messages_count` integer: Number of messages sent
      - `questions_count` integer: Number of questions asked
      - `votes_count` integer: Number of votes cast
      - `up_votes_count` integer: Number of upvotes received

## Other responses

- `403`: Workspace blocked
- `404`: Contact not found
- `422`: Session role set on someone who is not a team member
- `429`: Too Many Requests

---

[API](https://skmtc.dev/livestorm/apis/livestorm-public-api.md) - [All operations](https://skmtc.dev/livestorm/apis/livestorm-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/livestorm/apis/livestorm-public-api/revisions/9292f597e878?raw)
