Skip to main content
This page shows the objects the SDK sends and receives through postMessage — the JSON you pass in, and the payloads that come back to your subscriber. Use it when you need a field’s exact name or shape. Two naming notes: institution in any payload is the API’s word for a Digital Twin, and course_id / course_name on a conversation are simply that conversation’s id and name (the field names are historical).

Post Request Object

post is accepted as a legacy alias for message.post.

Post Response Object

Assistants List Request

Assistants List Response Object

Conversations List Request

Conversations List Response Object

Favorites List Request

Favorites List Response Object

Convo Ready Event

The convo.ready event is sent proactively by the Digital Twin after the user logs in. It notifies the embedding application whether real-time voice (speech-to-speech) mode is authorized for the current user. This event is not a response to a command — it is sent automatically.
Authorization depends on the Digital Twin’s real-time voice settings and whether the user has the required role. The event can arrive more than once — after sign-in, when the user’s permissions reload, and once the privacy policy is accepted — so act on the latest one.
This event is also intercepted by the SDK itself to set the pria.isConvoReady() flag and optionally trigger convoMode auto-start. Subscribers receive it after the SDK processes it.

Convo Live Event

The convo.live event is sent once per conversation, when that conversation can actually accept text through convo.post. It is not a response to a command. convo.ready and convo.live answer different questions: the first says the user is allowed to start a voice conversation, the second says a conversation is running and ready to be spoken into. A page that starts a conversation and immediately posts into it should wait for this one.

Convo Ended Event

The convo.ended event is sent once when a voice conversation ends — the user hung up inside the panel, or the connection closed. It is not sent when the provider reconnects on its own, and it is not a response to a command.

Start Convo Request

Start Convo Response

Convo Post Request

Sends text into a conversation that is already running. role defaults to user (the learner speaking) and respond defaults to true.

Convo Post Response

delivered confirms the twin accepted the text. replied says whether it answered — some providers cannot take context without answering, and ElevenLabs cannot answer a system message on demand, so the two are reported separately. On Anam and Cartesia twins, a role: "system" post with respond: true is acknowledged when the twin’s turn ends. replied is true when the twin produced a spoken reply, and false when the model produced nothing for that instruction; the final convo.transcript message for that turn then carries reason: "empty" and an empty text. A turn that fails also reports replied: false, with reason: "error" on its transcript.
A refusal arrives as a pria-error with the reason in content — no conversation running (Convo is not started (STS)), the twin not allowing page instructions or the sender not being the embedding page (Access Unauthorized (401)), an empty or over-long message (Invalid Request (400)), or a provider that cannot honour the request.

Stop Convo Request

Stop Convo Response