Fix a participant's height or display name
const url = 'https://quikstik-core.fly.dev/account/participants/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/details';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"height_cm":1,"display_name":"example","phone":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://quikstik-core.fly.dev/account/participants/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/details \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "height_cm": 1, "display_name": "example", "phone": "example" }'Customer portal, guest-scoped (HANDOFF-account-self-serve-2026-10-18 WP4). local-person
session; the participant must be the caller’s own or belong to a Person they head
(payer/coordinator edge) — anything else is 404, as for GET /account/readiness/{participant_id}.
height_cm is recorded as the tenant’s height_cm trait value exactly as
POST /participant-trait-values records it (validated against the definition’s bounds; a prior
value is superseded, history stays append-only; an identical value writes nothing).
display_name goes through the profile-correction path (POST /persons/{person_id}/profile-corrections)
for the participant’s Person. Email is not editable here (it is the login identity;
changing it is an operator action) — an email field is refused as an unknown field.
Phone is refused (422 phone_not_supported): profile-corrections carries no phone and
the participants context stores none. A refused request applies nothing. The waiver stays
the existing /w/{token} link.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”object
Accepted only to be refused with 422 phone_not_supported
Example generated
{ "height_cm": 1, "display_name": "example", "phone": "example"}Responses
Section titled “Responses”Applied (applied lists only the fields that changed)
object
Example
{ "applied": [ "height_cm" ]}Missing or invalid session bearer token
object
Stable, machine-readable reason code (e.g. “sold_out”, “processor_not_configured”, “rail_refused”).
Example
{ "reason": "sold_out"}The session’s effect authority does not cover this operation
object
Stable, machine-readable reason code (e.g. “sold_out”, “processor_not_configured”, “rail_refused”).
Example
{ "reason": "sold_out"}Expired, consumed, unknown, or unresolvable — indistinguishable by design
object
Example generated
{ "reason": "example"}no_changes, phone_not_supported, display_name_invalid, height_out_of_range,
participant_has_no_person, or an unknown request field (including email)
object
Stable machine reason
Finer machine code under reason
object
Minor units the card gets back
Hours-before-departure the applying tier requires; absent when no tier applies
Last instant this refund still applies; absent when no tier applies
Example generated
{ "reason": "example", "detail": "example", "current": { "booking_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "refund_minor": 1, "refund_bps": 1, "tier_hours": 1, "deadline_at": "2026-04-15T12:00:00Z", "currency": "example" }}No durable backend is wired for this operation (fail-closed)
object
Stable, machine-readable reason code (e.g. “sold_out”, “processor_not_configured”, “rail_refused”).
Example
{ "reason": "sold_out"}