Update session custom 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
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" } ]}'const response = await fetch('https://public-api.sessionboard.com/v1/event/{eventId}/sessions/{sessionId}/fields', { method: 'PUT', headers: { "x-access-token": "<api-token>", "Content-Type": "application/json" }, body: JSON.stringify({ "values": [ { "internal_name": "track_code", "value": "T-42" } ] }),});
const data = await response.json();console.log(data);import requests
response = requests.request( "PUT", "https://public-api.sessionboard.com/v1/event/{eventId}/sessions/{sessionId}/fields", headers={ "x-access-token": "<api-token>", "Content-Type": "application/json" }, json={ "values": [ { "internal_name": "track_code", "value": "T-42" } ] },)
print(response.json())<?php
$curl = curl_init();
curl_setopt_array($curl, [ CURLOPT_URL => "https://public-api.sessionboard.com/v1/event/{eventId}/sessions/{sessionId}/fields", CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => "PUT", CURLOPT_POSTFIELDS => '{ "values": [ { "internal_name": "track_code", "value": "T-42" } ]}', CURLOPT_HTTPHEADER => [ "x-access-token: <api-token>", "Content-Type: application/json", ],]);
$response = curl_exec($curl);curl_close($curl);
echo $response;package main
import ( "fmt" "io" "net/http" "strings")
func main() { req, _ := http.NewRequest("PUT", "https://public-api.sessionboard.com/v1/event/{eventId}/sessions/{sessionId}/fields", strings.NewReader(`{ "values": [ { "internal_name": "track_code", "value": "T-42" } ]}`)) req.Header.Add("x-access-token", "<api-token>") req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))}HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://public-api.sessionboard.com/v1/event/{eventId}/sessions/{sessionId}/fields")) .header("x-access-token", "<api-token>") .header("Content-Type", "application/json") .method("PUT", HttpRequest.BodyPublishers.ofString("{\n \"values\": [\n {\n \"internal_name\": \"track_code\",\n \"value\": \"T-42\"\n }\n ]\n}")) .build();
HttpResponse<String> response = HttpClient.newHttpClient() .send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());Try it
Response headers
Authorizations
x-access-tokenstringheaderOrganization API token. Generate from Organization Settings → API Tokens.
AuthorizationBearer <token>headerorOAuth 2.1 access token. Obtained via the OAuth PKCE flow at
/oauth/token.
Send one of these. See Authentication.
Path parameters
eventIdintegerpathrequiredThe event ID.
sessionIdstring<uuid>pathrequiredThe session ID.
Request body
valuesobject[]requiredField values to write. Unlike the session
PUT, this endpoint takes an array of entries rather than acustom_fieldsobject, and each entry may carry its ownlanguage— so this is the endpoint to use for writing a language variant of a single field. An empty or missing array returns400VALIDATION_ERROR.Value formatting per type matches
custom_fieldselsewhere: an empty string ("") clears anumber,currency, orpercentfield;checkboxtakes booleantrue/false;datetimetakes 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 with400FIELD_READ_ONLY, naming the field indetails.field.- Min items
1
Show child attributes
internal_namestringrequiredThe field's internal name, as listed by
GET /v1/event/{eventId}/fields.valueany | nullThe value to store.
nullclears it.languagestringOptional 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" } ]}{ "values": [ { "internal_name": "session_subtitle", "value": "Sesión de apertura", "language": "es_ES" } ]}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.
dataobjectShow child attributes
session_idstring<uuid>updated_fieldsobject[]Show child attributes
field_idstring<uuid>languagestringPresent 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>" } ] }}