Environments¶
All examples on this site use the staging environment. Staging behaves like production but holds no real patient data. Use it to build and test your integration.
| Service | Staging URL | Used for |
|---|---|---|
| Platform API | https://medipulse-staging.sahl.ai |
Login, token refresh, JWT exchange |
| Streaming API | wss://medistream-staging.sahl.ai |
Real-time audio streaming (/ws/summary) |
| Embedded panel | https://dev.sahl-ai.pages.dev |
Iframe entry points (/iframe, /iframe-secure, /jwt-auth-secure) |
Never use real patient data on staging
Staging is for synthetic or de-identified test encounters only.
Production¶
When your integration has passed testing, Sahl AI sends you the production URLs, credentials and organization identifiers over a secure channel. They are never published on this site.
Moving to production normally changes only the base URLs and credentials. Read them from configuration rather than hard-coding them:
// config/sahl.js
export const SAHL = {
apiBase: process.env.SAHL_API_BASE, // https://medipulse-staging.sahl.ai on staging
wsBase: process.env.SAHL_WS_BASE, // wss://medistream-staging.sahl.ai on staging
iframeBase: process.env.SAHL_IFRAME_BASE, // https://dev.sahl-ai.pages.dev on staging
};
Validate event.origin against iframeBase, so the same check works in both environments.
Network requirements¶
Clinician workstations need outbound HTTPS (TCP 443) to:
*.sahl.aidev.sahl-ai.pages.dev(staging panel host)
Your backend needs outbound HTTPS to the Platform API host so it can request tokens.
The embedded panel needs microphone access. To capture the remote participant in a teleconsultation, it also needs screen and tab audio capture. Grant both through the iframe allow attribute, as shown in Embedded iframe.