This package is abandoned and no longer maintained. The author suggests using the vonage-laravel package instead.

Laravel Package for Nexmo's PHP Client

Installs: 2 208 405

Dependents: 13

Suggesters: 0

Security: 0

Stars: 307

Watchers: 44

Forks: 80

Open Issues: 13

3.0.0 2022-02-03 12:04 UTC


Latest Stable Version Latest Unstable Version License Total Downloads

Nexmo is now known as Vonage


This is a simple Laravel Service Provider providing access to the Nexmo PHP Client Library.


To install the PHP client library using Composer:

composer require nexmo/laravel

Alternatively, add these two lines to your composer require section:

    "require": {
        "nexmo/laravel": "^2.0"

Laravel 5.5+

If you're using Laravel 5.5 or above, the package will automatically register the Nexmo provider and facade.

Laravel 5.4 and below

Add Nexmo\Laravel\NexmoServiceProvider to the providers array in your config/app.php:

'providers' => [
    // Other service providers...


If you want to use the facade interface, you can use the facade class when needed:

use Nexmo\Laravel\Facade\Nexmo;

Or add an alias in your config/app.php:

'aliases' => [
    'Nexmo' => Nexmo\Laravel\Facade\Nexmo::class,

Using Nexmo-Laravel with Lumen

Nexmo-Laravel works with Lumen too! You'll need to do a little work by hand to get it up and running. First, install the package using composer:

composer require nexmo/laravel

Next, we have to tell Lumen that our library exists. Update bootstrap/app.php and register the NexmoServiceProvider:


Finally, we need to configure the library. Unfortunately Lumen doesn't support auto-publishing files so you'll have to create the config file yourself by creating a config directory and copying the config file out of the package in to your project:

mkdir config
cp vendor/nexmo/laravel/config/nexmo.php config/nexmo.php

At this point, set NEXMO_KEY and NEXMO_SECRET in your .env file and it should be working for you. You can test this with the following route:

$router->get('/', function () use ($router) {

Dealing with Guzzle Client issues

By default, this package uses nexmo/client, which includes a Guzzle adapter for accessing the API. Some other libraries supply their own Guzzle adapter, leading to composer not being able to resolve a list of dependencies. You may get an error when adding nexmo/laravel to your application because of this.

The Nexmo client allows you to override the HTTP adapter that is being used. This takes a bit more configuration, but this package allows you to use nexmo/client-core to supply your own HTTP adapter.

To do this:

  1. composer require nexmo/client-core to install the Core SDK

  2. Install your own httplug-compatible adapter. For example, to use Symfony's HTTP Client:

    1. composer require symfony/http-client php-http/message-factory php-http/httplug nyholm/psr7
  3. composer require nexmo/laravel to install this package

  4. In your .env file, add the following configuration:


You can now pull the Nexmo\Client object from the Laravel Service Container, or use the Facade provided by this package.


You can use artisan vendor:publish to copy the distribution configuration file to your app's config directory:

php artisan vendor:publish

Then update config/nexmo.php with your credentials. Alternatively, you can update your .env file with the following:


Optionally, you could also set an application_id and private_key if required:


Private keys can either be a path to a file, like above, or the string of the key itself:



To use the Nexmo Client Library you can use the facade, or request the instance from the service container:

    'to'   => '14845551244',
    'from' => '16105552344',
    'text' => 'Using the facade to send a message.'


$nexmo = app('Nexmo\Client');

    'to'   => '14845551244',
    'from' => '16105552344',
    'text' => 'Using the instance to send a message.'

If you're using private key authentication, try making a voice call:

    'to' => [[
        'type' => 'phone',
        'number' => '14155550100'
    'from' => [
        'type' => 'phone',
        'number' => '14155550101'
    'answer_url' => [''],
    'event_url' => ['']

For more information on using the Nexmo client library, see the official client library repository.