Good fit
A web app calls a small approved API surface with short-lived user auth and no long-lived hub identity in the bundle.
SDK Origins is the allowlist for browser apps that call Thalovant from a customer-owned site.
Use it only when a browser runtime must make cross-origin SDK or API requests. For services, agents, CLIs, and jobs, keep using a backend or protected runtime with a secret store.
Free workspaces do not need SDK Origins for the starter voice path. Use Public hubs and Connections first; SDK Origins appears when a workspace plan supports browser-origin review.
https://api.thalovant.com;https://app.example.com.An origin must include https://, host, and optional port only. Do not include paths, queries, fragments, wildcards, http://, or null.
| Allows | Does not allow |
|---|---|
| Cross-origin API calls from the exact approved origin. | Dashboard cookies or refresh-session flows from customer sites. |
Authorization and Idempotency-Key request headers. |
CSRF or dashboard-only refresh headers. |
| Browser SDK requests from a known production domain. | Wildcard domains, local files, or origins with paths and query strings. |
Use a backend when the browser needs secrets.
Good fit
A web app calls a small approved API surface with short-lived user auth and no long-lived hub identity in the bundle.
Use a backend
Identity creation, identity storage, setup material, broker passwords, refresh sessions, and payment flows stay server-side.
Review every domain
Request production, staging, and preview domains separately. Disable origins that no longer serve the app.
SDK Origins are not the security boundary for code that runs from a laptop, backend service, CI job, room device, or private server.
| Runtime | Use SDK Origins? | Safer pattern |
|---|---|---|
| Laptop script or CLI | No | Store the identity file outside the repo and restrict it to the current user. |
| Backend service or job | No | Keep tokens, setup material, and hub identity in a server-side secret store. |
| Thalovant Voice device | No | Use the private setup link or generated install command from Connections. |
| Customer browser app | Yes | Request the exact production, staging, and preview origins separately. |
If a browser app needs a secret operation, put that operation behind your backend and call the backend from the browser.
When an origin is requested, the requester and reviewer see a security notification. Email is also sent so the reviewer can open the dashboard and decide.
When the review is complete, the requester receives a status notification and email. Approved origins start working after the CORS cache refreshes.
| Symptom | Check |
|---|---|
Browser preflight returns 400 |
Confirm the exact origin is approved and uses https://. |
| Works in staging but not production | Request the production origin separately. |
| Credentialed requests fail | Use the dashboard only for cookie-based flows; customer origins are non-credentialed. |
X-CSRF-Token is rejected |
Remove dashboard-only headers from SDK origin requests. |
| The app was moved to a new domain | Request the new origin, wait for review, then disable the old one. |
The SDK Origin setup is ready when: