api

VoiceTrends API

Overview

The VoiceTrends API provides programmatic access to underlying raw data:


Base URL

The base URL for all API requests is:

https://voicetrends.plumvoice.com/api/


Authentication

The VoiceTrends API utilizes a two-step authentication process. First, authenticate using tool-specific credentials. Users that have both DEV and Fuse accounts must authenticate each one separately. Users that only use one or the other need to authenticate with that tool. This tool-specific authentication generates a new set of temporary authentication credentials. You then use the temporary credentials to fetch data from VoiceTrends. The temporary credentials expire 24 hours after their last use. If you fetch data on a consistent basis you will be able to use your credentials indefinitely, however, it is considered best practice to re-authenticate every 24 hours.

All data API requests authenticate using HTTP Basic Authentication using the temporary credentials created by a call to the Authenticate resource. Any data requests made without this HTTP Basic Authentication header or with invalid credentials return an HTTP 401 Unauthorized error. The body of the error message provides details about what went wrong with the request.

Supported Accept Headers

The API method honors the following Accept header values. These determine the Content-Type and the representation for the response:

  • application/json
  • application/xml

Specifying an Accept header other than these values returns a Content-Type of 'application/json' by default.

Rate Limiting

The VoiceTrends APIs utilize rate limiting for both authentication and data requests. For every 15-minute interval, users can make 15 authentication attempts and a total of 150 data requests per authenticated account. Rate limiting details are provided directly in header responses for all API requests as follows:

X-RateLimit-Limit: 15
X-RateLimit-Remaining: 14
X-RateLimit-Reset: 1519398000


  • X-RateLimit-Limit is the hard-coded limit for the resource you are requesting.
  • X-RateLimit-Remaining is the total number of requests you have left for the current 15-minute window.
  • X-RateLimit-Reset is the unix timestamp for when the current 15-minute window expires.


Please note: all data requests are tied to a single rate-limit counter. This means you are allotted 150 total requests across all data resources for a given authenticated account. Additionally, the remaining count does not reset if you attempt to re-authenticate.

Authenticate

Description

This service is used to perform initial account authentication. Provide your tool-specific login and password as well as the tool you are attempting to authenticate against. This API is rate-limited to 15 requests per 15-minute window.

URL:
https://voicetrends.plumvoice.com/api/auth
HTTP method:
POST
Content-Type:
application/x-www-form-urlencoded
Request Parameters:
Name Data Type Required Description
tool string yes The tool you are authenticating against. Allowed values are: “dev”, “fuse”, “insight” or “fuseplus”.
login string yes The login credential associated with the provided tool.
password string yes The password credential associated with the provided tool.

Possible Response Codes:

  • 200: Success, account successfully authenticated.
  • 400: Supplied data improperly formatted or invalid
  • 401: Authentication parameters invalid or the account is inactive
  • 405: Invalid HTTP method supplied (only POST allowed)
  • 429: Rate limit exceeded
  • 500: Unknown error

The return structure will contain the following items:

Name Data Type Always Present Description
error string no This indicates which error occurred if the HTTP code is not 200.
login string no A 200 HTTP code returns this value, which will be used as the login for data access APIs using HTTP Basic Authentication.
password string no A 200 HTTP code returns this value, which will be used as the password for data access APIs using HTTP Basic Authentication.

Sample Code

This sample code makes a request to authenticate an account using PHP, but any language capable of integrating with a REST API works for this type of request:

<?php
// account settings
$tool = '<your_desired_tool>';
$login = '<your_account_login>';
$password = '<your_account_password>';

// build the URL and POST parameters
$url = 'https://voicetrends.plumvoice.com/api/auth';
$params = array('tool'=>$tool, 'login'=>$login, 'password'=>$password);

$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/json", "Content-type: application/x-www-form-urlencoded"));
$result = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
var_dump($result);
var_dump($http_code);

Sample Responses

JSON response (HTTP Code 200):

HTTP/1.1 200 OK
X-RateLimit-Limit: 15
X-RateLimit-Remaining: 14
X-RateLimit-Reset: 1519442100
Content-Length: 90
Content-Type: application/json

{"login":"57b264aa1b794ff89d4effaafdf5e4b0","password":"25d421b1ee6c44daa2d34808e9466f5c"}

The same response with an Accept header of application/xml in the request looks like:

XML response (HTTP Code 200):

HTTP/1.1 200 OK
X-RateLimit-Limit: 15
X-RateLimit-Remaining: 14
X-RateLimit-Reset: 1519442100
Content-Length: 140
Content-Type: application/xml

<?xml version="1.0"?>
<result>
  <login>57b264aa1b794ff89d4effaafdf5e4b0</login>
  <password>25d421b1ee6c44daa2d34808e9466f5c</password>
</result>

On Failure:

JSON Response (HTTP Code 400):

{ "error": "Invalid tool parameter.  Allowed values: dev, fuse, insight and fuseplus." }

The same response with an Accept header of application/xml in the request looks like:

XML Response (HTTP Code 400):

<?xml version="1.0"?>
<result>
    <error>Invalid tool parameter.  Allowed values: dev, fuse, insight and fuseplus.</error>
</result>


Call Volume

Description

This service fetches any of the available data in the Call Volume section in VoiceTrends. To use this service, provide your temporary authentication credentials and several GET parameters, which function as filters for this data. This API is rate-limited in a group with all other raw data resources to 150 requests per 15-minute window.

URL:

https://voicetrends.plumvoice.com/api/volume/{start}/{end}/{period}/{phone}

HTTP method:

GET
Request Parameters:
Name Data Type Required Description
start integer yes The start date (inclusive) for this request in YYYYMMDD format.
end integer yes The end date (inclusive) for this request in YYYYMMDD format.
period string yes The period that the data will be grouped into (day, week, month).
phone string yes The single phone number for this report or “ALL” to merge data across all numbers.

Possible Response Codes:

  • 200: success, data successfully returned.
  • 400: supplied data improperly formatted or invalid
  • 401: authentication parameters invalid or the account is inactive
  • 405: invalid HTTP method supplied (only POST allowed)
  • 429: rate limit exceeded
  • 500: unknown error

The return structure will contain the following item(s):

Name Data Type Always Present Description
error string no Indicates what went wrong when an HTTP code other than 200 is returned.
calls array no A 200 HTTP code returns this value, the list of call counts grouped by period timestamp.
call_minutes array no A 200 HTTP code returns this value, the list of call minutes grouped by period timestamp.
transfers array no A 200 HTTP code returns this value, the list of transfer counts grouped by period timestamp.
transfer_rate array no A 200 HTTP code returns this value, the list of transfer rate percentages grouped by period timestamp.
average_call_length array no A 200 HTTP code returns this value, the list of average call lengths in seconds grouped by period timestamp.

Sample Code

This sample code makes a request to authenticate an account using PHP, but any language capable of integrating with a REST API works for this type of request:

<?php
// authentication and filter settings
$login = '<your_temporary_login>';
$password = '<your_temporary_password>';
$start = '<start_date>';
$end = '<end_date>';
$period = '<selected_period>';
$phone = '<selected_phone_number>';

// build the URL
$url = 'https://voicetrends.plumvoice.com/api/volume/'.$start.'/'.$end.'/'.$period.'/'.$phone;

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD, $login.':'.$password);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/json"));
$result = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
var_dump($result);
var_dump($http_code);

Sample Responses

JSON Response (HTTP Code 200):

HTTP/1.1 200 OK
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519659000
Content-Length: 690
Content-Type: application/json

{
  "calls":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":1,"1518066000":0},
  "call_minutes":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":2.1,"1518066000":0},
  "transfers":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":1,"1518066000":0},
  "transfer_rate":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":100,"1518066000":0},
  "average_call_length":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":126,"1518066000":0}
}

The same response with an Accept header of application/xml in the request looks like:

XML Response (HTTP Code 200):

HTTP/1.1 200 OK
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 148
X-RateLimit-Reset: 1519659000
Content-Length: 1667
Content-Type: application/xml

<?xml version="1.0"?>
<result>
  <calls>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">1</item>
    <item timestamp="1518066000">0</item>
  </calls>
  <call_minutes>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">2.1</item>
    <item timestamp="1518066000">0</item>
  </call_minutes>
  <transfers>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">1</item>
    <item timestamp="1518066000">0</item>
  </transfers>
  <transfer_rate>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">100</item>
    <item timestamp="1518066000">0</item>
  </transfer_rate>
  <average_call_length>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">126</item>
    <item timestamp="1518066000">0</item>
  </average_call_length>
</result>

On Failure:

JSON Response (HTTP Code 400):

HTTP/1.1 400 Bad Request
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519659000
Content-Length: 90
Content-Type: application/json

{"error":"Invalid start parameter."}

The same response with an Accept header of application/xml in the request looks like:

XML Response (HTTP Code 400):

HTTP/1.1 400 Bad Request
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519659000
Content-Length: 120
Content-Type: application/json

<?xml version="1.0"?>
<result>
  <error>Invalid start parameter.</error>
</result>


Event Tracker

Description

This service fetches any of the available data in the Event Tracker section in VoiceTrends. To use this service, provide your temporary authentication credentials and several GET parameters, which function as filters for this data. This API is rate-limited in a group with all other raw data resources to 150 requests per 15-minute window.

URL:

https://voicetrends.plumvoice.com/api/events/{start}/{end}/{period}/{phone}

HTTP method:

GET
Request Parameters:
Name Data Type Required Description
start integer yes The start date (inclusive) for this request in YYYYMMDD format.
end integer yes The end date (inclusive) for this request in YYYYMMDD format.
period string yes The period that the data will be grouped into (day, week, month).
phone string yes The single phone number for this report or “ALL” to merge data across all numbers.

Possible Response Codes:

  • 200: success, data successfully returned.
  • 400: supplied data improperly formatted or invalid
  • 401: authentication parameters invalid or the account is inactive
  • 405: invalid HTTP method supplied (only POST allowed)
  • 429: rate limit exceeded
  • 500: unknown error

The return structure will contain the following item(s):

Name Data Type Always Present Description
error string no Indicates what went wrong when an HTTP code other than 200 is returned.
calls array no A 200 HTTP code returns this value, the list of call counts grouped by period timestamp.
log_events array no A 200 HTTP code returns this value, the list of log event counts grouped by period timestamp.
loops_per_call array no A 200 HTTP code returns this value, the list of average loops per call grouped by period timestamp.
form_items array no A 200 HTTP code returns this value, the list of count of form items grouped by period timestamp.
loops array no A 200 HTTP code returns this value, the list of count of loops grouped by period timestamp.
average_form_items array no A 200 HTTP code returns this value, the list of average number of form items per call grouped by period timestamp.

Sample Code

This sample code makes a request to fetch events data using PHP but any language capable of integrating with a REST API can be used:

<?php
// authentication and filter settings
$login = '<your_temporary_login>';
$password = '<your_temporary_password>';
$start = '<start_date>';
$end = '<end_date>';
$period = '<selected_period>';
$phone = '<selected_phone_number>';

// build the URL
$url = 'https://voicetrends.plumvoice.com/api/events/'.$start.'/'.$end.'/'.$period.'/'.$phone;

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD, $login.':'.$password);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/json"));
$result = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
var_dump($result);
var_dump($http_code);

Sample Responses

JSON Response (HTTP Code 200):

HTTP/1.1 200 OK
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519659900
Content-Length: 813
Content-Type: application/json

{
  "calls":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":1,"1518066000":0},
  "log_events":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":0,"1518066000":0},
  "loops_per_call":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":0,"1518066000":0},
  "form_items":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":0,"1518066000":0},
  "loops":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":0,"1518066000":0},
  "average_form_items":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":0,"1518066000":0}
}

The same response with an Accept header of application/xml in the request looks like:

XML Response (HTTP Code 200):

HTTP/1.1 200 OK
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 148
X-RateLimit-Reset: 1519659900
Content-Length: 1970
Content-Type: application/xml

<?xml version="1.0"?>
<result>
  <calls>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">1</item>
    <item timestamp="1518066000">0</item>
  </calls>
  <log_events>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">0</item>
    <item timestamp="1518066000">0</item>
  </log_events>
  <loops_per_call>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">0</item>
    <item timestamp="1518066000">0</item>
  </loops_per_call>
  <form_items>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">0</item>
    <item timestamp="1518066000">0</item>
  </form_items>
  <loops>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">0</item>
    <item timestamp="1518066000">0</item>
  </loops>
  <average_form_items>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">0</item>
    <item timestamp="1518066000">0</item>
  </average_form_items>
</result>

On Failure:

JSON Response (HTTP Code 400):

HTTP/1.1 400 Bad Request
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519659000
Content-Length: 90
Content-Type: application/json

{"error":"Invalid start parameter."}

The same response with an Accept header of application/xml in the request looks like:

XML Response (HTTP Code 400):

HTTP/1.1 400 Bad Request
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519659000
Content-Length: 120
Content-Type: application/json

<?xml version="1.0"?>
<result>
  <error>Invalid start parameter.</error>
</result>


Performance

Description

This service fetches any of the available data in the Performance section in VoiceTrends. To use this service, provide your temporary authentication credentials and several GET parameters, which function as filters for this data. This API is rate-limited in a group with all other raw data resources to 150 requests per 15-minute window.

URL:

https://voicetrends.plumvoice.com/api/performance/{start}/{end}/{period}/{phone}

HTTP method:

GET
Request Parameters:
Name Data Type Required Description
start integer yes The start date (inclusive) for this request in YYYYMMDD format.
end integer yes The end date (inclusive) for this request in YYYYMMDD format.
period string yes The period that the data will be grouped into (day, week, month).
phone string yes The single phone number for this report or “ALL” to merge data across all numbers.

Possible Response Codes:

  • 200: success, data successfully returned.
  • 400: supplied data improperly formatted or invalid
  • 401: authentication parameters invalid or the account is inactive
  • 405: invalid HTTP method supplied (only POST allowed)
  • 429: rate limit exceeded
  • 500: unknown error

The return structure will contain the following item(s):

Name Data Type Always Present Description
error string no Indicates what went wrong when an HTTP code other than 200 is returned.
calls array no A 200 HTTP code returns this value, the list of call counts grouped by period timestamp.
js_errors array no A 200 HTTP code returns this value, the list of JavaScript error counts grouped by period timestamp.
js_errors_per_call array no A 200 HTTP code returns this value, the list of average JavaScript errors per call grouped by period timestamp.
fetch_errors array no A 200 HTTP code returns this value, the list of fetch error counts grouped by period timestamp.
fetch_errors_per_call array no A 200 HTTP code returns this value, the list of average fetch errors per call grouped by period timestamp.
average_page_load array no A 200 HTTP code returns this value, the list of average page load in seconds grouped by period timestamp.

Sample Code

This sample code makes a request to authenticate an account using PHP, but any language capable of integrating with a REST API works for this type of request:

<?php
// authentication and filter settings
$login = '<your_temporary_login>';
$password = '<your_temporary_password>';
$start = '<start_date>';
$end = '<end_date>';
$period = '<selected_period>';
$phone = '<selected_phone_number>';

// build the URL
$url = 'https://voicetrends.plumvoice.com/api/performance/'.$start.'/'.$end.'/'.$period.'/'.$phone;

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD, $login.':'.$password);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/json"));
$result = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
var_dump($result);
var_dump($http_code);

Sample Responses

JSON Response (HTTP Code 200):

HTTP/1.1 200 OK
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519660800
Content-Length: 837
Content-Type: application/json

{
  "calls":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":1,"1518066000":0},
  "js_errors":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":0,"1518066000":0},
  "js_errors_per_call":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":0,"1518066000":0},
  "fetch_errors":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":0,"1518066000":0},
  "fetch_errors_per_call":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":0,"1518066000":0},
  "average_page_load":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":0.045,"1518066000":0}
}

The same response with an Accept header of application/xml in the request looks like:

XML Response (HTTP Code 200):

HTTP/1.1 200 OK
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 148
X-RateLimit-Reset: 1519660800
Content-Length: 2014
Content-Type: application/xml

<?xml version="1.0"?>
<result>
  <calls>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">1</item>
    <item timestamp="1518066000">0</item>
  </calls>
  <js_errors>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">0</item>
    <item timestamp="1518066000">0</item>
  </js_errors>
  <js_errors_per_call>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">0</item>
    <item timestamp="1518066000">0</item>
  </js_errors_per_call>
  <fetch_errors>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">0</item>
    <item timestamp="1518066000">0</item>
  </fetch_errors>
  <fetch_errors_per_call>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">0</item>
    <item timestamp="1518066000">0</item>
  </fetch_errors_per_call>
  <average_page_load>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">0.045</item>
    <item timestamp="1518066000">0</item>
  </average_page_load>
</result>

On Failure:

JSON Response (HTTP Code 400):

HTTP/1.1 400 Bad Request
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519659000
Content-Length: 90
Content-Type: application/json

{"error":"Invalid start parameter."}

The same response with an Accept header of application/xml in the request looks like:

XML Response (HTTP Code 400):

HTTP/1.1 400 Bad Request
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519659000
Content-Length: 120
Content-Type: application/json

<?xml version="1.0"?>
<result>
  <error>Invalid start parameter.</error>
</result>


Diagnostic Flow

Description

This service fetches any of the available data in the Diagnostic Flow section in VoiceTrends. To use this service, provide your temporary authentication credentials and several GET parameters, which function as filters for this data. This API is rate-limited in a group with all other raw data resources to 150 requests per 15-minute window.

URL:

https://voicetrends.plumvoice.com/api/path/{start}/{end}/{phone}

HTTP method:

GET
Request Parameters:
Name Data Type Required Description
start integer yes The start date (inclusive) for this request in YYYYMMDD format.
end integer yes The end date (inclusive) for this request in YYYYMMDD format.
phone string yes The single phone number for this report or “ALL” to merge data across all numbers.

Possible Response Codes:

  • 200: success, data successfully returned.
  • 400: supplied data improperly formatted or invalid
  • 401: authentication parameters invalid or the account is inactive
  • 405: invalid HTTP method supplied (only POST allowed)
  • 429: rate limit exceeded
  • 500: unknown error

The return structure will contain the following item(s):

Name Data Type Always Present Description
error string no Indicates what went wrong when an HTTP code other than 200 is returned.
applications array no A 200 HTTP code returns this value, the list of applications and their child pages, forms and items.

Sample Code

This sample code makes a request to authenticate an account using PHP, but any language capable of integrating with a REST API works for this type of request:

<?php
// authentication and filter settings
$login = '<your_temporary_login>';
$password = '<your_temporary_password>';
$start = '<start_date>';
$end = '<end_date>';
$phone = '<selected_phone_number>';

// build the URL
$url = 'https://voicetrends.plumvoice.com/api/performance/'.$start.'/'.$end.'/'.$phone;

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD, $login.':'.$password);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/json"));
$result = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
var_dump($result);
var_dump($http_code);

Sample Responses

JSON Response (HTTP Code 200):

HTTP/1.1 200 OK
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 148
X-RateLimit-Reset: 1519664400
Content-Length: 1908
Content-Type: application/json

{
  "applications":{
    "https:\/\/demos.plumgroup.com\/vxml\/start.php":[
      {
        "page":"main.php",
        "form":"main_menu",
        "item":"selection",
        "visits":985,
        "filled":941,
        "nomatch":32,
        "noinput":12,
        "transfer":0,
        "disconnect":0
      },
      {
        "page":"sales.php",
        "form":"product_menu",
        "item":"selection",
        "visits":462,
        "filled":425,
        "nomatch":20,
        "noinput":4,
        "transfer":0,
        "disconnect":13
      },
      {
        "page":"customer.php",
        "form":"enter_customer_number",
        "item":"customer_number",
        "visits":523,
        "filled":488,
        "nomatch":12,
        "noinput":8,
        "transfer":0,
        "disconnect":15
      },
      {
        "page":"customer.php",
        "form":"confirm_customer_number",
        "item":"confirmation",
        "visits":508,
        "filled":481,
        "nomatch":9,
        "noinput":4,
        "transfer":0,
        "disconnect":14
      },
      {
        "page":"support.php",
        "form":"select_division",
        "item":"selection",
        "visits":316,
        "filled":292,
        "nomatch":6,
        "noinput":3,
        "transfer":0,
        "disconnect":15
      },
      {
        "page":"helpdesk.php",
        "form":"helpdesk_transfer",
        "item":"transfer",
        "visits":134,
        "filled":56,
        "nomatch":0,
        "noinput":0,
        "transfer":56,
        "disconnect":134
      },
      {
        "page":"tier_one.php",
        "form":"tier_one_transfer",
        "item":"transfer",
        "visits":89,
        "filled":44,
        "nomatch":0,
        "noinput":0,
        "transfer":44,
        "disconnect":89
      },
      {
        "page":"tier_three.php",
        "form":"tier_three_transfer",
        "item":"transfer",
        "visits":78,
        "filled":32,
        "nomatch":0,
        "noinput":0,
        "transfer":32,
        "disconnect":78
      },
      {
        "page":"sales.php",
        "form":"insight",
        "item":"insight_transfer",
        "visits":87,
        "filled":23,
        "nomatch":0,
        "noinput":0,
        "transfer":23,
        "disconnect":87
      },
      {
        "page":"sales.php",
        "form":"fuse",
        "item":"fuse_transfer",
        "visits":50,
        "filled":13,
        "nomatch":0,
        "noinput":0,
        "transfer":13,
        "disconnect":50
      },
      {
        "page":"sales.php",
        "form":"dev",
        "item":"dev_transfer",
        "visits":312,
        "filled":8,
        "nomatch":0,
        "noinput":0,
        "transfer":8,
        "disconnect":312
      },
      {
        "page":"billing.php",
        "form":"billing_menu",
        "item":"selection",
        "visits":178,
        "filled":151,
        "nomatch":0,
        "noinput":20,
        "transfer":0,
        "disconnect":7
      },
      {
        "page":"billing.php",
        "form":"make_payment",
        "item":"enter_bank_number",
        "visits":87,
        "filled":64,
        "nomatch":9,
        "noinput":5,
        "transfer":0,
        "disconnect":9
      },
      {
        "page":"billing.php",
        "form":"billing_inquiry",
        "item":"selection",
        "visits":84,
        "filled":57,
        "nomatch":14,
        "noinput":9,
        "transfer":0,
        "disconnect":4
      },
      {
        "page":"billing.php",
        "form":"payment",
        "item":"payment_transfer",
        "visits":12,
        "filled":12,
        "nomatch":0,
        "noinput":0,
        "transfer":12,
        "disconnect":12
      },
      {
        "page":"billing.php",
        "form":"make_payment",
        "item":"enter_billing_address",
        "visits":78,
        "filled":63,
        "nomatch":8,
        "noinput":4,
        "transfer":0,
        "disconnect":3
      },
      {
        "page":"billing.php",
        "form":"make_payment",
        "item":"enter_payment_amount",
        "visits":75,
        "filled":58,
        "nomatch":6,
        "noinput":3,
        "transfer":0,
        "disconnect":8
      },
      {
        "page":"billing.php",
        "form":"payment_success",
        "item":"thank_you",
        "visits":55,
        "filled":55,
        "nomatch":0,
        "noinput":0,
        "transfer":0,
        "disconnect":55
      },
      {
        "page":"billing.php",
        "form":"billing_inquiry",
        "item":"billing_transfer",
        "visits":80,
        "filled":12,
        "nomatch":0,
        "noinput":0,
        "transfer":12,
        "disconnect":80
      }
    ]
  }
}

The same response with an Accept header of application/xml in the request looks like:

XML Response (HTTP Code 200):

HTTP/1.1 200 OK
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519664400
Content-Length: 2719
Content-Type: application/xml

<?xml version="1.0"?>
<result>
  <applications>
    <application>
      <url>http://survey.plumvoice.com/vxml/start.php?s=3469&amp;i=43218048</url>
      <rows>
        <row>
          <page>main.php</page>
          <form>main_menu</form>
          <item>selection</item>
          <visits>985</visits>
          <filled>941</filled>
          <nomatch>32</nomatch>
          <noinput>12</noinput>
          <transfer>0</transfer>
          <disconnect>0</disconnect>
        </row>
        <row>
          <page>sales.php</page>
          <form>product_menu</form>
          <item>selection</item>
          <visits>462</visits>
          <filled>425</filled>
          <nomatch>20</nomatch>
          <noinput>4</noinput>
          <transfer>0</transfer>
          <disconnect>13</disconnect>
        </row>
        <row>
          <page>customer.php</page>
          <form>enter_customer_number</form>
          <item>customer_number</item>
          <visits>523</visits>
          <filled>488</filled>
          <nomatch>12</nomatch>
          <noinput>8</noinput>
          <transfer>0</transfer>
          <disconnect>15</disconnect>
        </row>
        <row>
          <page>customer.php</page>
          <form>confirm_customer_number</form>
          <item>confirmation</item>
          <visits>508</visits>
          <filled>481</filled>
          <nomatch>9</nomatch>
          <noinput>4</noinput>
          <transfer>0</transfer>
          <disconnect>14</disconnect>
        </row>
        <row>
          <page>support.php</page>
          <form>select_division</form>
          <item>selection</item>
          <visits>316</visits>
          <filled>292</filled>
          <nomatch>6</nomatch>
          <noinput>3</noinput>
          <transfer>0</transfer>
          <disconnect>15</disconnect>
        </row>
        <row>
          <page>helpdesk.php</page>
          <form>helpdesk_transfer</form>
          <item>transfer</item>
          <visits>134</visits>
          <filled>56</filled>
          <nomatch>0</nomatch>
          <noinput>0</noinput>
          <transfer>56</transfer>
          <disconnect>134</disconnect>
        </row>
        <row>
          <page>tier_one.php</page>
          <form>tier_one_transfer</form>
          <item>transfer</item>
          <visits>89</visits>
          <filled>44</filled>
          <nomatch>0</nomatch>
          <noinput>0</noinput>
          <transfer>44</transfer>
          <disconnect>89</disconnect>
        </row>
        <row>
          <page>tier_three.php</page>
          <form>tier_three_transfer</form>
          <item>transfer</item>
          <visits>78</visits>
          <filled>32</filled>
          <nomatch>0</nomatch>
          <noinput>0</noinput>
          <transfer>32</transfer>
          <disconnect>78</disconnect>
        </row>
        <row>
          <page>sales.php</page>
          <form>insight</form>
          <item>insight_transfer</item>
          <visits>87</visits>
          <filled>23</filled>
          <nomatch>0</nomatch>
          <noinput>0</noinput>
          <transfer>23</transfer>
          <disconnect>87</disconnect>
        </row>
        <row>
          <page>sales.php</page>
          <form>fuse</form>
          <item>fuse_transfer</item>
          <visits>50</visits>
          <filled>13</filled>
          <nomatch>0</nomatch>
          <noinput>0</noinput>
          <transfer>13</transfer>
          <disconnect>50</disconnect>
        </row>
        <row>
          <page>sales.php</page>
          <form>dev</form>
          <item>dev_transfer</item>
          <visits>312</visits>
          <filled>8</filled>
          <nomatch>0</nomatch>
          <noinput>0</noinput>
          <transfer>8</transfer>
          <disconnect>312</disconnect>
        </row>
        <row>
          <page>billing.php</page>
          <form>billing_menu</form>
          <item>selection</item>
          <visits>178</visits>
          <filled>151</filled>
          <nomatch>0</nomatch>
          <noinput>20</noinput>
          <transfer>0</transfer>
          <disconnect>7</disconnect>
        </row>
        <row>
          <page>billing.php</page>
          <form>make_payment</form>
          <item>enter_bank_number</item>
          <visits>87</visits>
          <filled>64</filled>
          <nomatch>9</nomatch>
          <noinput>5</noinput>
          <transfer>0</transfer>
          <disconnect>9</disconnect>
        </row>
        <row>
          <page>billing.php</page>
          <form>billing_inquiry</form>
          <item>selection</item>
          <visits>84</visits>
          <filled>57</filled>
          <nomatch>14</nomatch>
          <noinput>9</noinput>
          <transfer>0</transfer>
          <disconnect>4</disconnect>
        </row>
        <row>
          <page>billing.php</page>
          <form>payment</form>
          <item>payment_transfer</item>
          <visits>12</visits>
          <filled>12</filled>
          <nomatch>0</nomatch>
          <noinput>0</noinput>
          <transfer>12</transfer>
          <disconnect>12</disconnect>
        </row>
        <row>
          <page>billing.php</page>
          <form>make_payment</form>
          <item>enter_billing_address</item>
          <visits>78</visits>
          <filled>63</filled>
          <nomatch>8</nomatch>
          <noinput>4</noinput>
          <transfer>0</transfer>
          <disconnect>3</disconnect>
        </row>
        <row>
          <page>billing.php</page>
          <form>make_payment</form>
          <item>enter_payment_amount</item>
          <visits>75</visits>
          <filled>58</filled>
          <nomatch>6</nomatch>
          <noinput>3</noinput>
          <transfer>0</transfer>
          <disconnect>8</disconnect>
        </row>
        <row>
          <page>billing.php</page>
          <form>payment_success</form>
          <item>thank_you</item>
          <visits>55</visits>
          <filled>55</filled>
          <nomatch>0</nomatch>
          <noinput>0</noinput>
          <transfer>0</transfer>
          <disconnect>55</disconnect>
        </row>
        <row>
          <page>billing.php</page>
          <form>billing_inquiry</form>
          <item>billing_transfer</item>
          <visits>80</visits>
          <filled>12</filled>
          <nomatch>0</nomatch>
          <noinput>0</noinput>
          <transfer>12</transfer>
          <disconnect>80</disconnect>
        </row>
      </rows>
    </application>
  </applications>
</result>

On Failure:

JSON Response (HTTP Code 400):

HTTP/1.1 400 Bad Request
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519659000
Content-Length: 90
Content-Type: application/json

{"error":"Invalid start parameter."}

The same response with an Accept header of application/xml in the request looks like:

XML Response (HTTP Code 400):

HTTP/1.1 400 Bad Request
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519659000
Content-Length: 120
Content-Type: application/json

<?xml version="1.0"?>
<result>
  <error>Invalid start parameter.</error>
</result>


Caller Profile

Description

This service fetches any of the available data in the Caller Profile section in VoiceTrends (except Geographic data). To use this service, provide your temporary authentication credentials and several GET parameters, which function as filters for this data. This API is rate-limited in a group with all other raw data resources to 150 requests per 15-minute window.

URL:

https://voicetrends.plumvoice.com/api/profile/{start}/{end}/{period}/{phone}

HTTP method:

GET
Request Parameters:
Name Data Type Required Description
start integer yes The start date (inclusive) for this request in YYYYMMDD format.
end integer yes The end date (inclusive) for this request in YYYYMMDD format.
period string yes The period that the data will be grouped into (day, week, month).
phone string yes The single phone number for this report or “ALL” to merge data across all numbers.

Possible Response Codes:

  • 200: success, data successfully returned.
  • 400: supplied data improperly formatted or invalid
  • 401: authentication parameters invalid or the account is inactive
  • 405: invalid HTTP method supplied (only POST allowed)
  • 429: rate limit exceeded
  • 500: unknown error

The return structure will contain the following item(s):

Name Data Type Always Present Description
error string no Indicates what went wrong when an HTTP code other than 200 is returned.
calls array no A 200 HTTP code returns this value, the list of call counts grouped by period timestamp.
callers array no A 200 HTTP code returns this value, the list of unique caller counts grouped by period timestamp.

Sample Code

This sample code makes a request to authenticate an account using PHP, but any language capable of integrating with a REST API works for this type of request:

<?php
// authentication and filter settings
$login = '<your_temporary_login>';
$password = '<your_temporary_password>';
$start = '<start_date>';
$end = '<end_date>';
$period = '<selected_period>';
$phone = '<selected_phone_number>';

// build the URL
$url = 'https://voicetrends.plumvoice.com/api/performance/'.$start.'/'.$end.'/'.$period.'/'.$phone;

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD, $login.':'.$password);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/json"));
$result = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
var_dump($result);
var_dump($http_code);

Sample Responses

JSON Response (HTTP Code 200):

HTTP/1.1 200 OK
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519671600
Content-Length: 263
Content-Type: application/json

{
  "calls":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":1,"1518066000":0},
  "callers":{"1517461200":0,"1517547600":0,"1517634000":0,"1517720400":0,"1517806800":0,"1517893200":0,"1517979600":1,"1518066000":0}
}

The same response with an Accept header of application/xml in the request looks like:

XML Response (HTTP Code 200):

HTTP/1.1 200 OK
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 148
X-RateLimit-Reset: 1519671600
Content-Length: 666
Content-Type: application/xml

<?xml version="1.0"?>
<result>
  <calls>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">1</item>
    <item timestamp="1518066000">0</item>
  </calls>
  <callers>
    <item timestamp="1517461200">0</item>
    <item timestamp="1517547600">0</item>
    <item timestamp="1517634000">0</item>
    <item timestamp="1517720400">0</item>
    <item timestamp="1517806800">0</item>
    <item timestamp="1517893200">0</item>
    <item timestamp="1517979600">1</item>
    <item timestamp="1518066000">0</item>
  </callers>
</result>

On Failure:

JSON Response (HTTP Code 400):

HTTP/1.1 400 Bad Request
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519659000
Content-Length: 90
Content-Type: application/json

{"error":"Invalid start parameter."}

The same response with an Accept header of application/xml in the request looks like:

XML Response (HTTP Code 400):

HTTP/1.1 400 Bad Request
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519659000
Content-Length: 120
Content-Type: application/json

<?xml version="1.0"?>
<result>
  <error>Invalid start parameter.</error>
</result>


Geographic

Description

This service fetches any of the available data in the Caller Profile/Geographic page in VoiceTrends. To use this service, provide your temporary authentication credentials and several GET parameters, which function as filters for this data. This API is rate-limited in a group with all other raw data resources to 150 requests per 15-minute window.

URL:

https://voicetrends.plumvoice.com/api/geographic/{start}/{end}/{phone}

HTTP method:

GET
Request Parameters:
Name Data Type Required Description
start integer yes The start date (inclusive) for this request in YYYYMMDD format.
end integer yes The end date (inclusive) for this request in YYYYMMDD format.
phone string yes The single phone number for this report or “ALL” to merge data across all numbers.

Possible Response Codes:

  • 200: success, data successfully returned.
  • 400: supplied data improperly formatted or invalid
  • 401: authentication parameters invalid or the account is inactive
  • 405: invalid HTTP method supplied (only POST allowed)
  • 429: rate limit exceeded
  • 500: unknown error

The return structure will contain the following item(s):

Name Data Type Always Present Description
error string no Indicates what went wrong when an HTTP code other than 200 is returned.
US array no A 200 HTTP code returns this value, the list of US locations and their associated call count.
NON_US array no A 200 HTTP code returns this value, the list of non-US locations and their associated call count.

Sample Code

This sample code makes a request to authenticate an account using PHP, but any language capable of integrating with a REST API works for this type of request:

<?php
// authentication and filter settings
$login = '<your_temporary_login>';
$password = '<your_temporary_password>';
$start = '<start_date>';
$end = '<end_date>';
$phone = '<selected_phone_number>';

// build the URL
$url = 'https://voicetrends.plumvoice.com/api/performance/'.$start.'/'.$end.'/'.$phone;

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD, $login.':'.$password);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/json"));
$result = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
var_dump($result);
var_dump($http_code);

Sample Responses

JSON Response (HTTP Code 200):

HTTP/1.1 200 OK
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 146
X-RateLimit-Reset: 1519671600
Content-Length: 394
Content-Type: application/json

{
  "US":{
    "AL":0,
    "AK":0,
    "AZ":0,
    "AR":0,
    "CA":0,
    "CO":0,
    "CT":0,
    "DC":0,
    "DE":0,
    "FL":0,
    "GA":0,
    "HI":0,
    "ID":0,
    "IL":0,
    "IN":0,
    "IA":0,
    "KS":0,
    "KY":0,
    "LA":0,
    "ME":0,
    "MD":0,
    "MA":0,
    "MI":0,
    "MN":0,
    "MS":0,
    "MO":0,
    "MT":0,
    "NE":0,
    "NV":0,
    "NH":0,
    "NJ":0,
    "NM":0,
    "NY":0,
    "NC":0,
    "ND":0,
    "OH":0,
    "OK":0,
    "OR":0,
    "PA":0,
    "RI":0,
    "SC":0,
    "SD":0,
    "TN":0,
    "TX":0,
    "UT":0,
    "VT":0,
    "VA":0,
    "WA":0,
    "WV":0,
    "WI":0,
    "WY":0,
    "US Toll-Free":1
  },
  "NON_US":[]
}

The same response with an Accept header of application/xml in the request looks like:

XML Response (HTTP Code 200):

< HTTP/1.1 200 OK
< Date: Mon, 26 Feb 2018 18:54:45 GMT
< Server: Apache/2.2.29 (Unix) mod_ssl/2.2.29 OpenSSL/1.0.2d PHP/5.4.45
< X-Powered-By: PHP/5.4.45
< X-RateLimit-Limit: 150
< X-RateLimit-Remaining: 145
< X-RateLimit-Reset: 1519671600
< Content-Length: 2772
< Content-Type: application/xml
< 
<?xml version="1.0"?>
<result>
  <US>
    <item><location>AL</location><count>0</count></item>
    <item><location>AK</location><count>0</count></item>
    <item><location>AZ</location><count>0</count></item>
    <item><location>AR</location><count>0</count></item>
    <item><location>CA</location><count>0</count></item>
    <item><location>CO</location><count>0</count></item>
    <item><location>CT</location><count>0</count></item>
    <item><location>DC</location><count>0</count></item>
    <item><location>DE</location><count>0</count></item>
    <item><location>FL</location><count>0</count></item>
    <item><location>GA</location><count>0</count></item>
    <item><location>HI</location><count>0</count></item>
    <item><location>ID</location><count>0</count></item>
    <item><location>IL</location><count>0</count></item>
    <item><location>IN</location><count>0</count></item>
    <item><location>IA</location><count>0</count></item>
    <item><location>KS</location><count>0</count></item>
    <item><location>KY</location><count>0</count></item>
    <item><location>LA</location><count>0</count></item>
    <item><location>ME</location><count>0</count></item>
    <item><location>MD</location><count>0</count></item>
    <item><location>MA</location><count>0</count></item>
    <item><location>MI</location><count>0</count></item>
    <item><location>MN</location><count>0</count></item>
    <item><location>MS</location><count>0</count></item>
    <item><location>MO</location><count>0</count></item>
    <item><location>MT</location><count>0</count></item>
    <item><location>NE</location><count>0</count></item>
    <item><location>NV</location><count>0</count></item>
    <item><location>NH</location><count>0</count></item>
    <item><location>NJ</location><count>0</count></item>
    <item><location>NM</location><count>0</count></item>
    <item><location>NY</location><count>0</count></item>
    <item><location>NC</location><count>0</count></item>
    <item><location>ND</location><count>0</count></item>
    <item><location>OH</location><count>0</count></item>
    <item><location>OK</location><count>0</count></item>
    <item><location>OR</location><count>0</count></item>
    <item><location>PA</location><count>0</count></item>
    <item><location>RI</location><count>0</count></item>
    <item><location>SC</location><count>0</count></item>
    <item><location>SD</location><count>0</count></item>
    <item><location>TN</location><count>0</count></item>
    <item><location>TX</location><count>0</count></item>
    <item><location>UT</location><count>0</count></item>
    <item><location>VT</location><count>0</count></item>
    <item><location>VA</location><count>0</count></item>
    <item><location>WA</location><count>0</count></item>
    <item><location>WV</location><count>0</count></item>
    <item><location>WI</location><count>0</count></item>
    <item><location>WY</location><count>0</count></item>
    <item><location>US Toll-Free</location><count>1</count>
    </item>
  </US>
  <NON_US/>
</result>

On Failure:

JSON Response (HTTP Code 400):

HTTP/1.1 400 Bad Request
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519659000
Content-Length: 90
Content-Type: application/json

{"error":"Invalid start parameter."}

The same response with an Accept header of application/xml in the request looks like:

XML Response (HTTP Code 400):

HTTP/1.1 400 Bad Request
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 149
X-RateLimit-Reset: 1519659000
Content-Length: 120
Content-Type: application/json

<?xml version="1.0"?>
<result>
  <error>Invalid start parameter.</error>
</result>


api.txt · Last modified: 2018/07/26 11:00 by admin