Skip to content

Update session custom fields

PUT/v1/event/{eventId}/sessions/{sessionId}/fields

US Region: https://public-api.sessionboard.com · EU Region: https://public-api-eu.sessionboard.com

Update custom field values on a session without touching other session properties. Requires the write:sessions scope.

Request example

Terminal window
curl --request PUT \
--url 'https://public-api.sessionboard.com/v1/event/{eventId}/sessions/{sessionId}/fields' \
--header 'x-access-token: <api-token>' \
--header 'Content-Type: application/json' \
--data '{
"values": [
{
"internal_name": "track_code",
"value": "T-42"
}
]
}'

Try it

Authorization

Your token stays in this page. It is sent only to the region above and is never saved; it is gone when you leave or reload the page.

Path parameters
Body application/json
PUT

Authorizations

  • x-access-tokenstringheader

    Organization API token. Generate from Organization Settings → API Tokens.

  • AuthorizationBearer <token>headeror

    OAuth 2.1 access token. Obtained via the OAuth PKCE flow at /oauth/token.

Send one of these. See Authentication.

Path parameters

  • eventIdintegerpathrequired

    The event ID.

  • sessionIdstring<uuid>pathrequired

    The session ID.

Request body

application/jsonrequired

  • valuesobject[]required

    Field values to write. Unlike the session PUT, this endpoint takes an array of entries rather than a custom_fields object, and each entry may carry its own language — so this is the endpoint to use for writing a language variant of a single field. An empty or missing array returns 400 VALIDATION_ERROR.

    Value formatting per type matches custom_fields elsewhere: an empty string ("") clears a number, currency, or percent field; checkbox takes boolean true / false; datetime takes an ISO 8601 string.

    Fields owned by an integration (for example swoogo_session_id, cvent_session_id, visit_session_id) are hydrated by the connector and reject writes with 400 FIELD_READ_ONLY, naming the field in details.field.

    Min items
    1
    Show child attributes
    • internal_namestringrequired

      The field's internal name, as listed by GET /v1/event/{eventId}/fields.

    • valueany | null

      The value to store. null clears it.

    • languagestring

      Optional locale for a language variant (for example es_ES). Must be one of the event's enabled locales. Omit it to write the event default.

{
"values": [
{
"internal_name": "track_code",
"value": "T-42"
}
]
}

Responses

200application/json

Custom fields updated. The response echoes the fields that were written rather than the whole session — refetch with GET /v1/event/{eventId}/sessions/{sessionId} if you need the full record.

  • dataobject
    Show child attributes
    • session_idstring<uuid>
    • updated_fieldsobject[]
      Show child attributes
      • field_idstring<uuid>
      • languagestring

        Present only when the request specified a language.

400

Validation error — values missing or empty, an unknown field (UNKNOWN_FIELD), a type mismatch (TYPE_MISMATCH), or an integration-owned field (FIELD_READ_ONLY).

401

Unauthorized

403

Missing write:sessions scope

404

Session not found

Response examples

{
"data": {
"session_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"updated_fields": [
{
"field_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"language": "<string>"
}
]
}
}

Get release notes by email

A short digest on the days something new goes live — each change with a link to its note in the release notes. No marketing, and one click to stop.

Company email addresses only. We’ll send one email to confirm it’s you. Already use Sessionboard? You can also turn this on under Community → What’s new.