Skip to content


Subversion checkout URL

You can clone with
Download ZIP
PHP sdk for Verified API
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.

Verified API SDK for PHP

Build Status

Communicate with the Verified REST API using PHP

Install with Composer

If you're using Composer to manage dependencies, you can add the Verified SDK with it.

  "require" : {
    "verified/verified-sdk-php": "dev-master"
  "minimum-stability": "dev"

Install source from GitHub

The Verified SDK requires Unirest as a dependency. It also requires PHP v5.3+ and cURL extensions for PHP. Download the PHP library from Github, and require in your script like so:

To install the source code:

$ git clone

And include it in your scripts:

// first include Unirest
require_once '/path/to/unirest-php/lib/Unirest.php';
// then include this
require_once '/path/to/verified-sdk-php/lib/Verified.php';


The main requirements for running this SDK are api_key and api_secret. Please make sure you have them before you proceed any further.

The class can be configured in multiple ways, by sending in a configuration array during class instantiation:

// create a new instance
$config_array = array(
  "api_endpoint"   => "",
  "api_key"        => 'YOUR_API_KEY',
  "api_secret"     => 'YOUR_API_SECRET',
  "api_version"    => '1'
$verified = new Verified($config_array);

Or by using a more OOP approach:

$verified = new Verified();
  ->setConfig('api_version', '1');

Configuration parameters other than api_key and api_secret have setter and getter methods:

// set a config param
$verified->setConfig('api_version', '1');
// get a config param
$version = $verified->getConfig('api_version');

Please Note: By default, the api_endpoint parameter is set to the live URL, to use sandbox mode, please use the sandbox url

Making REST calls to API resources

Please see the Verified API docs for a list of available API resource endpoints. The class uses __call() magic method to work out which resource you are calling.

For example:

// make a GET request to /user/
$user = $verified->getUser('');
// make a POST request to /user
$user = $verified->addUser(array('post_params'));
// make a PUT request to /user/
$verified->editUser('', array('post_params'));
// make a DELETE request to /user/

Calling sub-resources follow a similar camelCased pattern, for example:

// make a GET request to /user/
$training_profile = $verified->getUserTrainingProfile('');

In simple terms:

  • getXXX() maps to GET requests
  • addXXX() maps to POST requests
  • editXXX() maps to PUT requests
  • deleteXXX() maps to DELETE requests

Output data & Error handling

All data from the SDK are in plain PHP arrays. If a method call fails, the output is false.

If you encounter the result of a query returning false, the error that occured can be obtained from the getError() method.

A very simple error resilient code snippet follows:

$user = $verified->getUser('');
if ($user == false) {
  $error = $verified->getError();
    throw new Exception($error['errorCode'] . $error['userMessage']);
} else {
  //loop through the returned data
  //and do something with it

When calling PUT and POST endpoints (addXXXX() and editXXXX()), if the payload contains invalid data, data validation messages appear in the form of an array inside the error object:

  'errorCode'   => '400',
  'userMessage' => 'Bad Request',
  'devMessage'  => array(
      'email'   => 'Invalid email address'

Response Metadata

In addition to the special getter getError(), there is also another getter method for metadata. getMetadata() returns an array containing all the metadata that was sent with the response.

Metadata usually contains the response status, offset/limit values and the total number of records returned. It also contains HATEOAS links which can be leveraged for paginating long lists.

To obtain HATEOAS links only, another special getter getLinks() can be used. It returns just the HATEOAS links from a response.

Something went wrong with that request. Please try again.