In-App Voice Overview Developer Preview

Nexmo In-App Voice uses WebRTC and includes all the essentials you need to build a feature rich voice experience.

  • User Control – Users can control whether their audio stream is muted or unmuted.

  • Notifications – Users can be notified when they receive a call or when participants are muted.

  • Group Calls – Configure call settings so users can start a group call by adding participants in real time.



A conversation is a shared core component that Nexmo APIs rely on. Conversations happen over multiple mediums and and can have associated Users through Memberships.


The concept of a user exists in Nexmo APIs, you can associate one with a user in your own application if you choose. A user can have multiple memberships to conversations and can communicate with other users through various different mediums.


Memberships connect users with conversations. Each membership has one conversation and one user however a user can have many memberships to conversations just as conversations can have many members.


Audio streams can be enabled and disabled in a Conversation so that Members can communicate with voice.

Media Events

Media events will fire in a Conversation when media state changes for a member. This can be when an Audio stream is started or ended.

Getting Started

To start you'll need a Nexmo Account, an Application and the private key provided when you created the application. Follow the prerequisites if you've not got an Application already.


Create a Conversation

curl -X "POST" "" \
     -H "Authorization: Bearer <JWT>"
nexmo conversation:create display_name="My Conversation"
Conversation created: CON-aaaaaaaa-bbbb-cccc-dddd-0123456789ab

Create a User

curl -X "POST" "" \
     -H "Authorization: Bearer <JWT>" \
     -d name='Ann Example'
nexmo user:create name=alex
User created: USR-aaaaaaaa-bbbb-cccc-dddd-0123456789ab

Join the Conversation

curl -X "POST" "<CONVERSATION_ID>/members" \
     -H "Authorization: Bearer <JWT>" \
     -d action='join' \
     -d user_id='<USER_ID>' \
     -d channel.type='app'
nexmo member:add CON-aaaaaaaa-bbbb-cccc-dddd-0123456789ab user_id=USR-aaaaaaaa-bbbb-cccc-dddd-0123456789ab channel='{"type":"app"}' action=join
Member added: MEM-aaaaaaaa-bbbb-cccc-dddd-0123456789ab

Try out the quickstarts

SDK Documentation


Find the SDKs online