POST /api/v1/documents/{id}/live with a person-owned credential carrying documents:read, current access to the document, an eligible paid team/class plan and effective liveEditing permission. The server returns a URL, short-lived room token, expiry, role, colour and display name. Org-owned API credentials and isolated app-test identities cannot join because the principal must be a person.plan_required, 403 policy/permission refusals, 404 inaccessible documents and 503 unavailable live service before assuming a socket was created. An invalid/expired room token causes the upgrade to fail. WebSocket send success does not prove that the durable document snapshot is saved. Handle protocol errors and close codes according to the shared spec, and make reconnect status visible to the user.src/cloud/live.ts, src/components/live/protocol.ts, workers/live/src/auth.ts, workers/live/src/room.ts. No authenticated two-client production room test was performed in this docs task.