The Plivo PHP SDK makes it simpler to integrate voice and SMS communications into your PHP applications using the Plivo REST APIs. Using the SDK, you’ll be able to make voice calls, send SMS messages, and generate Plivo XML documents to control your call flows.


To install Composer

Globally in Mac

  1. Download the latest version of Composer.
  2. Run in Terminal:

     $ php ~/Downloads/composer.phar --version
  3. To make Composer executable , run:

     $ cp ~/Downloads/composer.phar /usr/local/bin/composer
     $ sudo chmod +x /usr/local/bin/composer
     $ Make sure you move the file to bin directory.
  4. To check whether the path already includes /usr/local/bin, run:

     $ echo $PATH

    If necessary, update the $PATH by running:

     $ export PATH = $PATH:/usr/local/bin
     $ source ~/.bash_profile
  5. Check the version of Composer by running:

     $ composer --version.

Globally in Linux

  1. Run:

     $ curl -sS | php
  2. To make the composer.phar file executable, run:

     $ chmod +x composer.phar
  3. To make Composer globally available for all system users, run:

     $ mv composer.phar /usr/local/bin/composer

Windows 10

  1. Download and run the Windows Installer for Composer.

    Make sure to allow Windows Installer for Composer to make changes to your php.ini file.

  2. If you have any terminal windows open, close them and open a fresh terminal instance.
  3. Run the Composer command.

     $ composer -V

To install the Plivo package

  • To install the stable release, run this command in the project directory:

      $ composer require plivo/plivo-php
  • To install a specific or beta release, run this command in the project directory, specifying the release:

      $ composer require plivo/plivo-php:4.3.1
  • Alternatively, you can download this source and run:

      $ composer install

This command generates the autoload files, which you can include using a line in your PHP source code:

require 'vendor/autoload.php'

Getting started


To make the API requests, you need to create a RestClient and provide it with authentication credentials, which you can find on the Overview page of the Plivo console.

We recommend that you store your credentials in the PLIVO_AUTH_ID and the PLIVO_AUTH_TOKEN environment variables, to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and it will automatically fetch them from the environment variables:

require 'vendor/autoload.php';
use Plivo\RestClient;

$client = new RestClient();

Alternatively, you can specify the authentication credentials while initializing the RestClient.

require 'vendor/autoload.php';
use Plivo\RestClient;

$client = new RestClient("<auth_id>","<auth_token>");

Replace the auth placeholders with your authentication credentials from the Plivo console.

The basics

The SDK uses consistent interfaces to create, retrieve, update, delete, and list resources. The pattern is:

$client->resources->create($params) # Create
$client->resources->get($id) # Get
$client->resources->update($id, $params) # Update
$client->resources->delete($id) # Delete
$client->resources->list() # List all resources, max 20 at a time

You can also use the resource directly to update and delete it. For example:

$resource = $client->resources->get($id)
$resource->update($params) # update the resource
$resource->delete() # Delete the resource

Using $client->resources->list() lists the first 20 resources by default (the first page, with limit as 20, and offset as 0). Use limit and offset to get more pages of resources.


Send a message

require 'vendor/autoload.php';
use Plivo\RestClient;

$client = new RestClient();
$message_created = $client->messages->create(
        "src" => "<sender_id>",
        "dst" => "<destination_number>",
        "text"  =>"Hello, world!",

Replace the auth placeholders with your authentication credentials from the Plivo console. Replace the phone number placeholders with actual phone numbers in E.164 format (for example, +12025551234).

Make a call

require 'vendor/autoload.php';
use Plivo\RestClient;

$client = new RestClient();
$call_made = $client->calls->create(

Generate Plivo XML

require 'vendor/autoload.php';
use Plivo\XML\Response;

$response = new Response();
$response->addSpeak('Hello, world!');

This generates the following XML:

<?xml version="1.0" encoding="utf-8"?>
  <Speak>Hello, world!</Speak>

Run a PHLO

 * Example for API Request
require 'vendor/autoload.php';
use Plivo\Resources\PHLO\PhloRestClient;
use Plivo\Exceptions\PlivoRestException;
$client = new PhloRestClient("<auth_id>", "<auth_token>");
$phlo = $client->phlo->get("<phlo_id>");
try {
    $response = $phlo->run(["field1" => "value1", "field2" => "value2"]); // These are the fields entered in the PHLO console
} catch (PlivoRestException $ex) {

Replace the auth placeholders with your authentication credentials from the Plivo console. Replace the phlo_id placeholder with your PHLO ID from the Plivo console.

More examples

Refer to the Plivo API Reference documentation for more examples. Also refer to our guide to setting up dev environment for details on how to set up a simple PHP server and expose that server to the internet.

Example response

    [requestUuid:protected] => 7e778326-2a51-43d9-b1a1-6ac93f077943
    [_message] => call fired
    [apiId] => ecdd4ffc-9413-11ea-8769-0242ac110007
    [statusCode] => 201

Reporting issues

Report feedback or problems with this SDK by opening an issue on GitHub.