Getting Started
Install the SDK
yarn add ringcentral-softphone
npm install ringcentral-softphone
Get SIP credentials from the web portal
You need an Existing Phone device for the user or extension that will place and receive calls.
- Sign in to the RingCentral portal, open the user or extension, and expand Devices & Numbers.

- Select an Existing Phone device, or create one if necessary. A RingCentral desktop or mobile app device cannot be used with this SDK.

- Select Set Up and Provision.

- Select Set up manually using SIP.

- Copy the SIP domain, outbound proxy, username, password, and authorization ID.

Remove the port from the SIP domain: use sip.ringcentral.com, not
sip.ringcentral.com:5061. Keep the port in the outbound proxy.
Get SIP credentials from the REST API
Use
List Extension Devices
to find a device whose API type is OtherPhone. The API type SoftPhone
represents a RingCentral app device and cannot be used by this SDK.
Call
Read Device SIP Information
for the selected device. Choose the proxyTLS value for the region nearest your
workload because the SDK connects over TLS:
{
"domain": "sip.ringcentral.com",
"outboundProxies": [
{
"region": "NA",
"proxy": "sip20.ringcentral.com:5090",
"proxyTLS": "sip20.ringcentral.com:5096"
}
],
"userName": "16501234567",
"password": "password",
"authorizationId": "802512345678"
}
The credential lookup demo shows the complete REST API flow.
Configure and register
import Softphone from "ringcentral-softphone";
const softphone = new Softphone({
domain: process.env.SIP_INFO_DOMAIN!,
outboundProxy: process.env.SIP_INFO_OUTBOUND_PROXY!,
username: process.env.SIP_INFO_USERNAME!,
password: process.env.SIP_INFO_PASSWORD!,
authorizationId: process.env.SIP_INFO_AUTHORIZATION_ID!,
});
softphone.on("invite", async (inviteMessage) => {
const callSession = await softphone.answer(inviteMessage);
callSession.once("disposed", () => console.log("Call ended"));
});
await softphone.register();
Attach the invite listener before registering so an inbound call cannot arrive
between registration and listener setup.
| Option | Required | Description |
|---|---|---|
domain |
Yes | SIP domain without a port. |
outboundProxy |
Yes | Regional TLS proxy including its port. |
username |
Yes | SIP username. |
password |
Yes | SIP password. |
authorizationId |
Yes | SIP authorization ID. |
codec |
No | OPUS/16000 (default), OPUS/48000/2, or PCMU/8000. |
ignoreTlsCertErrors |
No | Disable TLS certificate checks in a controlled development environment only. |
Next, answer or place a call.