xr_launch_vr_session
Create a shareable WebXR VR walkthrough session URL (and Meta Quest oculus:// deep link + QR code) for a translated model. The session_id is generated server-side; rendering happens in the user's Quest browser. When to use: you need to walk a client or field team through a model in immersive VR on Meta Quest 2/3/Pro. When NOT to use: the user is on a phone/tablet without a headset — use xr_launch_ar_session or get_viewer_link. The model has not finished translating — call get_model_metadata first. APS scopes: viewables:read data:read (enforced at viewer page load, not at tool call). Rate limits: APS default ~50 req/min per app per endpoint; Model Derivative translation jobs ~60 req/min; OSS uploads size-limited per file to 100MB for direct upload, larger via resumable. Errors: 401 APS token expired/invalid — refresh (only at viewer page load); 403 scope or resource permission denied; 404 URN not found — check the ID; 429 rate limited — backoff and retry; 5xx APS upstream outage — retry with jitter. Side effects: NON-IDEMPOTENT. Each call mints a new session_id (vr_). Inserts a row into D1 usage_log which is later read by xr_list_sessions. No APS resources are created.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes | APS URN (base64url-encoded, starts with 'dXJu', unpadded) of the model to load in VR. | |
| session_name | No | Human-readable session label shown in the session list. Defaults to 'VR Session' if omitted. | |
| max_participants | No | Maximum concurrent participants in multi-user mode. Integer 1-20. Defaults to 5. | |
| enable_measurements | No | Enable in-VR tape-measure tool. Defaults to true. | |
| enable_voice_annotations | No | Enable voice-note recording anchored to model elements. Defaults to false. |