Call Logs API

Call Logs API Description

Plum offers four services for its Call Log REST API:

Method

Service

Description

GET

calls/logs

Returns a filtered list of recent calls for which logs exist

GET

calls/log

Returns a single call log

GET

calls/sessions

Returns a filtered list of session logs

GET

calls/errors

Returns a filtered list of error logs

Please note that each of these Call Log REST APIs use HTTP AUTH for authentication. The username/password to be used for authentication are the same as your standard Plum DEV login credentials.

All of the Call Log REST APIs have the same return format that includes a status (success or failure), error message and the result data.

Sample Responses

JSON (success)
JSON (failure)
XML (success)
XML (failure)
JSON (success)
{
"status":"success",
"error":"",
"result": {
// SAMPLE RESULT DATA
}
}
JSON (failure)
{
"status":"failure",
"error":"Unauthorized access to sample service",
}
XML (success)
<sample>
<status>success</status>
<error/>
<result>
<!-- SAMPLE RESULT DATA -->
</result>
</sample>
XML (failure)
<sample>
<status>failure</status>
<error>Unauthorized access to sample service</error>
</sample>

get
Recent Call Logs

https://hosting.plumvoice.com/ws/calls/logs/{start_timestamp}/{end_timstamp}
Returns a filtered list of recent calls for which logs exist. Call logs are only retained for the previous 5 days.
Request
Response
Request
Path Parameters
start_timestamp
required
integer
UNIX timestamp filters the list of call logs for all calls starting on or after this timestamp Note: The start_timestamp must be within the last 5 days.
end_timestamp
required
integer
UNIX timestamp filters the list of call logs for all calls starting before this timestamp Note: The end_timestamp must be after the start_timestamp.
Headers
content-type
required
string
application/x-www-form-urlencoded
accept
optional
string
application/json (default), application/xml
Query Parameters
numbers
optional
string
Filters the list of call logs for only calls to this phone number.
offset
optional
integer
Number of call logs to skip before returning results. Default: 0
limit
optional
integer
Maximum number of call logs to return. Default: 1000, Minimum: 1, Maximum: 10000
Response
200: OK
JSON
XML
JSON
{
"status":"success",
"error":"",
"result":{
"total_logs":"1234",
"logs":[
{
"log_id":"421752831",
"session_id":"400050;000;1510159646",
"dest":"6177123000",
"type":"inbound",
"src":"2125551234",
"start":"1510159657",
"end":"1510159689"
},
{
"log_id":"421627729",
"session_id":"300025;000;1510142108",
"dest":"6177123000",
"type":"inbound",
"src":"7185551234",
"start":"1510142148",
"end":"1510142215"
}
]
}
}
XML
<?xml version="1.0"?>
<logs>
<status>success</status>
<error></error>
<result>
<total_logs>1234</total_logs>
<logs>
<log>
<log_id>421752831</log_id>
<session_id>400050;000;1510159646</session_id>
<dest>6177123000</dest>
<type>inbound</type>
<src>2125551234</src>
<start>1510159657</start>
<end>1510159689</end>
</log>
<log>
<log_id>421627729</log_id>
<session_id>300025;000;1510142108</session_id>
<dest>6177123000</dest>
<type>inbound</type>
<src>7185551234</src>
<start>1510142148</start>
<end>1510142215</end>
</log>
</logs>
</result>
</logs>

Sample Code

The following code sample is written in PHP but any language that can connect to a JSON or XML REST service can utilize this API.

getlogs.php
CURL (command line)
getlogs.php
<?php
header("Content-type: text/xml");
// initialize curl
$ch = curl_init();
// set necessary curl options
curl_setopt($ch, CURLOPT_URL, "https://hosting.plumvoice.com/ws/calls/logs/1509681600/1510203600?phone_number=6177123000&offset=0&limit=2");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/xml'));
curl_setopt($ch, CURLOPT_USERPWD, "username:password");
echo(curl_exec($ch));
curl_close($ch);
?>
CURL (command line)
curl -u username:password -H"Accept: application/xml" "https://hosting.plumvoice.com/ws/calls/logs/1509681600/1510203600?phone_number=6177123000&offset=0&limit=2"

get
Call Log

https://hosting.plumvoice.com/ws/calls/log/{log_id}
Returns a recent call log using a log_id returned in the calls/logs response. To fetch all logs for your account you should call calls/logs to get the list of calls then loop through those results calling calls/log/{log_id} to fetch each individual call log.
Request
Response
Request
Path Parameters
log_id
required
integer
The ID of the log we are fetching. The log_id value is provided in the response from the calls?logs REST service.
Headers
content-type
required
string
application/x-www-form-urlencoded
accept
optional
string
application/json (default), application/xml
Response
200: OK
JSON
XML
JSON
{
"status":"success",
"error":"",
"result":{
"dest":"6177123000",
"src":"2125551234",
"type":"inbound",
"timestamp":"1510142148",
"location":"Boston",
"log":"...log data string..."
}
}
XML
<?xml version="1.0"?>
<log>
<status>success</status>
<error></error>
<result>
<dest>6177123000</dest>
<src>2125551234</src>
<type>inbound</type>
<timestamp>1510142148</timestamp>
<location>Boston</location>
<log>...log data string...</log>
</result>
</log>

Sample Code

The following code sample is written in PHP but any language that can connect to a JSON or XML REST service can utilize this API.

getlog.php
CURL (command line)
getlog.php
<?php
header("Content-type: text/xml");
// initialize curl
$ch = curl_init();
// set necessary curl options
curl_setopt($ch, CURLOPT_URL, "https://hosting.plumvoice.com/ws/calls/log/421627729");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/xml'));
curl_setopt($ch, CURLOPT_USERPWD, "username:password");
echo(curl_exec($ch));
curl_close($ch);
?>
CURL (command line)
curl -u username:password -H"Accept: application/xml" "https://hosting.plumvoice.com/ws/calls/log/421627729"

get
Session Logs

https://hosting.plumvoice.com/ws/calls/sessions/{start_timestamp}/{end_timstamp}
Returns a filtered list of session logs. Unlike call logs, session logs are stored for up to 1 year.
Request
Response
Request
Path Parameters
start_timestamp
required
integer
UNIX timestamp filters the list of call logs for all calls starting on or after this timestamp Note: The start_timestamp must be within the last 5 days.
end_timestamp
required
integer
UNIX timestamp filters the list of call logs for all calls starting before this timestamp Note: The end_timestamp must be after the start_timestamp.
Headers
content-type
required
string
application/x-www-form-urlencoded
accept
optional
string
application/json (default), application/xml
Query Parameters
numbers
optional
string
Filters the list of call logs for only calls to this phone number.
offset
optional
integer
Number of call logs to skip before returning results. Default: 0
limit
optional
integer
Maximum number of call logs to return. Default: 1000, Minimum: 1, Maximum: 10000
Response
200: OK
JSON
XML
JSON
{
"status":"success",
"error":"",
"result":{
"total_sessions":"8",
"sessions":[
"outbound 12125551234 26 [03\/Nov\/2017:00:10:42 -0500] test@login.com 300024;026;1509673023 1509682242 1509682255 00:00:13",
"inbound 7185551234 3 [03\/Nov\/2017:14:38:30 -0500] 6177123000 200035;003;1509734279 1509734310 1509734339 00:00:29",
"inbound 6175551234 1 [03\/Nov\/2017:18:11:07 -0500] 8009957586 400050;001;1509747051 1509747067 1509747180 00:01:53"
]
}
}
XML
<?xml version="1.0"?>
<sessions>
<status>success</status>
<error></error>
<result>
<total_sessions>8</total_sessions>
<sessions>
<session>outbound 12125551234 26 [03\/Nov\/2017:00:10:42 -0500] test@login.com 300024;026;1509673023 1509682242 1509682255 00:00:13</session>
<session>inbound 7185551234 3 [03\/Nov\/2017:14:38:30 -0500] 6177123000 200035;003;1509734279 1509734310 1509734339 00:00:29</session>
<session>inbound 6175551234 1 [03\/Nov\/2017:18:11:07 -0500] 8009957586 400050;001;1509747051 1509747067 1509747180 00:01:53</session>
</sessions>
</result>
</sessions>

Sample Code

The following code sample is written in PHP but any language that can connecting to a JSON or XML REST service can utilize this API.

getlogs.php
CURL (command line)
getlogs.php
<?php
header("Content-type: text/xml");
// initialize curl
$ch = curl_init();
// set necessary curl options
curl_setopt($ch, CURLOPT_URL, "https://hosting.plumvoice.com/ws/calls/sessions/1509681600/1510203600?phone_number=6177123000&offset=0&limit=2");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/xml'));
curl_setopt($ch, CURLOPT_USERPWD, "username:password");
echo(curl_exec($ch));
curl_close($ch);
?>
CURL (command line)
curl -u username:password -H"Accept: application/xml" "https://hosting.plumvoice.com/ws/calls/sessions/1509681600/1510203600?phone_number=6177123000&offset=0&limit=2"

get
Error Logs

https://hosting.plumvoice.com/ws/calls/errors/{start_timestamp}/{end_timstamp}
Returns a filtered list of error logs. Error logs are stored for up to 1 year.
Request
Response
Request
Path Parameters
start_timestamp
required
integer
UNIX timestamp filters the list of call logs for all calls starting on or after this timestamp Note: The start_timestamp must be within the last 5 days.
end_timestamp
required
integer
UNIX timestamp filters the list of call logs for all calls starting before this timestamp Note: The end_timestamp must be after the start_timestamp.
Headers
content-type
required
string
application/x-www-form-urlencoded
accept
optional
string
application/json (default), application/xml
Query Parameters
numbers
optional
string
Filters the list of call logs for only calls to this phone number.
offset
optional
integer
Number of call logs to skip before returning results. Default: 0
limit
optional
integer
Maximum number of call logs to return. Default: 1000, Minimum: 1, Maximum: 10000
Response
200: OK
JSON
XML
JSON
{
"status":"success",
"error":"",
"result":{
"total_errors":"3",
"errors":[
"error 2125551234 6 [17\/Nov\/2016:14:40:46 -0400] 6177123000 100025;006;1479411625 Max Disconnect Count Exceeded",
"error 7185551234 1 [20\/Nov\/2016:21:28:46 -0400] 8009957586 100037;001;1479692314 errno: 210 message Maximum loop count exceeded",
"error 6175551234 0 [09\/Jan\/2017:08:33:31 -0400] 8009957586 000020;000;1483968637 ReferenceError: d is not defined line 1"
]
}
}
XML
<?xml version="1.0"?>
<errors>
<status>success</status>
<error></error>
<result>
<total_errors>3</total_errors>
<errors>
<error>error 2125551234 6 [17\/Nov\/2016:14:40:46 -0400] 6177123000 100025;006;1479411625 Max Disconnect Count Exceeded</error>
<error>error 7185551234 1 [20\/Nov\/2016:21:28:46 -0400] 8009957586 100037;001;1479692314 errno: 210 message Maximum loop count exceeded</error>
<error>error 6175551234 0 [09\/Jan\/2017:08:33:31 -0400] 8009957586 000020;000;1483968637 ReferenceError: d is not defined line 1</error>
</errors>
</result>
</errors>

Sample Code

The following code sample is written in PHP but any language that can connect to a JSON or XML REST service can utilize this API.

getlogs.php
CURL (command line)
getlogs.php
<?php
header("Content-type: text/xml");
// initialize curl
$ch = curl_init();
// set necessary curl options
curl_setopt($ch, CURLOPT_URL, "https://hosting.plumvoice.com/ws/calls/errors/1509681600/1510203600?phone_number=6177123000&offset=0&limit=2");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/xml'));
curl_setopt($ch, CURLOPT_USERPWD, "username:password");
echo(curl_exec($ch));
curl_close($ch);
?>
CURL (command line)
curl -u username:password -H"Accept: application/xml" "https://hosting.plumvoice.com/ws/calls/errors/1509681600/1510203600?phone_number=6177123000&offset=0&limit=2"