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.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
This endpoint requires theevents:writescope.
How to use this endpoint
This endpoint lets you update someone who is already registered for one of your event sessions: their UTM tracking data, their custom fields and, for a team member, their role on the session. Only the attributes you send are changed. Protected fields, like the email, can't be modified.
How to set a team member's session role
A team member registered for a session can be given a role on that session with the session_role attribute: organizer, moderator, speaker or viewer. Here's an example of a payload:
{
"data": {
"type": "people",
"attributes": {
"session_role": "speaker"
}
}
}The new role is applied right away, including in a session room that is already open, and the response returns it in registrant_detail.session_role. Keep in mind that:
- Only team members can be given a session role. Setting one for a participant, a guest speaker or the event owner returns a
422error. - A session role adds to the roles the team member already has on the event and in the workspace. It never removes them: an event organizer set as
vieweron a session remains an organizer.
How to fill custom fields
Custom fields need to be provided as an array of id / value pairs, using the fields configured for the session's event in its "Registration" settings page.
Single-select custom field values need to be sent as regular strings, whereas multi-select custom fields need to be sent as an array of strings. Here's an example of a payload that also updates UTM data:
{
"data": {
"type": "people",
"attributes": {
"fields": [
{
"id": "company",
"value": "Acme"
},
{
"id": "favorite_colors",
"value": ["green"]
}
],
"utm_source": "Twitter",
"utm_medium": "Feed",
"utm_campaign": "Summer"
}
}
}
Beware of rate limitsIf you're using this endpoint to update multiple registrants at the same time, don't forget that Livestorm's API rate limits you to send up to 5 requests per second. In this case, we advise you to limit the number of calls per second.
403Workspace blocked
404Contact not found
422Session role set on someone who is not a team member