Voice - Nexmo


Turn calls into connections with easy-to-implement voice solutions

For a better customer experience

  • Communication

API Button


Voice operation application based on the cloud.

Key highlights

  • Scales with existing web solutions
  • Easy to configure
  • Records and stores any call
  • Conference calls
  • Text-to-Speech messages in 23 languages


Nexmo Voice is one of the main nexmo application ecosystem. It allows you to create and manage high-quality voice operation applications on the cloud.

Nexmo Voice is a HTTP-based RESTful API. All API accesses are over HTTPS combined with OAuth2.0 for extra security. Request and response bodies follows JSON format to make the exchange of information fast, easy and reliable.

General picture

Sequence diagram


Conversation, leg, conference

Communication can be 1-to-1 or 1-to-n from or to the Nexmo platform. While 1-to-1 calls are known as a leg, 1-to-n calls are known as a conversation. Each call connected to a conversation is its own leg.


A Nexmo Call Control Object (NCCO) is a JSON array that you use to control the flow of a Voice API call. For your NCCO to execute correctly, the JSON objects must be valid.

The Call event model is asynchronous. A static or dynamically created NCCO script provides the business logic for your Call. When a Call is placed to your number, Nexmo makes a synchronous request to the webhook endpoint you set as the answer_url for your number and retrieves the NCCO object that controls the Call.

Extended information regarding NCCOs can be found here.


Method to augment or alter the behavior of your application via user-defined HTTP callbacks. In your case webhook defines the behavior of your application.


Dual Tone Multi Frequency (DTMF), is a form of signaling used by phone systems to transmit the digits 0-9 and the * and # characters.


Nexmo uses Text-to-speech engines to allow you to play machine generated speech in your calls. This feature can be added via NCCOs with the use of talk action or by making a put request on an in-progress call. There are 23 languages available with different styles and genders.


Nexmo Voice API offers the ability to record call audio in several ways:

SIP Trunk

To use Session Initiation Protocol (SIP), see the SIP documentation page


The API is divided into 2 groups of resources:

  • Application: Nexmo App Management resource. Allows CRUD on applications
  • Voice: Voice call management resource. Allows CRUD on the call

You can try the application from different tools/platforms.

  • SwaggerHub
  • Postman

Get the access token

The authorization service returns a JSON message that contains the access token field.


  1. Click on Authenticate button
  2. Paste your App Keys
  3. Click on Authorize


  1. Fill the environment details with your app keys
  2. Call GetAccessToken
  3. Click on execute button
  4. Check the response code and message

Create the Nexmo Application

Remember the application uuid because it will be needed to make calls


  1. Select POST /applications
  2. Click on Try out
  3. Edit the request body by filling the name and answer_url
  4. Click on execute button
  5. Check the response code and message


  1. Click on (POST) Create new application resource
  2. Fill the name and answer_url
  3. Click on send
  4. Check the response code and message

Create a call


  1. Select POST /voice/calls
  2. Click on Try out
  3. Update the ApplicationID header with your application identifier
  4. Edit the request body by filling to, from and answer_url fields
  5. Click on execute button
  6. Check the response code and message


  1. Click on (POST) Create an outbound call Update the Headers section by filling the ApplicationId field
  2. Update the body fields
  3. Click on send
  4. Check the response code and message

Return codes

Code Meaning
200 Success
201 Created
202 Accepted
302 Found. Link in Location Header
400 Bad request
401 Unauthorized
403 Forbidden
404 Not Found
405 Method not Allowed
412 Precondition failed
429 Too many requests
500 Internal server error
502 Bad gateway
503 Service unavailable