The consult's state after this heartbeat. 'expired' is join-only — it
is not a stored TelehealthStatus.
Optionalposition1-based place in the queue. Present while waiting.
OptionalestimatedRough wait in minutes, derived from position. Present while waiting.
OptionallivekitRoom credentials. Present only when status is 'in_progress'.
OptionalrateableWhether a rating can still be submitted for this consult.
POST /v1/telehealth-consults/{id}/joinresponse — what to render right now, plus the credentials when the call is live.Drive your waiting-room screen entirely from
status:'waiting'— showposition/estimatedMinutesand keep heartbeating.'in_progress'— connect tolivekit.urlwithlivekit.token.'completed'/'cancelled'/'no_show'— the call is over; show the rating prompt whenrateableis true.'expired'— the invite is no longer usable; ask your backend to create a new consult.