A Node.JS REST API Wrapper library for Nexmo.
For full API documentation refer to docs.nexmo.com.
Installation | Constructor | Messaging | Voice | Verify | Number Insight | Applications | Management | JWT (JSON Web Token)
npm install nexmo
var Nexmo = require('nexmo');
var nexmo = new Nexmo({
apiKey: API_KEY,
apiSecret: API_SECRET,
applicationId: APP_ID,
privateKey: PRIVATE_KEY_PATH,
}, options });
apiKey
- API Key from NexmoapiSecret
- API SECRET from NexmoapplicationId
- The Nexmo Application ID to be used when creating JWTs. Required for voice related functionality.privateKey
- The path to the Private Key to be used when creating JWTs. Required for voice related functionality.options
- Additional options for the constructor
Options are:
{
// If true, log information to the console
debug: true|false,
// append info the the User-Agent sent to Nexmo
// e.g. pass 'my-app' for /nexmo-node/1.0.0/4.2.7/my-app
appendToUserAgent: string,
// Set a custom logger
logger: {
log: function() {level, args...}
info: function() {args...},
warn: function() {args...}
}
}
nexmo.message.sendSms(sender, recipient, message, options, callback);
opts
- parameter is optional. See SMS API Reference
nexmo.message.sendBinaryMessage(fromnumber, tonumber, body, udh, callback);
body
- Hex encoded binary dataudh
- Hex encoded udh
nexmo.message.sendWapPushMessage(fromnumber, tonumber, title, url, validity, callback);
validity
- is optional (if given should be in milliseconds)
nexmo.message.shortcodeAlert(recipient, messageParams, opts, callback);
For detailed information please see the documentation at https://docs.nexmo.com/voice/voice-api
Requires applicationId
and privateKey
to be set on the constructor.
nexmo.calls.create({
to: [{
type: 'phone',
number: TO_NUMBER
}],
from: {
type: 'phone',
number: FROM_NUMBER
},
answer_url: [ANSWER_URL]
}, callback);
For more information see https://docs.nexmo.com/voice/voice-api/api-reference#call_create
nexmo.calls.get(callId, callback);
For more information see https://docs.nexmo.com/voice/voice-api/api-reference#call_create
nexmo.calls.get({status: 'completed'}, callback);
The first parameter can contain many properties to filter the returned call or to page results. For more information see the Calls API Reference.
nexmo.calls.stream.start(
callId,
{
stream_url: [
'https://nexmo-community.github.io/ncco-examples/assets/voice_api_audio_streaming.mp3'
],
loop: 1
});
For more information see https://docs.nexmo.com/voice/voice-api/api-reference#stream_put
nexmo.calls.stream.stop(callId);
For more information see https://docs.nexmo.com/voice/voice-api/api-reference#stream_delete
nexmo.calls.talk.start(
callId,
{
text: 'No songs detected',
voiceName: 'Emma',
loop: 1
}
);
For more information see https://docs.nexmo.com/voice/voice-api/api-reference#talk_put
nexmo.calls.talk.stop(callId);
nexmo.calls.dtmf.send(callId, params, callback);
For more information see https://docs.nexmo.com/voice/voice-api/api-reference#dtmf_put
For detailed information please see the documentation at https://docs.nexmo.com/voice/voice-api/recordings
nexmo.files.get(fileIdOrUrl, callback);
nexmo.files.save(fileIdOrUrl, file, callback);
nexmo.verify.request({number:<NUMBER_TO_BE_VERIFIED>,brand:<NAME_OF_THE_APP>},callback);
For more information check the documentation at https://docs.nexmo.com/verify/api-reference/api-reference#vrequest
nexmo.verify.check({request_id:<UNIQUE_ID_FROM_VERIFICATION_REQUEST>,code:<CODE_TO_CHECK>},callback);
For more information check the documentation at https://docs.nexmo.com/verify/api-reference/api-reference#check
nexmo.verify.search(<ONE_REQUEST_ID or ARRAY_OF_REQUEST_ID>,callback);
For more information check the documentation at https://docs.nexmo.com/verify/api-reference/api-reference#search
nexmo.verify.control({request_id:<UNIQUE_ID_FROM_VERIFICATION_REQUEST>,cmd:<CODE_TO_CHECK>},callback);
For more information check the documentation at https://docs.nexmo.com/verify/api-reference/api-reference#control
nexmo.numberInsight.get({level: 'basic', number: NUMBER}, callback);
For more information check the documentation at https://docs.nexmo.com/number-insight/basic
Example:
nexmo.numberInsight.get({level: 'basic', number: '1-234-567-8900'}, callback);
nexmo.numberInsight.get({level: 'standard', number: NUMBER}, callback);
For more information check the documentation at https://docs.nexmo.com/number-insight/standard
Example:
nexmo.numberInsight.get({level: 'standard', number: '1-234-567-8900'}, callback);
nexmo.numberInsight.get({level: 'advanced', number: NUMBER}, callback);
For more information check the documentation at https://docs.nexmo.com/number-insight/advanced
Number Insight Advanced might take a few seconds to return a result, therefore the option exist to process the result asynchronously through a webhook.
nexmo.numberInsight.get({level: 'advancedAsync', number: NUMBER, callback: "http://example.com"}, callback);
In this case the result of your insight request is posted to the callback URL as a webhook. For more details on webhooks see the Number Insight Advanced documentation.
For an overview of applications see https://docs.nexmo.com/tools/application-api
nexmo.applications.create(name, type, answerUrl, eventUrl, options, callback);
For more information see https://docs.nexmo.com/tools/application-api/api-reference#create
nexmo.applications.get(appId, callback);
For more information see https://docs.nexmo.com/tools/application-api/api-reference#retrieve
nexmo.application.get(options, callback);
For more information see https://docs.nexmo.com/tools/application-api/api-reference#list
nexmo.applications.update(appId, name, type, answerUrl, eventUrl, options, callback);
For more information see https://docs.nexmo.com/tools/application-api/api-reference#update
nexmo.application.delete(appId, callback);
For more information see https://docs.nexmo.com/tools/application-api/api-reference#delete
nexmo.account.checkBalance(callback);
nexmo.number.getPricing(countryCode, callback);
countryCode
- 2 letter ISO Country Code
nexmo.number.getPhonePricing(product, countryCode, callback);
product
- eithervoice
orsms
countryCode
- 2 letter ISO Country Code
nexmo.number.get(options, callback);
options
parameter is an optional Dictionary Object containing any of the following parameterspattern
search_pattern
index
size
For more details on what the above options mean refer to the Nexmo API documentation
Example:
nexmo.number.get({pattern:714,index:1,size:50,search_pattern:2}, callback);
nexmo.number.search(countryCode,options,callback);
options
parameter is optional. They can be one of the following :
- number pattern to match the search (eg. 1408)
- Dictionary Object optionally containing the following parameters :
pattern
search_pattern
features
index
size
For more details on what the above options mean refer to the Nexmo API documentation
Example:
nexmo.number.search('US',{pattern:3049,index:1,size:50,features:'VOICE',search_pattern:2}, callback);
nexmo.number.buy(countryCode, msisdn, callback);
nexmo.number.cancel(countryCode, msisdn, callback);
nexmo.number.update(countryCode, msisdn, params, callback);
params is a dictionary of parameters per documentation
nexmo.account.updatePassword(<NEW_PASSWORD>,callback);
nexmo.updateSMSCallback(<NEW_CALLBACK_URL>,callback);
nexmo.account.updateDeliveryReceiptCallback(<NEW_DR_CALLBACK_URL>,callback);
There are two ways of generating a JWT. You can use the function that exists on the Nexmo definition:
var Nexmo = require('nexmo');
var jwt = Nexmo.generateJwt('path/to/private.key', {application_id: APP_ID});
Or via a Nexmo
instance where your supplied applicationId
and privateKey
credentials will be used:
var Nexmo = require('nexmo');
var nexmo = new Nexmo({
apiKey: API_KEY,
apiSecret: API_SECRET,
applicationId: APP_ID,
privateKey: PRIVATE_KEY_PATH,
});
var jwt = nexmo.generateJwt();
nexmo.voice.sendTTSMessage(<TO_NUMBER>,message,options,callback);
nexmo.sendTTSPromptWithCapture(<TO_NUMBER>,message,<MAX_DIGITS>, <BYE_TEXT>,options,callback);
nexmo.voice.sendTTSPromptWithConfirm(<TO_NUMBER>, message ,<MAX_DIGITS>,'<PIN_CODE>',<BYE_TEXT>,<FAILED_TEXT>,options,callback);
Run:
npm test
Or to continually watch and run tests as you change the code:
npm run-script test-watch
See examples/README.md.
Also see the Nexmo Node Quickstarts repo.
- Voice
- Outbound Calls
- Inbound Call Webhook
- Stream to Call
- Talk to Call
- DTMF to Call
- Messaging
- Send
- Delivery Receipt Webhook
- Inbound Message Webhook
- Search
- Message
- Messages
- Rejections
- US Short Codes
- Two-Factor Authentication
- Event Based Alerts
- Sending Alerts
- Campaign Subscription Management
- Number Insight
- Basic
- Standard
- Advanced
- Advanced Async
- Advanced Async Webhook
- Verify
- Verify
- Check
- Search
- Control
- Applications
- Create an Application
- Get Applications
- Update an Application
- Delete an Application
- Account
- Balance
- Pricing
- Settings
- Top Up
- Numbers
- Search
- Buy
- Cancel
- Update
- Voice (Deprecated)
- Outbound Calls
- Inbound Call Webhook
- Text-To-Speech Call
- Text-To-Speech Prompt
MIT - see LICENSE