Introduction
This API is designed to let you do (almost) everything you can do from the timetoreply portal programatically via API requests
Authentication
We currently only support personal access tokens for authentication. These can be obtained by logging into a company administrator account on timetoreply, visiting the API section, and clicking "Generate Access Token". Tokens have an expiration time of 1 year.
All requests made to our api with these generated access tokens will be assigned to the user that generated the access token.
You can create as many access tokens as you like, and you can revoke their access at any time from the same page when you created them.
Rate Limiting
Our API is rate limited to 30 requests per minute and the lower limit of 900 requests per hour.
If you exceed these limits, responses will get a Retry-After header which indicates how long you should wait until trying again.
Dates and Times
Most Dates and Times are converted into the timezone of your user profile on the fly before being sent to you.
Reply times are usually returned in seconds, but many reply times also have a "Friendly Reply Time" which is a formatted string.
Nomenclature
- Email Addresses are referred to as "email_usernames".
- Conversations are referred to as "threads".
- Message Ids are referred to as "internet_message_id" and are unique
- Reply times without business hours are referred to as "raw". e.g. "raw_replytime"
General
Responses have been generally optimized for use in our own front-end, and as such, the structure of responses might not be exactly as you expect. It may also contain information that is not relevant to you. Unfortunately we currently do not offer a method to get exactly the information you want, but we may create this functionality in future.
Base URL
https://portal.timetoreply.com
Authenticating requests
This API is authenticated by sending an Authorization
header with the value "Bearer {YOUR_AUTH_KEY}"
.
All authenticated endpoints are marked with a requires authentication
badge in the documentation below.
You can generate your token by logging in and visiting TOOLS > API
Entities
Authentication Invites - Delete
requires authentication
Delete an Authentication Invitation
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/invite/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://portal.timetoreply.com/api/entities/agents/invite/1',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request DELETE \
"https://portal.timetoreply.com/api/entities/agents/invite/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
{
"status": "Authentication invite deleted."
}
Received response:
Request failed with error:
Authentication Invites - Remind
requires authentication
Remind A Mailbox about an Authentication Invitation
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/remind/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "PATCH",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->patch(
'https://portal.timetoreply.com/api/entities/agents/remind/1',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
"https://portal.timetoreply.com/api/entities/agents/remind/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"status": "Please check the inbox (and spam folder) of the mailbox you just added. Click on the link in the email to grant access to timetoreply so that we can start measuring your email reply times."
}
Received response:
Request failed with error:
Contact Groups - Add Domain
requires authentication
Add A Domain To A Contact Group
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contact-groups/1/pushDomain"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"domain": "example.com"
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->patch(
'https://portal.timetoreply.com/api/entities/contact-groups/1/pushDomain',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'domain' => 'example.com',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
"https://portal.timetoreply.com/api/entities/contact-groups/1/pushDomain" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"domain\": \"example.com\"
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 1,
"name": "Top Revenue Customers",
"members": {
"emails": [
"[email protected]",
"[email protected]"
],
"domains": [
"fay.info",
"stokes.net",
"example.com"
]
}
}
Received response:
Request failed with error:
Contact Groups - Add Email
requires authentication
Add An Email To A Contact Group
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contact-groups/1/pushEmail"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "[email protected]"
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->patch(
'https://portal.timetoreply.com/api/entities/contact-groups/1/pushEmail',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'email' => '[email protected]',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
"https://portal.timetoreply.com/api/entities/contact-groups/1/pushEmail" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"[email protected]\"
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 1,
"name": "Top Revenue Customers",
"members": {
"emails": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"domains": [
"fay.info",
"stokes.net"
]
}
}
Received response:
Request failed with error:
Contact Groups - Delete
requires authentication
Delete a Contact Group
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contact-groups/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://portal.timetoreply.com/api/entities/contact-groups/1',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request DELETE \
"https://portal.timetoreply.com/api/entities/contact-groups/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
{
"status": "Contact group deleted."
}
Received response:
Request failed with error:
Contact Groups - Delete Domain
requires authentication
Remove A Domain From A Contact Group
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contact-groups/1/removeDomain"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"domain": "example.com"
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->patch(
'https://portal.timetoreply.com/api/entities/contact-groups/1/removeDomain',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'domain' => 'example.com',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
"https://portal.timetoreply.com/api/entities/contact-groups/1/removeDomain" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"domain\": \"example.com\"
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 1,
"name": "Top Revenue Customers",
"members": {
"emails": [
"[email protected]",
"[email protected]"
],
"domains": [
"fay.info",
"stokes.net"
]
}
}
Received response:
Request failed with error:
Contact Groups - Delete Email
requires authentication
Remove An Email From A Contact Group
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contact-groups/1/removeEmail"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "[email protected]"
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->patch(
'https://portal.timetoreply.com/api/entities/contact-groups/1/removeEmail',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'email' => '[email protected]',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
"https://portal.timetoreply.com/api/entities/contact-groups/1/removeEmail" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"[email protected]\"
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 1,
"name": "Top Revenue Customers",
"members": {
"emails": [
"[email protected]",
"[email protected]"
],
"domains": [
"fay.info",
"stokes.net"
]
}
}
Received response:
Request failed with error:
Contact Groups - List
requires authentication
List all Contact Groups
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contact-groups"
);
const params = {
"sort_by": "name",
"direction": "asc",
"per_page": "15",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/entities/contact-groups',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'sort_by'=> 'name',
'direction'=> 'asc',
'per_page'=> '15',
'page'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/contact-groups?sort_by=name&direction=asc&per_page=15&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"current_page": 1,
"data": [
{
"id": 1,
"company_id": 1,
"name": "Top Revenue Customers",
"crm_type": null,
"customer_emails": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"fay.info",
"stokes.net"
],
"user_permissions": [
7
],
"search_string": "Top Revenue Customers [email protected]ergstrom.com [email protected] fay.info stokes.net"
},
{
"id": 2,
"company_id": 1,
"name": "Hubspot Customer Group",
"crm_type": "hubspot",
"customer_emails": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"cronin.com",
"walter.com"
],
"user_permissions": [],
"search_string": "Hubspot Customer Group [email protected] [email protected] cronin.com walter.com"
}
],
"first_page_url": "https://portal.timetoreply.com/api/entities/contact-groups?page=1",
"from": 1,
"last_page": 4,
"last_page_url": "https://portal.timetoreply.com/api/entities/contact-groups?page=4",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contact-groups?page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/entities/contact-groups?page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contact-groups?page=3",
"label": "3",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contact-groups?page=4",
"label": "4",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contact-groups?page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/entities/contact-groups?page=2",
"path": "https://portal.timetoreply.com/api/entities/contact-groups",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 7
}
Received response:
Request failed with error:
Contact Groups - Remove Members
requires authentication
Remove An Email From A Contact Group
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contact-groups/1/removeMembers"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"membersToRemove": [
"voluptatem"
]
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->patch(
'https://portal.timetoreply.com/api/entities/contact-groups/1/removeMembers',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'membersToRemove' => [
'voluptatem',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
"https://portal.timetoreply.com/api/entities/contact-groups/1/removeMembers" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"membersToRemove\": [
\"voluptatem\"
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 1,
"name": "Top Revenue Customers",
"members": {
"emails": [
"[email protected]",
"[email protected]"
],
"domains": [
"fay.info",
"stokes.net"
]
}
}
Received response:
Request failed with error:
Contact Groups - Show
requires authentication
Show a single Contact Group
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contact-groups/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/entities/contact-groups/1',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/contact-groups/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 1,
"name": "Top Revenue Customers",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"fay.info",
"stokes.net"
],
"model_type": "Contact Group",
"icon": "user-friends"
}
Received response:
Request failed with error:
Contact Groups - Store
requires authentication
Store a Contact Group
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contact-groups"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Top Contacts",
"emails": [
"[email protected]"
],
"domains": [
"example.com"
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/entities/contact-groups',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Top Contacts',
'emails' => [
'[email protected]',
],
'domains' => [
'example.com',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/contact-groups" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Top Contacts\",
\"emails\": [
\"[email protected]\"
],
\"domains\": [
\"example.com\"
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 8,
"name": "Top Contacts",
"members": {
"emails": [
"[email protected]"
],
"domains": [
"example.com"
]
}
}
Received response:
Request failed with error:
Contact Groups - Update
requires authentication
Update a Contact Group
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contact-groups/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Top Contacts",
"emails": [
"[email protected]"
],
"domains": [
"example.com"
]
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->put(
'https://portal.timetoreply.com/api/entities/contact-groups/1',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Top Contacts',
'emails' => [
'[email protected]',
],
'domains' => [
'example.com',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PUT \
"https://portal.timetoreply.com/api/entities/contact-groups/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Top Contacts\",
\"emails\": [
\"[email protected]\"
],
\"domains\": [
\"example.com\"
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 1,
"name": "Top Contacts",
"members": {
"emails": [
"[email protected]"
],
"domains": [
"example.com"
]
}
}
Received response:
Request failed with error:
Contacts - Delete
requires authentication
Delete a contact
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contacts/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://portal.timetoreply.com/api/entities/contacts/1',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request DELETE \
"https://portal.timetoreply.com/api/entities/contacts/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
{
"status": "Contact deleted."
}
Received response:
Request failed with error:
Contacts - List
requires authentication
Get all existing contacts.
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contacts"
);
const params = {
"per_page": "25",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/entities/contacts',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'per_page'=> '25',
'page'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/contacts?per_page=25&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"current_page": 1,
"data": [
{
"id": 1,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 2,
"name": "customer.com",
"email_usernames": [
"customer.com"
],
"model_type": "Contact",
"icon": "user"
}
],
"first_page_url": "https://portal.timetoreply.com/api/entities/contacts?page=1",
"from": 1,
"last_page": 236,
"last_page_url": "https://portal.timetoreply.com/api/entities/contacts?page=236",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?page=3",
"label": "3",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?page=4",
"label": "4",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?page=5",
"label": "5",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?page=6",
"label": "6",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?page=7",
"label": "7",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?page=8",
"label": "8",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?page=9",
"label": "9",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?page=10",
"label": "10",
"active": false
},
{
"url": null,
"label": "...",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?page=235",
"label": "235",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?page=236",
"label": "236",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/entities/contacts?page=2",
"path": "https://portal.timetoreply.com/api/entities/contacts",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 471
}
Received response:
Request failed with error:
Contacts - Store
requires authentication
Store a new contact
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contacts"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "[email protected]"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/entities/contacts',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => '[email protected]',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/contacts" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"[email protected]\"
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 472,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
}
Received response:
Request failed with error:
Entities - IT Help
requires authentication
Request Help from your IT team to set up timetoreply
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/it-help"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Peter Rabbit",
"email": "[email protected]",
"message": "aut"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/entities/agents/it-help',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Peter Rabbit',
'email' => '[email protected]',
'message' => 'aut',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/agents/it-help" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Peter Rabbit\",
\"email\": \"[email protected]\",
\"message\": \"aut\"
}"
Example response (202):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"status": "Email Sent successfully"
}
Received response:
Request failed with error:
Entities - Search
requires authentication
Searches your company entities
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/search"
);
const params = {
"per_page": "2",
"page": "1",
"search": "Top Revenue",
"type": "all",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/entities/search',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'per_page'=> '2',
'page'=> '1',
'search'=> 'Top Revenue',
'type'=> 'all',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/search?per_page=2&page=1&search=Top+Revenue&type=all" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"current_page": 1,
"data": [
{
"id": 1,
"name": "Top Revenue Customers",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"fay.info",
"stokes.net"
],
"model_type": "Contact Group",
"icon": "user-friends"
},
{
"id": 1,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
}
],
"first_page_url": "https://portal.timetoreply.com/api/entities/search?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/entities/search?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/search?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://portal.timetoreply.com/api/entities/search",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 2
}
Received response:
Request failed with error:
Filters - List
requires authentication
List all current filters and entities
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/message-filters/all-thread-filter-data"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/tools/settings/message-filters/all-thread-filter-data',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/tools/settings/message-filters/all-thread-filter-data" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"advanced_filters_count": {
"active": 0,
"total": 1
},
"domain_and_email_filters": {
"domains": 1,
"emails": 1
},
"agents": [
{
"id": 1,
"name": "Rosa Harvey",
"email_usernames": [
"[email protected]"
],
"model_type": "Mailbox",
"icon": "user-plus"
},
{
"id": 2,
"name": "Ewell Raynor",
"email_usernames": [
"[email protected]"
],
"model_type": "Mailbox",
"icon": "user-plus"
},
{
"id": 3,
"name": "John Weissnat",
"email_usernames": [
"[email protected]"
],
"model_type": "Mailbox",
"icon": "user-plus"
}
],
"teams": [
{
"id": 1,
"name": "US Sales Team",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"model_type": "Team",
"icon": "handshake"
},
{
"id": 2,
"name": "EU Sales Team",
"email_usernames": [
"[email protected]"
],
"model_type": "Team",
"icon": "handshake"
}
],
"group_mailboxes": [
{
"id": 1,
"name": "Support",
"email_usernames": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"model_type": "Group Mailbox",
"icon": "users"
},
{
"id": 2,
"name": "Info",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"model_type": "Group Mailbox",
"icon": "users"
}
],
"customer_groups": [
{
"id": 1,
"name": "Top Revenue Customers",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"fay.info",
"stokes.net"
],
"model_type": "Contact Group",
"icon": "user-friends"
},
{
"id": 2,
"name": "Hubspot Customer Group",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"cronin.com",
"walter.com"
],
"model_type": "Contact Group",
"icon": "user-friends"
},
{
"id": 3,
"name": "Active Campaign Customer Group",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"lockman.info",
"mohr.com"
],
"model_type": "Contact Group",
"icon": "user-friends"
},
{
"id": 4,
"name": "Maropost Customer Group",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"will.biz",
"walter.com"
],
"model_type": "Contact Group",
"icon": "user-friends"
},
{
"id": 5,
"name": "Constant Contact Customer Group",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"reynolds.com",
"altenwerth.biz"
],
"model_type": "Contact Group",
"icon": "user-friends"
},
{
"id": 6,
"name": "Salesforce Customer Group",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"schaden.com",
"weissnat.org"
],
"model_type": "Contact Group",
"icon": "user-friends"
},
{
"id": 7,
"name": "Zoho Customer Group",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"roob.com",
"morissette.com"
],
"model_type": "Contact Group",
"icon": "user-friends"
}
],
"customers": [
{
"id": 1,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 2,
"name": "customer.com",
"email_usernames": [
"customer.com"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 3,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 4,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 5,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 6,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 7,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 8,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 9,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 10,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 11,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 12,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 13,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 14,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 15,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 16,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 17,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 18,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 19,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 20,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 21,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 22,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 23,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 24,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 25,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 26,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 27,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 28,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 29,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 30,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 31,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 32,
"name": "[email protected]nienow.com",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 33,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 34,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 35,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 36,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 37,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 38,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 39,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 40,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 41,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 42,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 43,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 44,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 45,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 46,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 47,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 48,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 49,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 50,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 51,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 52,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 53,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 54,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 55,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 56,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 57,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 58,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 59,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 60,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 61,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 62,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 63,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 64,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 65,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 66,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 67,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 68,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 69,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 70,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 71,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 72,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 73,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 74,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 75,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 76,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 77,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 78,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 79,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 80,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 81,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 82,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 83,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 84,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 85,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 86,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 87,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 88,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 89,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 90,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 91,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 92,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 93,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 94,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 95,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 96,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 97,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 98,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 99,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 100,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 101,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 102,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 103,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 104,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 105,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 106,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 107,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 108,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 109,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 110,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 111,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 112,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 113,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 114,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 115,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 116,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 117,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 118,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 119,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 120,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 121,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 122,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 123,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 124,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 125,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 126,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 127,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 128,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 129,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 130,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 131,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 132,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 133,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 134,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 135,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 136,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 137,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 138,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 139,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 140,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 141,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 142,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 143,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 144,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 145,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 146,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 147,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 148,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 149,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 150,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 151,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 152,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 153,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 154,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 155,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 156,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 157,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 158,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 159,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 160,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 161,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 162,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 163,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 164,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 165,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 166,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 167,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 168,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 169,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 170,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 171,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 172,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 173,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 174,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 175,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 176,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 177,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 178,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 179,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 180,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 181,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 182,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 183,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 184,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 185,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 186,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
}
],
"labels": [
"CATEGORY_FORUMS",
"CATEGORY_PERSONAL",
"CATEGORY_PROMOTIONS",
"CATEGORY_SOCIAL",
"CATEGORY_UPDATES",
"IMPORTANT",
"INBOX",
"SENT",
"STARRED",
"UNREAD"
],
"goals": [
3600,
7200,
14400,
28800,
86400
]
}
Received response:
Request failed with error:
Group Mailbox Members - Delete
requires authentication
Remove a member from a Group Mailbox
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"ids": [
1
]
};
fetch(url, {
method: "DELETE",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'ids' => [
1,
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request DELETE \
"https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"ids\": [
1
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"current_page": 1,
"data": [
{
"email": "[email protected]",
"type": 1,
"existing": true
},
{
"email": "[email protected]",
"type": 1,
"existing": true
}
],
"first_page_url": "/?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "/?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "/?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "/",
"per_page": 25,
"prev_page_url": null,
"to": 2,
"total": 2
}
Received response:
Request failed with error:
Group Mailbox Members - List
requires authentication
Show members of a Group Mailbox
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents"
);
const params = {
"sort_by": "name",
"direction": "asc",
"per_page": "2",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'sort_by'=> 'name',
'direction'=> 'asc',
'per_page'=> '2',
'page'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents?sort_by=name&direction=asc&per_page=2&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"current_page": 1,
"data": [
{
"email": "[email protected]",
"type": 1,
"existing": true
},
{
"email": "[email protected]",
"type": 1,
"existing": true
}
],
"first_page_url": "/?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "/?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "/?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "/",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 2
}
Received response:
Request failed with error:
Group Mailbox Members - Store
requires authentication
Add a member to a Group Mailbox
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"ids": [
1
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'ids' => [
1,
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"ids\": [
1
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"current_page": 1,
"data": [
{
"email": "[email protected]",
"type": 1,
"existing": true
},
{
"email": "[email protected]",
"type": 1,
"existing": true
},
{
"email": "[email protected]",
"type": 1,
"existing": true
}
],
"first_page_url": "/?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "/?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "/?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "/",
"per_page": 25,
"prev_page_url": null,
"to": 3,
"total": 3
}
Received response:
Request failed with error:
Group Mailboxes - Delete
requires authentication
Delete a Group Mailbox
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/group-mailboxes/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://portal.timetoreply.com/api/entities/group-mailboxes/1',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request DELETE \
"https://portal.timetoreply.com/api/entities/group-mailboxes/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
{
"status": "Group Mailbox deleted."
}
Received response:
Request failed with error:
Group Mailboxes - List
requires authentication
Show all Group Mailboxes
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/group-mailboxes"
);
const params = {
"per_page": "25",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/entities/group-mailboxes',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'per_page'=> '25',
'page'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/group-mailboxes?per_page=25&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"current_page": 1,
"data": [
{
"id": 1,
"name": "Support",
"email_usernames": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"model_type": "Group Mailbox",
"icon": "users"
},
{
"id": 2,
"name": "Info",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"model_type": "Group Mailbox",
"icon": "users"
}
],
"first_page_url": "https://portal.timetoreply.com/api/entities/group-mailboxes?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/entities/group-mailboxes?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/group-mailboxes?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://portal.timetoreply.com/api/entities/group-mailboxes",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 2
}
Received response:
Request failed with error:
Group Mailboxes - Show
requires authentication
Show a single Group Mailbox
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/group-mailboxes/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/entities/group-mailboxes/1',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/group-mailboxes/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 1,
"name": "Support",
"email_usernames": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"model_type": "Group Mailbox",
"icon": "users"
}
Received response:
Request failed with error:
Group Mailboxes - Store
requires authentication
Store a Group Mailbox
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/group-mailboxes"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Sales Mailbox",
"groupMailboxAddress": "[email protected]",
"aliases": [
"[email protected]"
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/entities/group-mailboxes',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Sales Mailbox',
'groupMailboxAddress' => '[email protected]',
'aliases' => [
'[email protected]',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/group-mailboxes" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Sales Mailbox\",
\"groupMailboxAddress\": \"[email protected]\",
\"aliases\": [
\"[email protected]\"
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 3,
"company_id": 1,
"name": "Sales Mailbox",
"first_reply_time_goal": 0,
"overall_reply_time_goal": 0,
"time_to_close_goal": 0,
"created_at": "2022-01-04 11:39:10",
"updated_at": "2022-01-04 11:39:10",
"members": {
"current_page": 1,
"data": [],
"first_page_url": "/?page=1",
"from": null,
"last_page": 1,
"last_page_url": "/?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "/?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "/",
"per_page": 2,
"prev_page_url": null,
"to": null,
"total": 0
},
"model_type": "Group Mailbox",
"group_mailbox_address": "[email protected]",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"pending_invites": []
}
Received response:
Request failed with error:
Group Mailboxes - Update
requires authentication
Update a Group Mailbox
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/group-mailboxes/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Sales Mailbox",
"groupMailboxAddress": "[email protected]",
"aliases": [
"[email protected]"
]
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->put(
'https://portal.timetoreply.com/api/entities/group-mailboxes/1',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Sales Mailbox',
'groupMailboxAddress' => '[email protected]',
'aliases' => [
'[email protected]',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PUT \
"https://portal.timetoreply.com/api/entities/group-mailboxes/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Sales Mailbox\",
\"groupMailboxAddress\": \"[email protected]\",
\"aliases\": [
\"[email protected]\"
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 1,
"company_id": 1,
"name": "Sales Mailbox",
"first_reply_time_goal": 0,
"overall_reply_time_goal": 0,
"time_to_close_goal": 0,
"created_at": "2022-01-04 11:38:41",
"updated_at": "2022-01-04 11:39:10",
"members": {
"current_page": 1,
"data": [
{
"email": "[email protected]",
"type": 1,
"existing": true
},
{
"email": "[email protected]",
"type": 1,
"existing": true
}
],
"first_page_url": "/?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "/?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "/?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "/",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 2
},
"model_type": "Group Mailbox",
"group_mailbox_address": "[email protected]",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"pending_invites": []
}
Received response:
Request failed with error:
Mailboxes - Delete
requires authentication
Delete a mailbox
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://portal.timetoreply.com/api/entities/agents/1',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request DELETE \
"https://portal.timetoreply.com/api/entities/agents/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
{
"status": "Agent deletion complete."
}
Received response:
Request failed with error:
Mailboxes - Invite
requires authentication
Create a mailbox invitation
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/invite"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Peter Rabbit",
"type": 1,
"email": "[email protected]",
"message": "Hey Pete, please accept this invite."
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/entities/agents/invite',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Peter Rabbit',
'type' => 1,
'email' => '[email protected]',
'message' => 'Hey Pete, please accept this invite.',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/agents/invite" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Peter Rabbit\",
\"type\": 1,
\"email\": \"[email protected]\",
\"message\": \"Hey Pete, please accept this invite.\"
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"success": true,
"authURL": "https://portal.timetoreply.com/authenticate/2?expires=1641469148&signature=12c19807052a540e9f3e093955fdd3e66806fe970d370e0352f2098985435975"
}
Received response:
Request failed with error:
Mailboxes - Invite As Users
requires authentication
Invite a selection of mailboxes as users
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/users/invite-as-users"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"ids": [
1
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/tools/users/invite-as-users',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'ids' => [
1,
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/tools/users/invite-as-users" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"ids\": [
1
]
}"
Example response (202):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
[
1
]
Received response:
Request failed with error:
Mailboxes - List
requires authentication
List all mailboxes
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents"
);
const params = {
"sort_by": "name",
"direction": "asc",
"per_page": "2",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/entities/agents',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'sort_by'=> 'name',
'direction'=> 'asc',
'per_page'=> '2',
'page'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/agents?sort_by=name&direction=asc&per_page=2&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"current_page": 1,
"data": [
{
"id": 1,
"company_id": 1,
"company_name": "timetoreply",
"name": "Rosa Harvey",
"email": "[email protected]",
"main_type": "Google",
"active": true,
"created_at": "2021-12-28 11:38:41",
"last_used_addon": null,
"email_usernames": [
"[email protected]"
],
"time_zone": {
"id": 29,
"php_timezone": "Europe/London",
"friendly_name": "Greenwich Mean Time => Dublin, Edinburgh, Lisbon, London"
},
"newest_message_date": null,
"ingestion_started_date": "2021-09-19 17:42:11",
"ingestion_completed_date": "2021-04-05 11:42:30",
"ingestion_duration": "In Progress",
"ingestion_duration_seconds": null,
"user_permissions": [
7
],
"search_string": "Rosa Harvey [email protected]",
"leave_days": [],
"work_days": [],
"business_hours": [],
"is_user": false
},
{
"id": 2,
"company_id": 1,
"company_name": "timetoreply",
"name": "Ewell Raynor",
"email": "[email protected]",
"main_type": "Google",
"active": true,
"created_at": "2021-12-28 11:38:41",
"last_used_addon": null,
"email_usernames": [
"[email protected]"
],
"time_zone": {
"id": 29,
"php_timezone": "Europe/London",
"friendly_name": "Greenwich Mean Time => Dublin, Edinburgh, Lisbon, London"
},
"newest_message_date": null,
"ingestion_started_date": "2021-03-04 12:09:54",
"ingestion_completed_date": "2021-03-01 10:14:11",
"ingestion_duration": "In Progress",
"ingestion_duration_seconds": null,
"user_permissions": [],
"search_string": "Ewell Raynor [email protected]",
"leave_days": [],
"work_days": [],
"business_hours": [],
"is_user": false
}
],
"first_page_url": "https://portal.timetoreply.com/api/entities/agents?page=1",
"from": 1,
"last_page": 2,
"last_page_url": "https://portal.timetoreply.com/api/entities/agents?page=2",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/agents?page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/entities/agents?page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/agents?page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/entities/agents?page=2",
"path": "https://portal.timetoreply.com/api/entities/agents",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 3
}
Received response:
Request failed with error:
Mailboxes - Re-authenticate
requires authentication
Send a re-authentication request to a mailbox.
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/1/re-auth"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/entities/agents/1/re-auth',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/agents/1/re-auth" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"status": "We've sent the Re-Authentication email to Rosa Harvey. Please ask them to check their email and SPAM box"
}
Received response:
Request failed with error:
Mailboxes - Update
requires authentication
Update a mailbox
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/1/update"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Peter Rabbit",
"timeZone": 1,
"aliases": [
"[email protected]"
]
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->patch(
'https://portal.timetoreply.com/api/entities/agents/1/update',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Peter Rabbit',
'timeZone' => 1,
'aliases' => [
'[email protected]',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
"https://portal.timetoreply.com/api/entities/agents/1/update" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Peter Rabbit\",
\"timeZone\": 1,
\"aliases\": [
\"[email protected]\"
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"status": "Agent updated successfully. Since the agent aliases or timezone were updated, we will now update reply times in the background"
}
Received response:
Request failed with error:
Mailboxes -EWS - Update
requires authentication
Update Imap Mailbox
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/1/ews"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"host": "outlook.office365.com\/EWS\/Exchange.asmx",
"version": "Exchange2013",
"username": "[email protected]",
"password": "secret"
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->patch(
'https://portal.timetoreply.com/api/entities/agents/1/ews',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'host' => 'outlook.office365.com/EWS/Exchange.asmx',
'version' => 'Exchange2013',
'username' => '[email protected]',
'password' => 'secret',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
"https://portal.timetoreply.com/api/entities/agents/1/ews" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"host\": \"outlook.office365.com\\/EWS\\/Exchange.asmx\",
\"version\": \"Exchange2013\",
\"username\": \"[email protected]\",
\"password\": \"secret\"
}"
Example response (200):
{
"status": "Agent EWS credentials updated successfully."
}
Received response:
Request failed with error:
Mailboxes -Exchange - Bulk Add
requires authentication
Store a list of Exchange Mailboxes
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/store-bulk-exchange"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"service_account_email": "[email protected]",
"service_account_password": "secret",
"emails": [
"[email protected]"
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/entities/agents/store-bulk-exchange',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'service_account_email' => '[email protected]',
'service_account_password' => 'secret',
'emails' => [
'[email protected]',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/agents/store-bulk-exchange" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"service_account_email\": \"[email protected]\",
\"service_account_password\": \"secret\",
\"emails\": [
\"[email protected]\"
]
}"
Example response (200):
{
"total": 4,
"maxAgents": 100,
"limitAgents": true
}
Received response:
Request failed with error:
Mailboxes -Gmail - Bulk Add
requires authentication
Add multiple mailboxes at once
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/gmail/select-bulk"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"users": [
{
"email": "[email protected]",
"name": "Peter Rabbit"
}
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/entities/agents/gmail/select-bulk',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'users' => [
[
'email' => '[email protected]',
'name' => 'Peter Rabbit',
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/agents/gmail/select-bulk" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"users\": [
{
\"email\": \"[email protected]\",
\"name\": \"Peter Rabbit\"
}
]
}"
Example response (200):
[
"[email protected]"
]
Received response:
Request failed with error:
Mailboxes -Gmail - List
requires authentication
Load potential Gmail mailboxes
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/gmail/load-bulk-agents"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/entities/agents/gmail/load-bulk-agents',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/agents/gmail/load-bulk-agents" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
No-example
Received response:
Request failed with error:
Mailboxes -Imap - Update
requires authentication
Update Imap Mailbox
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/1/imap"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"host": "mail.example.com",
"port": 143,
"encryption": "tls",
"username": "[email protected]",
"password": "secret"
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->patch(
'https://portal.timetoreply.com/api/entities/agents/1/imap',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'host' => 'mail.example.com',
'port' => 143,
'encryption' => 'tls',
'username' => '[email protected]',
'password' => 'secret',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
"https://portal.timetoreply.com/api/entities/agents/1/imap" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"host\": \"mail.example.com\",
\"port\": 143,
\"encryption\": \"tls\",
\"username\": \"[email protected]\",
\"password\": \"secret\"
}"
Example response (200):
{
"status": "Agent IMAP credentials updated successfully."
}
Received response:
Request failed with error:
Mailboxes -Mimecast - Bulk Add
requires authentication
Add a list of email addresses as mailboxes
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/mimecast/select-bulk"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"emails": [
"[email protected]"
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/entities/agents/mimecast/select-bulk',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'emails' => [
'[email protected]',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/agents/mimecast/select-bulk" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"emails\": [
\"[email protected]\"
]
}"
Example response (200):
[
"[email protected]"
]
Received response:
Request failed with error:
Mailboxes -Mimecast - List
requires authentication
Load potential Mimecast mailboxes
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/mimecast/load-bulk-agents"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/entities/agents/mimecast/load-bulk-agents',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/agents/mimecast/load-bulk-agents" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
No-example
Received response:
Request failed with error:
Mailboxes -Mimecast - Search
requires authentication
Search potential Mimecast Mailboxes
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/mimecast/search-agents"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/entities/agents/mimecast/search-agents',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/agents/mimecast/search-agents" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
No-example
Received response:
Request failed with error:
Mailboxes -Mimecast - Token
requires authentication
Generate a Mimecast token from a username and password
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/mimecast/auth"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"username": "[email protected]",
"password": "secret"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/entities/agents/mimecast/auth',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'username' => '[email protected]',
'password' => 'secret',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/agents/mimecast/auth" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"username\": \"[email protected]\",
\"password\": \"secret\"
}"
Example response (200):
{
"status": "We have successfully created a Mimecast authentication token. Please go to https://portal.timetoreply.com/api/entities/agents/load-bulk-agents-mimecast to select which mailboxes to add"
}
Received response:
Request failed with error:
Mailboxes -Mimecast - Update List
requires authentication
Force an update of potential Mimecast mailboxes
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/mimecast/force-sync-agents"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/entities/agents/mimecast/force-sync-agents',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/agents/mimecast/force-sync-agents" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
No-example
Received response:
Request failed with error:
Mailboxes -O365 - Bulk Add
requires authentication
Store a list of O365 Mailboxes
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/microsoft/select-bulk"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"users": [
{
"id": "12345-12345-12345",
"mail": "[email protected]",
"name": "Peter Rabbit",
"userPrincipalName": "[email protected]"
}
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/entities/agents/microsoft/select-bulk',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'users' => [
[
'id' => '12345-12345-12345',
'mail' => '[email protected]',
'name' => 'Peter Rabbit',
'userPrincipalName' => '[email protected]',
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/agents/microsoft/select-bulk" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"users\": [
{
\"id\": \"12345-12345-12345\",
\"mail\": \"[email protected]\",
\"name\": \"Peter Rabbit\",
\"userPrincipalName\": \"[email protected]\"
}
]
}"
Example response (200):
{
"total": 4,
"maxAgents": 100,
"limitAgents": true
}
Received response:
Request failed with error:
Mailboxes -O365 - List
requires authentication
Load potential O365 Mailboxes
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/microsoft/load-bulk-agents"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/entities/agents/microsoft/load-bulk-agents',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/agents/microsoft/load-bulk-agents" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
{
"name": "Peter Rabbit",
"id": "12345abcd",
"mail": "[email protected]",
"userPrincipalName": "[email protected]"
}
Received response:
Request failed with error:
Mailboxes -O365 - Search
requires authentication
Search potential O365 Mailboxes
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/microsoft/search-bulk-agents"
);
const params = {
"search": "peter",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/entities/agents/microsoft/search-bulk-agents',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'search'=> 'peter',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/agents/microsoft/search-bulk-agents?search=peter" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
No-example
Received response:
Request failed with error:
Team Members - Delete
requires authentication
Remove a member from a Team
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/teams/1/agents"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"ids": [
1
]
};
fetch(url, {
method: "DELETE",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://portal.timetoreply.com/api/entities/teams/1/agents',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'ids' => [
1,
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request DELETE \
"https://portal.timetoreply.com/api/entities/teams/1/agents" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"ids\": [
1
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"current_page": 1,
"data": [
{
"email": "[email protected]",
"type": 1,
"existing": true
},
{
"email": "[email protected]",
"type": 1,
"existing": true
}
],
"first_page_url": "/?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "/?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "/?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "/",
"per_page": 25,
"prev_page_url": null,
"to": 2,
"total": 2
}
Received response:
Request failed with error:
Team Members - List
requires authentication
Show members of a Team
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/teams/1/agents"
);
const params = {
"sort_by": "name",
"direction": "asc",
"per_page": "2",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/entities/teams/1/agents',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'sort_by'=> 'name',
'direction'=> 'asc',
'per_page'=> '2',
'page'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/teams/1/agents?sort_by=name&direction=asc&per_page=2&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"current_page": 1,
"data": [
{
"email": "[email protected]",
"type": 1,
"existing": true
},
{
"email": "[email protected]",
"type": 1,
"existing": true
}
],
"first_page_url": "/?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "/?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "/?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "/",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 2
}
Received response:
Request failed with error:
Team Members - Store
requires authentication
Add a member to a Team
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/teams/1/agents"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"ids": [
1
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/entities/teams/1/agents',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'ids' => [
1,
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/teams/1/agents" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"ids\": [
1
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"current_page": 1,
"data": [
{
"email": "[email protected]",
"type": 1,
"existing": true
},
{
"email": "[email protected]",
"type": 1,
"existing": true
},
{
"email": "[email protected]",
"type": 1,
"existing": true
}
],
"first_page_url": "/?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "/?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "/?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "/",
"per_page": 25,
"prev_page_url": null,
"to": 3,
"total": 3
}
Received response:
Request failed with error:
Teams - Delete
requires authentication
Delete a Team
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/teams/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://portal.timetoreply.com/api/entities/teams/1',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request DELETE \
"https://portal.timetoreply.com/api/entities/teams/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
{
"status": "Team deleted."
}
Received response:
Request failed with error:
Teams - List
requires authentication
Show all teams
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/teams"
);
const params = {
"per_page": "25",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/entities/teams',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'per_page'=> '25',
'page'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/teams?per_page=25&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"current_page": 1,
"data": [
{
"id": 1,
"name": "US Sales Team",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"model_type": "Team",
"icon": "handshake"
},
{
"id": 2,
"name": "EU Sales Team",
"email_usernames": [
"[email protected]"
],
"model_type": "Team",
"icon": "handshake"
}
],
"first_page_url": "https://portal.timetoreply.com/api/entities/teams?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/entities/teams?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/teams?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://portal.timetoreply.com/api/entities/teams",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 2
}
Received response:
Request failed with error:
Teams - Show
requires authentication
Show a single Team
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/teams/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/entities/teams/1',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/teams/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 1,
"name": "US Sales Team",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"model_type": "Team",
"icon": "handshake"
}
Received response:
Request failed with error:
Teams - Store
requires authentication
Store a new Team
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/teams"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "US Support Team"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/entities/teams',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'US Support Team',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/teams" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"US Support Team\"
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 3,
"company_id": 1,
"name": "US Support Team",
"first_reply_time_goal": 0,
"overall_reply_time_goal": 0,
"time_to_close_goal": 0,
"created_at": "2022-01-04 11:39:10",
"updated_at": "2022-01-04 11:39:10",
"members": {
"current_page": 1,
"data": [],
"first_page_url": "/?page=1",
"from": null,
"last_page": 1,
"last_page_url": "/?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "/?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "/",
"per_page": 25,
"prev_page_url": null,
"to": null,
"total": 0
},
"model_type": "Team",
"members_count": 0,
"pending_invites": []
}
Received response:
Request failed with error:
Teams - Update
requires authentication
Update a Team
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/teams/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "US Support Team"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->put(
'https://portal.timetoreply.com/api/entities/teams/1',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'US Support Team',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PUT \
"https://portal.timetoreply.com/api/entities/teams/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"US Support Team\"
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 1,
"company_id": 1,
"name": "US Support Team",
"first_reply_time_goal": 0,
"overall_reply_time_goal": 0,
"time_to_close_goal": 0,
"created_at": "2022-01-04 11:38:41",
"updated_at": "2022-01-04 11:39:10",
"members": {
"current_page": 1,
"data": [
{
"email": "[email protected]",
"type": 1,
"existing": true
},
{
"email": "[email protected]",
"type": 1,
"existing": true
}
],
"first_page_url": "/?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "/?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "/?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "/",
"per_page": 25,
"prev_page_url": null,
"to": 2,
"total": 2
},
"model_type": "Team",
"members_count": 2,
"pending_invites": []
}
Received response:
Request failed with error:
Logs
Conversations - Close
requires authentication
Endpoint For marking Conversations as closed.
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/logs/conversations/mark-closed"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"ids": [
8,
6,
7,
5,
3,
0,
9
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://portal.timetoreply.com/api/logs/conversations/mark-closed',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'ids' => [
8,
6,
7,
5,
3,
0,
9,
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/logs/conversations/mark-closed" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"ids\": [
8,
6,
7,
5,
3,
0,
9
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"ids": [
3,
5,
6,
7,
8,
9
]
}
Received response:
Request failed with error:
Conversations - Find
requires authentication
Entire Conversation from a single Message ID
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/logs/conversations/get-by-internet-message-id"
);
const params = {
"internet_message_id": "[email protected]",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/logs/conversations/get-by-internet-message-id',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'internet_message_id'=> '[email protected]',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/logs/conversations/get-by-internet-message-id?internet_message_id=1601678270iYOoAwCjDD%40TnlYu0KwPhwXxhcTAeHFJMHlI.DrfT" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 33,
"init_agent_reply_time": 12233,
"init_agent_action_time": 12233,
"total_agent_reply_time": 14041,
"last_received_at_date_time": "Dec 23rd 2021 15:12:27",
"thread_type": "inbound",
"thread_status": "closed",
"raw_init_agent_reply_time": 12233,
"init_agent_reply_message_id": "[email protected]",
"init_reply_agent_id": 1,
"time_to_close": 15082,
"raw_time_to_close": 15082,
"friendly_initial_reply_time": "03h:23m:53s",
"friendly_raw_initial_reply_time": "03h:23m:53s",
"friendly_total_reply_time": "03h:54m:01s",
"microsoft_conversations": [],
"email_usernames": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]",
"[email protected]"
],
"email_usernames_to": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"email_usernames_received": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"email_domains": [
"hessel.org",
"timetoreply.com"
],
"date_times": [
"2021-12-23 11:01:05",
"2021-12-23 14:24:58",
"2021-12-23 14:55:06",
"2021-12-23 15:12:27"
],
"message_classifications": [
"first",
"reply",
"forward"
],
"message_subjects": [
"Et optio et et vel tempora facere.",
"RE: Et optio et et vel tempora facere.",
"FW: Et optio et et vel tempora facere."
],
"messages": [
{
"internet_message_id": "[email protected]",
"date_time": "Dec 23rd 2021 15:12:27",
"subject": "FW: Et optio et et vel tempora facere. (Excluded from statistics because it's a closing email)",
"references": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
],
"replytime": null,
"classification": "forward",
"raw_replytime": null,
"friendly_reply_time": "Pending",
"friendly_raw_reply_time": "Pending",
"email_domains": [
"timetoreply.com"
],
"email_domains_from": [
"timetoreply.com"
],
"email_domains_to": [
"timetoreply.com"
],
"email_domains_received": [
"timetoreply.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"thread_ids": [
33
],
"message_type": "internal",
"labels": [],
"is_closing_email": true,
"is_included_in_stats": true,
"timestamp": 1640272347,
"reply_is_relevant": true,
"reply_is_outlier": false,
"agents_read_status": []
},
{
"internet_message_id": "[email protected]",
"date_time": "Dec 23rd 2021 14:55:06",
"subject": "RE: Et optio et et vel tempora facere.",
"references": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
],
"replytime": 1808,
"classification": "reply",
"raw_replytime": 1808,
"friendly_reply_time": "30m:08s",
"friendly_raw_reply_time": "30m:08s",
"email_domains": [
"hessel.org",
"timetoreply.com"
],
"email_domains_from": [
"hessel.org"
],
"email_domains_to": [
"timetoreply.com"
],
"email_domains_received": [
"timetoreply.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"thread_ids": [
33
],
"message_type": "inbound",
"labels": [],
"is_closing_email": false,
"is_included_in_stats": true,
"timestamp": 1640271306,
"reply_is_relevant": false,
"reply_is_outlier": false,
"agents_read_status": {
"[email protected]": true
}
},
{
"internet_message_id": "[email protected]",
"date_time": "Dec 23rd 2021 14:24:58",
"subject": "RE: Et optio et et vel tempora facere.",
"references": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
],
"replytime": 12233,
"classification": "reply",
"raw_replytime": 12233,
"friendly_reply_time": "03h:23m:53s",
"friendly_raw_reply_time": "03h:23m:53s",
"email_domains": [
"timetoreply.com",
"hessel.org"
],
"email_domains_from": [
"timetoreply.com"
],
"email_domains_to": [
"hessel.org"
],
"email_domains_received": [
"hessel.org"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": true,
"thread_ids": [
33
],
"message_type": "outbound",
"labels": [],
"is_closing_email": false,
"is_included_in_stats": true,
"timestamp": 1640269498,
"reply_is_relevant": true,
"reply_is_outlier": false,
"agents_read_status": []
},
{
"internet_message_id": "[email protected]",
"date_time": "Dec 23rd 2021 11:01:05",
"subject": "Et optio et et vel tempora facere.",
"references": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
],
"replytime": null,
"classification": "first",
"raw_replytime": null,
"friendly_reply_time": "N/A",
"friendly_raw_reply_time": "N/A",
"email_domains": [
"hessel.org",
"timetoreply.com"
],
"email_domains_from": [
"hessel.org"
],
"email_domains_to": [
"timetoreply.com"
],
"email_domains_received": [
"timetoreply.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"thread_ids": [
33
],
"message_type": "inbound",
"labels": [
"UNREAD"
],
"is_closing_email": false,
"is_included_in_stats": true,
"timestamp": 1640257265,
"reply_is_relevant": false,
"reply_is_outlier": false,
"agents_read_status": {
"[email protected]": false
}
}
],
"labels": [
"UNREAD"
],
"has_contact_success": true,
"contact_success_time": 14041,
"contact_reply_time": 1808,
"subject": "FW: Et optio et et vel tempora facere.",
"initial_reply_is_relevant": true,
"initial_reply_is_outlier": false,
"friendly_time_to_close": "04h:11m",
"friendly_raw_time_to_close": "04h:11m"
}
Received response:
Request failed with error:
Conversations - Report
requires authentication
Conversation (Thread) Logs data
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/logs/conversations"
);
const params = {
"from": "2020-01-01",
"to": "2020-01-08",
"model": "My Company",
"model_type": "Internal",
"exclude_cc": "0",
"model_com": "Top Revenue Contacts",
"model_type_com": "Contact Group",
"exclude_cc_com": "0",
"exclusive": "0",
"label": "INBOX",
"thread_type": "inbound,outbound,internal",
"thread_status": "internal,await-customer,closed,await-agent",
"has_replies": "hasReplies,hasForwards,hasNoRepliesOrForwards",
"classification": "calculating,first,reply,reply-all,forward",
"messageType": "inbound,outbound,internal",
"replies_over": "15",
"message_replies_over": "15",
"no_reply_for": "15",
"per_page": "2",
"sort_by": "last_received_at_date_time",
"direction": "desc",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/logs/conversations',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'from'=> '2020-01-01',
'to'=> '2020-01-08',
'model'=> 'My Company',
'model_type'=> 'Internal',
'exclude_cc'=> '0',
'model_com'=> 'Top Revenue Contacts',
'model_type_com'=> 'Contact Group',
'exclude_cc_com'=> '0',
'exclusive'=> '0',
'label'=> 'INBOX',
'thread_type'=> 'inbound,outbound,internal',
'thread_status'=> 'internal,await-customer,closed,await-agent',
'has_replies'=> 'hasReplies,hasForwards,hasNoRepliesOrForwards',
'classification'=> 'calculating,first,reply,reply-all,forward',
'messageType'=> 'inbound,outbound,internal',
'replies_over'=> '15',
'message_replies_over'=> '15',
'no_reply_for'=> '15',
'per_page'=> '2',
'sort_by'=> 'last_received_at_date_time',
'direction'=> 'desc',
'page'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/logs/conversations?from=2020-01-01&to=2020-01-08&model=My+Company&model_type=Internal&exclude_cc=&model_com=Top+Revenue+Contacts&model_type_com=Contact+Group&exclude_cc_com=&exclusive=&label=INBOX&thread_type=inbound%2Coutbound%2Cinternal&thread_status=internal%2Cawait-customer%2Cclosed%2Cawait-agent&has_replies=hasReplies%2ChasForwards%2ChasNoRepliesOrForwards&classification=calculating%2Cfirst%2Creply%2Creply-all%2Cforward&messageType=inbound%2Coutbound%2Cinternal&replies_over=15&message_replies_over=15&no_reply_for=15&per_page=2&sort_by=last_received_at_date_time&direction=desc&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"threads": {
"current_page": 1,
"data": [
{
"id": 327,
"init_agent_reply_time": null,
"init_agent_action_time": null,
"total_agent_reply_time": 0,
"last_received_at_date_time": "Jan 4th 2022 01:10:12",
"thread_type": "inbound",
"thread_status": "await-agent",
"raw_init_agent_reply_time": null,
"init_agent_reply_message_id": null,
"init_reply_agent_id": null,
"time_to_close": null,
"raw_time_to_close": null,
"friendly_initial_reply_time": "Pending",
"friendly_raw_initial_reply_time": "Pending",
"friendly_total_reply_time": "N/A",
"microsoft_conversations": [],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_received": [
"[email protected]"
],
"email_domains": [
"hill.com",
"timetoreply.com"
],
"date_times": [
"2022-01-04 01:10:12"
],
"message_classifications": [
"first"
],
"message_subjects": [
"Minus voluptates voluptatibus veritatis ea corporis sit molestias."
],
"messages": [
{
"internet_message_id": "[email protected]",
"date_time": "Jan 4th 2022 01:10:12",
"subject": "Minus voluptates voluptatibus veritatis ea corporis sit molestias.",
"references": null,
"replytime": null,
"classification": "first",
"raw_replytime": null,
"friendly_reply_time": "N/A",
"friendly_raw_reply_time": "N/A",
"email_domains": [
"hill.com",
"timetoreply.com"
],
"email_domains_from": [
"hill.com"
],
"email_domains_to": [
"timetoreply.com"
],
"email_domains_received": [
"timetoreply.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"thread_ids": [
327
],
"message_type": "inbound",
"labels": [],
"is_closing_email": false,
"is_included_in_stats": true,
"timestamp": 1641258612,
"reply_is_relevant": false,
"reply_is_outlier": false,
"agents_read_status": []
}
],
"labels": [],
"has_contact_success": false,
"contact_success_time": null,
"contact_reply_time": null,
"subject": "Minus voluptates voluptatibus veritatis ea corporis sit molestias.",
"initial_reply_is_relevant": true,
"initial_reply_is_outlier": false,
"friendly_time_to_close": "N/A",
"friendly_raw_time_to_close": "N/A"
},
{
"id": 20,
"init_agent_reply_time": 0,
"init_agent_action_time": 0,
"total_agent_reply_time": 180,
"last_received_at_date_time": "Jan 3rd 2022 17:57:27",
"thread_type": "inbound",
"thread_status": "await-customer",
"raw_init_agent_reply_time": 1758,
"init_agent_reply_message_id": "[email protected]",
"init_reply_agent_id": 1,
"time_to_close": null,
"raw_time_to_close": null,
"friendly_initial_reply_time": "00s",
"friendly_raw_initial_reply_time": "29m:18s",
"friendly_total_reply_time": "03m:00s",
"microsoft_conversations": [
"T680QHLAl9IODeaw2f",
"02IDrWSJe723kgWktV",
"YpqfNQrTRZc0nNcRfc"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]",
"[email protected]"
],
"email_usernames_to": [
"[email protected]",
"[email protected]"
],
"email_usernames_received": [
"[email protected]",
"[email protected]"
],
"email_domains": [
"veum.com",
"timetoreply.com"
],
"date_times": [
"2022-01-03 17:23:33",
"2022-01-03 17:52:51",
"2022-01-03 17:55:51",
"2022-01-03 17:57:27"
],
"message_classifications": [
"first",
"reply"
],
"message_subjects": [
"Deserunt eaque iusto consequatur laudantium sequi.",
"RE: Deserunt eaque iusto consequatur laudantium sequi."
],
"messages": [
{
"internet_message_id": "[email protected]",
"date_time": "Jan 3rd 2022 17:57:27",
"subject": "RE: Deserunt eaque iusto consequatur laudantium sequi.",
"references": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"replytime": 0,
"classification": "reply",
"raw_replytime": 96,
"friendly_reply_time": "00s",
"friendly_raw_reply_time": "01m:36s",
"email_domains": [
"timetoreply.com",
"veum.com"
],
"email_domains_from": [
"timetoreply.com"
],
"email_domains_to": [
"veum.com"
],
"email_domains_received": [
"veum.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"thread_ids": [
20
],
"message_type": "outbound",
"labels": [],
"is_closing_email": false,
"is_included_in_stats": true,
"timestamp": 1641232647,
"reply_is_relevant": true,
"reply_is_outlier": false,
"agents_read_status": []
},
{
"internet_message_id": "[email protected]",
"date_time": "Jan 3rd 2022 17:55:51",
"subject": "RE: Deserunt eaque iusto consequatur laudantium sequi.",
"references": [
"[email protected]",
"[email protected]vg9V5o6vbBbv1o.8BLZ"
],
"replytime": 180,
"classification": "reply",
"raw_replytime": 180,
"friendly_reply_time": "03m:00s",
"friendly_raw_reply_time": "03m:00s",
"email_domains": [
"veum.com",
"timetoreply.com"
],
"email_domains_from": [
"veum.com"
],
"email_domains_to": [
"timetoreply.com"
],
"email_domains_received": [
"timetoreply.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"thread_ids": [
20
],
"message_type": "inbound",
"labels": [],
"is_closing_email": false,
"is_included_in_stats": true,
"timestamp": 1641232551,
"reply_is_relevant": false,
"reply_is_outlier": false,
"agents_read_status": {
"[email protected]": true
}
},
{
"internet_message_id": "[email protected]",
"date_time": "Jan 3rd 2022 17:52:51",
"subject": "RE: Deserunt eaque iusto consequatur laudantium sequi.",
"references": [
"[email protected]"
],
"replytime": 0,
"classification": "reply",
"raw_replytime": 1758,
"friendly_reply_time": "00s",
"friendly_raw_reply_time": "29m:18s",
"email_domains": [
"timetoreply.com",
"veum.com"
],
"email_domains_from": [
"timetoreply.com"
],
"email_domains_to": [
"veum.com"
],
"email_domains_received": [
"veum.com"
],
"email_usernames": [
"[email protected]",
"[email protected]m"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": true,
"thread_ids": [
20
],
"message_type": "outbound",
"labels": [
"UNREAD"
],
"is_closing_email": false,
"is_included_in_stats": true,
"timestamp": 1641232371,
"reply_is_relevant": true,
"reply_is_outlier": false,
"agents_read_status": []
},
{
"internet_message_id": "[email protected]",
"date_time": "Jan 3rd 2022 17:23:33",
"subject": "Deserunt eaque iusto consequatur laudantium sequi.",
"references": null,
"replytime": null,
"classification": "first",
"raw_replytime": null,
"friendly_reply_time": "N/A",
"friendly_raw_reply_time": "N/A",
"email_domains": [
"veum.com",
"timetoreply.com"
],
"email_domains_from": [
"veum.com"
],
"email_domains_to": [
"timetoreply.com"
],
"email_domains_received": [
"timetoreply.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"thread_ids": [
20
],
"message_type": "inbound",
"labels": [
"UNREAD"
],
"is_closing_email": false,
"is_included_in_stats": true,
"timestamp": 1641230613,
"reply_is_relevant": false,
"reply_is_outlier": false,
"agents_read_status": {
"r.harve[email protected]": false
}
}
],
"labels": [
"UNREAD"
],
"has_contact_success": true,
"contact_success_time": 180,
"contact_reply_time": 180,
"subject": "RE: Deserunt eaque iusto consequatur laudantium sequi.",
"initial_reply_is_relevant": true,
"initial_reply_is_outlier": false,
"friendly_time_to_close": "N/A",
"friendly_raw_time_to_close": "N/A"
}
],
"first_page_url": "https://portal.timetoreply.com/api/logs/conversations?page=1",
"from": 1,
"last_page": 95,
"last_page_url": "https://portal.timetoreply.com/api/logs/conversations?page=95",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?page=3",
"label": "3",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?page=4",
"label": "4",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?page=5",
"label": "5",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?page=6",
"label": "6",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?page=7",
"label": "7",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?page=8",
"label": "8",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?page=9",
"label": "9",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?page=10",
"label": "10",
"active": false
},
{
"url": null,
"label": "...",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?page=94",
"label": "94",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?page=95",
"label": "95",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/logs/conversations?page=2",
"path": "https://portal.timetoreply.com/api/logs/conversations",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 189
},
"stats": {
"threads": {
"total": 189,
"internal": 14,
"inbound": 150,
"outbound": 25,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 0,
"have_replies": 148,
"have_replies_from_agents": 141,
"completionRatio": {
"ratio": "83.33%",
"numerator": 125,
"denominator": 150
}
},
"messages": {
"count": 0,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"received": {
"count": 0,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dayOfWeek": {
"Monday": 0,
"Tuesday": 0,
"Wednesday": 0,
"Thursday": 0,
"Friday": 0,
"Saturday": 0,
"Sunday": 0
},
"hourOfDay": {
"00:00": 0,
"01:00": 0,
"02:00": 0,
"03:00": 0,
"04:00": 0,
"05:00": 0,
"06:00": 0,
"07:00": 0,
"08:00": 0,
"09:00": 0,
"10:00": 0,
"11:00": 0,
"12:00": 0,
"13:00": 0,
"14:00": 0,
"15:00": 0,
"16:00": 0,
"17:00": 0,
"18:00": 0,
"19:00": 0,
"20:00": 0,
"21:00": 0,
"22:00": 0,
"23:00": 0
}
},
"sent": {
"count": 0,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 125,
"dayOfWeek": {
"Monday": 0,
"Tuesday": 0,
"Wednesday": 0,
"Thursday": 0,
"Friday": 0,
"Saturday": 0,
"Sunday": 0
},
"hourOfDay": {
"00:00": 0,
"01:00": 0,
"02:00": 0,
"03:00": 0,
"04:00": 0,
"05:00": 0,
"06:00": 0,
"07:00": 0,
"08:00": 0,
"09:00": 0,
"10:00": 0,
"11:00": 0,
"12:00": 0,
"13:00": 0,
"14:00": 0,
"15:00": 0,
"16:00": 0,
"17:00": 0,
"18:00": 0,
"19:00": 0,
"20:00": 0,
"21:00": 0,
"22:00": 0,
"23:00": 0
}
}
},
"overallTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 0
},
"initialTTR": {
"friendly": "01h:14m",
"raw": 4494.648,
"friendly_no_business": "03h:37m",
"raw_no_business": 13027.032,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"overallTTC": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"dailyStats": []
}
}
Received response:
Request failed with error:
Messages - Report
requires authentication
Message Logs data
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/logs/messages"
);
const params = {
"from": "2020-01-01",
"to": "2020-01-08",
"model": "My Company",
"model_type": "Internal",
"exclude_cc": "0",
"model_com": "Top Revenue Contacts",
"model_type_com": "Contact Group",
"exclude_cc_com": "0",
"exclusive": "0",
"label": "INBOX",
"thread_type": "inbound,outbound,internal",
"thread_status": "internal,await-customer,closed,await-agent",
"has_replies": "hasReplies,hasForwards,hasNoRepliesOrForwards",
"classification": "calculating,first,reply,reply-all,forward",
"messageType": "inbound,outbound,internal",
"replies_over": "15",
"message_replies_over": "15",
"no_reply_for": "15",
"per_page": "2",
"sort_by": "date_time",
"direction": "desc",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/logs/messages',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'from'=> '2020-01-01',
'to'=> '2020-01-08',
'model'=> 'My Company',
'model_type'=> 'Internal',
'exclude_cc'=> '0',
'model_com'=> 'Top Revenue Contacts',
'model_type_com'=> 'Contact Group',
'exclude_cc_com'=> '0',
'exclusive'=> '0',
'label'=> 'INBOX',
'thread_type'=> 'inbound,outbound,internal',
'thread_status'=> 'internal,await-customer,closed,await-agent',
'has_replies'=> 'hasReplies,hasForwards,hasNoRepliesOrForwards',
'classification'=> 'calculating,first,reply,reply-all,forward',
'messageType'=> 'inbound,outbound,internal',
'replies_over'=> '15',
'message_replies_over'=> '15',
'no_reply_for'=> '15',
'per_page'=> '2',
'sort_by'=> 'date_time',
'direction'=> 'desc',
'page'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/logs/messages?from=2020-01-01&to=2020-01-08&model=My+Company&model_type=Internal&exclude_cc=&model_com=Top+Revenue+Contacts&model_type_com=Contact+Group&exclude_cc_com=&exclusive=&label=INBOX&thread_type=inbound%2Coutbound%2Cinternal&thread_status=internal%2Cawait-customer%2Cclosed%2Cawait-agent&has_replies=hasReplies%2ChasForwards%2ChasNoRepliesOrForwards&classification=calculating%2Cfirst%2Creply%2Creply-all%2Cforward&messageType=inbound%2Coutbound%2Cinternal&replies_over=15&message_replies_over=15&no_reply_for=15&per_page=2&sort_by=date_time&direction=desc&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"stats": {
"threads": {
"total": 0,
"internal": 0,
"inbound": 0,
"outbound": 0,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 0,
"have_replies": 0,
"have_replies_from_agents": 0,
"completionRatio": {
"ratio": "0.00%",
"numerator": 0,
"denominator": 0
}
},
"messages": {
"count": 488,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"received": {
"count": 322,
"initial": 159,
"replies": 114,
"reply_all": 43,
"forward": 6,
"follow_up": 0,
"initial_replies": 0,
"dayOfWeek": {
"Monday": 0,
"Tuesday": 0,
"Wednesday": 0,
"Thursday": 0,
"Friday": 0,
"Saturday": 0,
"Sunday": 0
},
"hourOfDay": {
"00:00": 0,
"01:00": 0,
"02:00": 0,
"03:00": 0,
"04:00": 0,
"05:00": 0,
"06:00": 0,
"07:00": 0,
"08:00": 0,
"09:00": 0,
"10:00": 0,
"11:00": 0,
"12:00": 0,
"13:00": 0,
"14:00": 0,
"15:00": 0,
"16:00": 0,
"17:00": 0,
"18:00": 0,
"19:00": 0,
"20:00": 0,
"21:00": 0,
"22:00": 0,
"23:00": 0
}
},
"sent": {
"count": 230,
"initial": 37,
"replies": 159,
"reply_all": 28,
"forward": 6,
"follow_up": 0,
"initial_replies": 0,
"dayOfWeek": {
"Monday": 0,
"Tuesday": 0,
"Wednesday": 0,
"Thursday": 0,
"Friday": 0,
"Saturday": 0,
"Sunday": 0
},
"hourOfDay": {
"00:00": 0,
"01:00": 0,
"02:00": 0,
"03:00": 0,
"04:00": 0,
"05:00": 0,
"06:00": 0,
"07:00": 0,
"08:00": 0,
"09:00": 0,
"10:00": 0,
"11:00": 0,
"12:00": 0,
"13:00": 0,
"14:00": 0,
"15:00": 0,
"16:00": 0,
"17:00": 0,
"18:00": 0,
"19:00": 0,
"20:00": 0,
"21:00": 0,
"22:00": 0,
"23:00": 0
}
}
},
"overallTTR": {
"friendly": "01h:34m",
"raw": 5682.850267379679,
"friendly_no_business": "04h:28m",
"raw_no_business": 16138.417112299465,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 230
},
"initialTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"overallTTC": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"dailyStats": []
},
"messages": {
"current_page": 1,
"data": [
{
"internet_message_id": "[email protected]",
"date_time": "Jan 4th 2022 01:10:12",
"subject": "Minus voluptates voluptatibus veritatis ea corporis sit molestias.",
"references": null,
"replytime": null,
"classification": "first",
"raw_replytime": null,
"friendly_reply_time": "N/A",
"friendly_raw_reply_time": "N/A",
"email_domains": [
"hill.com",
"timetoreply.com"
],
"email_domains_from": [
"hill.com"
],
"email_domains_to": [
"timetoreply.com"
],
"email_domains_received": [
"timetoreply.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"thread_ids": [
327
],
"message_type": "inbound",
"labels": [],
"is_closing_email": false,
"is_included_in_stats": true,
"timestamp": 1641258612,
"reply_is_relevant": false,
"reply_is_outlier": false,
"agents_read_status": [],
"thread_message_count": 1
},
{
"internet_message_id": "[email protected]",
"date_time": "Jan 3rd 2022 17:57:27",
"subject": "RE: Deserunt eaque iusto consequatur laudantium sequi.",
"references": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"replytime": 0,
"classification": "reply",
"raw_replytime": 96,
"friendly_reply_time": "00s",
"friendly_raw_reply_time": "01m:36s",
"email_domains": [
"timetoreply.com",
"veum.com"
],
"email_domains_from": [
"timetoreply.com"
],
"email_domains_to": [
"veum.com"
],
"email_domains_received": [
"veum.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"thread_ids": [
20
],
"message_type": "outbound",
"labels": [],
"is_closing_email": false,
"is_included_in_stats": true,
"timestamp": 1641232647,
"reply_is_relevant": true,
"reply_is_outlier": false,
"agents_read_status": [],
"thread_message_count": 4
}
],
"first_page_url": "https://portal.timetoreply.com/api/logs/messages?page=1",
"from": 1,
"last_page": 244,
"last_page_url": "https://portal.timetoreply.com/api/logs/messages?page=244",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?page=3",
"label": "3",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?page=4",
"label": "4",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?page=5",
"label": "5",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?page=6",
"label": "6",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?page=7",
"label": "7",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?page=8",
"label": "8",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?page=9",
"label": "9",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?page=10",
"label": "10",
"active": false
},
{
"url": null,
"label": "...",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?page=243",
"label": "243",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?page=244",
"label": "244",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/logs/messages?page=2",
"path": "https://portal.timetoreply.com/api/logs/messages",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 488
}
}
Received response:
Request failed with error:
Reports
Comparative - Report
requires authentication
Comparative Report Data
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/reports/comparative"
);
const params = {
"from": "2020-01-01",
"to": "2020-01-08",
"model": "My Company",
"model_type": "Internal",
"exclude_cc": "0",
"model_com": "Top Revenue Contacts",
"model_type_com": "Contact Group",
"exclude_cc_com": "0",
"exclusive": "0",
"label": "INBOX",
"thread_type": "inbound,outbound,internal",
"thread_status": "internal,await-customer,closed,await-agent",
"has_replies": "hasReplies,hasForwards,hasNoRepliesOrForwards",
"classification": "calculating,first,reply,reply-all,forward",
"messageType": "inbound,outbound,internal",
"replies_over": "15",
"message_replies_over": "15",
"no_reply_for": "15",
"per_page": "2",
"direction": "desc",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/reports/comparative',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'from'=> '2020-01-01',
'to'=> '2020-01-08',
'model'=> 'My Company',
'model_type'=> 'Internal',
'exclude_cc'=> '0',
'model_com'=> 'Top Revenue Contacts',
'model_type_com'=> 'Contact Group',
'exclude_cc_com'=> '0',
'exclusive'=> '0',
'label'=> 'INBOX',
'thread_type'=> 'inbound,outbound,internal',
'thread_status'=> 'internal,await-customer,closed,await-agent',
'has_replies'=> 'hasReplies,hasForwards,hasNoRepliesOrForwards',
'classification'=> 'calculating,first,reply,reply-all,forward',
'messageType'=> 'inbound,outbound,internal',
'replies_over'=> '15',
'message_replies_over'=> '15',
'no_reply_for'=> '15',
'per_page'=> '2',
'direction'=> 'desc',
'page'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/reports/comparative?from=2020-01-01&to=2020-01-08&model=My+Company&model_type=Internal&exclude_cc=&model_com=Top+Revenue+Contacts&model_type_com=Contact+Group&exclude_cc_com=&exclusive=&label=INBOX&thread_type=inbound%2Coutbound%2Cinternal&thread_status=internal%2Cawait-customer%2Cclosed%2Cawait-agent&has_replies=hasReplies%2ChasForwards%2ChasNoRepliesOrForwards&classification=calculating%2Cfirst%2Creply%2Creply-all%2Cforward&messageType=inbound%2Coutbound%2Cinternal&replies_over=15&message_replies_over=15&no_reply_for=15&per_page=2&direction=desc&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"replyTimePercentages": {
"categories": [
"[email protected]",
"[email protected]"
],
"series": [
{
"name": "Replies in under 15m:00s",
"data": [
48.19,
41.9
],
"index": 5,
"legendIndex": 0,
"stringKey": "15m:00s"
},
{
"name": "Replies in under 01h:00m",
"data": [
37.13,
44.07
],
"index": 4,
"legendIndex": 1,
"stringKey": "01h:00m"
},
{
"name": "Replies in under 02h:00m",
"data": [
7.19,
1.63
],
"index": 3,
"legendIndex": 2,
"stringKey": "02h:00m"
},
{
"name": "Replies in under 04h:00m",
"data": [
3.57,
2.1
],
"index": 2,
"legendIndex": 3,
"stringKey": "04h:00m"
},
{
"name": "Replies in under 08h:00m",
"data": [
3.92,
5.14
],
"index": 1,
"legendIndex": 4,
"stringKey": "08h:00m"
},
{
"name": "Replies in under 24h:00m",
"data": [
0,
5.16
],
"index": 0,
"legendIndex": 5,
"stringKey": "24h:00m"
}
]
},
"forwardTimePercentages": {
"categories": [
"[email protected]",
"[email protected]"
],
"series": [
{
"name": "Forwards in under 15m:00s",
"data": [
0,
0
],
"index": 5,
"legendIndex": 0,
"stringKey": "15m:00s"
},
{
"name": "Forwards in under 01h:00m",
"data": [
0,
0
],
"index": 4,
"legendIndex": 1,
"stringKey": "01h:00m"
},
{
"name": "Forwards in under 02h:00m",
"data": [
0,
0
],
"index": 3,
"legendIndex": 2,
"stringKey": "02h:00m"
},
{
"name": "Forwards in under 04h:00m",
"data": [
0,
0
],
"index": 2,
"legendIndex": 3,
"stringKey": "04h:00m"
},
{
"name": "Forwards in under 08h:00m",
"data": [
0,
0
],
"index": 1,
"legendIndex": 4,
"stringKey": "08h:00m"
},
{
"name": "Forwards in under 24h:00m",
"data": [
0,
0
],
"index": 0,
"legendIndex": 5,
"stringKey": "24h:00m"
}
]
},
"agentStats": {
"initialTTR.raw": [
{
"name": "[email protected]",
"threads": {
"total": 58,
"internal": 11,
"inbound": 36,
"outbound": 11,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 8,
"have_replies": 50,
"have_initial_replies": 29
},
"messages": {
"sent": {
"count": 67,
"initial": 17,
"replies": 47,
"reply_all": 3,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 83,
"initial": 38,
"replies": 30,
"reply_all": 12,
"forward": 3,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "38m:55s",
"raw": 2335.62,
"friendly_no_business": "01h:10m",
"raw_no_business": 4201.78,
"percentileRanks": [
{
"key": "15m:00s",
"value": "48.19%"
},
{
"key": "01h:00m",
"value": "85.32%"
},
{
"key": "02h:00m",
"value": "92.51%"
},
{
"key": "04h:00m",
"value": "96.08%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 67
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "32m:44s",
"raw": 1964.3103448275863,
"friendly_no_business": "50m:47s",
"raw_no_business": 3047.5172413793102,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "41m:33s",
"raw": 2493.6666666666665,
"friendly_no_business": "49m:37s",
"raw_no_business": 2977.6666666666665,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
},
{
"name": "[email protected]",
"threads": {
"total": 59,
"internal": 13,
"inbound": 44,
"outbound": 2,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 6,
"have_replies": 56,
"have_initial_replies": 40
},
"messages": {
"sent": {
"count": 62,
"initial": 4,
"replies": 41,
"reply_all": 15,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 71,
"initial": 25,
"replies": 33,
"reply_all": 12,
"forward": 1,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "01h:26m",
"raw": 5172.553571428572,
"friendly_no_business": "03h:38m",
"raw_no_business": 13111.232142857143,
"percentileRanks": [
{
"key": "15m:00s",
"value": "41.90%"
},
{
"key": "01h:00m",
"value": "85.97%"
},
{
"key": "02h:00m",
"value": "87.60%"
},
{
"key": "04h:00m",
"value": "89.70%"
},
{
"key": "08h:00m",
"value": "94.84%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 62
},
"overallTTF": {
"friendly": "14m:25s",
"raw": 865.5,
"friendly_no_business": "14m:25s",
"raw_no_business": 865.5
},
"initialTTR": {
"friendly": "01h:07m",
"raw": 4054.7,
"friendly_no_business": "02h:36m",
"raw_no_business": 9364.575,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "13m:24s",
"raw": 804.5,
"friendly_no_business": "24m:40s",
"raw_no_business": 1480,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
}
],
"messages.received.count": [
{
"name": "[email protected]",
"threads": {
"total": 89,
"internal": 13,
"inbound": 64,
"outbound": 12,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 10,
"have_replies": 81,
"have_initial_replies": 56
},
"messages": {
"sent": {
"count": 101,
"initial": 16,
"replies": 71,
"reply_all": 10,
"forward": 4,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 117,
"initial": 52,
"replies": 51,
"reply_all": 12,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "02h:15m",
"raw": 8101.83950617284,
"friendly_no_business": "07h:06m",
"raw_no_business": 25599.58024691358,
"percentileRanks": [
{
"key": "15m:00s",
"value": "36.73%"
},
{
"key": "01h:00m",
"value": "79.00%"
},
{
"key": "02h:00m",
"value": "81.98%"
},
{
"key": "04h:00m",
"value": "90.26%"
},
{
"key": "08h:00m",
"value": "92.27%"
},
{
"key": "24h:00m",
"value": "96.95%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 101
},
"overallTTF": {
"friendly": "06m:35s",
"raw": 395.75,
"friendly_no_business": "08m:19s",
"raw_no_business": 499.5
},
"initialTTR": {
"friendly": "01h:41m",
"raw": 6119.25,
"friendly_no_business": "05h:46m",
"raw_no_business": 20811.035714285714,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "01h:27m",
"raw": 5223.75,
"friendly_no_business": "01h:27m",
"raw_no_business": 5223.75,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
},
{
"name": "[email protected]",
"threads": {
"total": 58,
"internal": 11,
"inbound": 36,
"outbound": 11,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 8,
"have_replies": 50,
"have_initial_replies": 29
},
"messages": {
"sent": {
"count": 67,
"initial": 17,
"replies": 47,
"reply_all": 3,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 83,
"initial": 38,
"replies": 30,
"reply_all": 12,
"forward": 3,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "38m:55s",
"raw": 2335.62,
"friendly_no_business": "01h:10m",
"raw_no_business": 4201.78,
"percentileRanks": [
{
"key": "15m:00s",
"value": "48.19%"
},
{
"key": "01h:00m",
"value": "85.32%"
},
{
"key": "02h:00m",
"value": "92.51%"
},
{
"key": "04h:00m",
"value": "96.08%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 67
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "32m:44s",
"raw": 1964.3103448275863,
"friendly_no_business": "50m:47s",
"raw_no_business": 3047.5172413793102,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "41m:33s",
"raw": 2493.6666666666665,
"friendly_no_business": "49m:37s",
"raw_no_business": 2977.6666666666665,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
}
],
"messages.sent.any_replies": [
{
"name": "[email protected]",
"threads": {
"total": 89,
"internal": 13,
"inbound": 64,
"outbound": 12,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 10,
"have_replies": 81,
"have_initial_replies": 56
},
"messages": {
"sent": {
"count": 101,
"initial": 16,
"replies": 71,
"reply_all": 10,
"forward": 4,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 117,
"initial": 52,
"replies": 51,
"reply_all": 12,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "02h:15m",
"raw": 8101.83950617284,
"friendly_no_business": "07h:06m",
"raw_no_business": 25599.58024691358,
"percentileRanks": [
{
"key": "15m:00s",
"value": "36.73%"
},
{
"key": "01h:00m",
"value": "79.00%"
},
{
"key": "02h:00m",
"value": "81.98%"
},
{
"key": "04h:00m",
"value": "90.26%"
},
{
"key": "08h:00m",
"value": "92.27%"
},
{
"key": "24h:00m",
"value": "96.95%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 101
},
"overallTTF": {
"friendly": "06m:35s",
"raw": 395.75,
"friendly_no_business": "08m:19s",
"raw_no_business": 499.5
},
"initialTTR": {
"friendly": "01h:41m",
"raw": 6119.25,
"friendly_no_business": "05h:46m",
"raw_no_business": 20811.035714285714,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "01h:27m",
"raw": 5223.75,
"friendly_no_business": "01h:27m",
"raw_no_business": 5223.75,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
},
{
"name": "[email protected]",
"threads": {
"total": 59,
"internal": 13,
"inbound": 44,
"outbound": 2,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 6,
"have_replies": 56,
"have_initial_replies": 40
},
"messages": {
"sent": {
"count": 62,
"initial": 4,
"replies": 41,
"reply_all": 15,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 71,
"initial": 25,
"replies": 33,
"reply_all": 12,
"forward": 1,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "01h:26m",
"raw": 5172.553571428572,
"friendly_no_business": "03h:38m",
"raw_no_business": 13111.232142857143,
"percentileRanks": [
{
"key": "15m:00s",
"value": "41.90%"
},
{
"key": "01h:00m",
"value": "85.97%"
},
{
"key": "02h:00m",
"value": "87.60%"
},
{
"key": "04h:00m",
"value": "89.70%"
},
{
"key": "08h:00m",
"value": "94.84%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 62
},
"overallTTF": {
"friendly": "14m:25s",
"raw": 865.5,
"friendly_no_business": "14m:25s",
"raw_no_business": 865.5
},
"initialTTR": {
"friendly": "01h:07m",
"raw": 4054.7,
"friendly_no_business": "02h:36m",
"raw_no_business": 9364.575,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "13m:24s",
"raw": 804.5,
"friendly_no_business": "24m:40s",
"raw_no_business": 1480,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
}
],
"messages.sent.count": [
{
"name": "[email protected]",
"threads": {
"total": 89,
"internal": 13,
"inbound": 64,
"outbound": 12,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 10,
"have_replies": 81,
"have_initial_replies": 56
},
"messages": {
"sent": {
"count": 101,
"initial": 16,
"replies": 71,
"reply_all": 10,
"forward": 4,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 117,
"initial": 52,
"replies": 51,
"reply_all": 12,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "02h:15m",
"raw": 8101.83950617284,
"friendly_no_business": "07h:06m",
"raw_no_business": 25599.58024691358,
"percentileRanks": [
{
"key": "15m:00s",
"value": "36.73%"
},
{
"key": "01h:00m",
"value": "79.00%"
},
{
"key": "02h:00m",
"value": "81.98%"
},
{
"key": "04h:00m",
"value": "90.26%"
},
{
"key": "08h:00m",
"value": "92.27%"
},
{
"key": "24h:00m",
"value": "96.95%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 101
},
"overallTTF": {
"friendly": "06m:35s",
"raw": 395.75,
"friendly_no_business": "08m:19s",
"raw_no_business": 499.5
},
"initialTTR": {
"friendly": "01h:41m",
"raw": 6119.25,
"friendly_no_business": "05h:46m",
"raw_no_business": 20811.035714285714,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "01h:27m",
"raw": 5223.75,
"friendly_no_business": "01h:27m",
"raw_no_business": 5223.75,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
},
{
"name": "[email protected]",
"threads": {
"total": 58,
"internal": 11,
"inbound": 36,
"outbound": 11,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 8,
"have_replies": 50,
"have_initial_replies": 29
},
"messages": {
"sent": {
"count": 67,
"initial": 17,
"replies": 47,
"reply_all": 3,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 83,
"initial": 38,
"replies": 30,
"reply_all": 12,
"forward": 3,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "38m:55s",
"raw": 2335.62,
"friendly_no_business": "01h:10m",
"raw_no_business": 4201.78,
"percentileRanks": [
{
"key": "15m:00s",
"value": "48.19%"
},
{
"key": "01h:00m",
"value": "85.32%"
},
{
"key": "02h:00m",
"value": "92.51%"
},
{
"key": "04h:00m",
"value": "96.08%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 67
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "32m:44s",
"raw": 1964.3103448275863,
"friendly_no_business": "50m:47s",
"raw_no_business": 3047.5172413793102,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "41m:33s",
"raw": 2493.6666666666665,
"friendly_no_business": "49m:37s",
"raw_no_business": 2977.6666666666665,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
}
],
"messages.sent.forward": [
{
"name": "[email protected]",
"threads": {
"total": 89,
"internal": 13,
"inbound": 64,
"outbound": 12,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 10,
"have_replies": 81,
"have_initial_replies": 56
},
"messages": {
"sent": {
"count": 101,
"initial": 16,
"replies": 71,
"reply_all": 10,
"forward": 4,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 117,
"initial": 52,
"replies": 51,
"reply_all": 12,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "02h:15m",
"raw": 8101.83950617284,
"friendly_no_business": "07h:06m",
"raw_no_business": 25599.58024691358,
"percentileRanks": [
{
"key": "15m:00s",
"value": "36.73%"
},
{
"key": "01h:00m",
"value": "79.00%"
},
{
"key": "02h:00m",
"value": "81.98%"
},
{
"key": "04h:00m",
"value": "90.26%"
},
{
"key": "08h:00m",
"value": "92.27%"
},
{
"key": "24h:00m",
"value": "96.95%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 101
},
"overallTTF": {
"friendly": "06m:35s",
"raw": 395.75,
"friendly_no_business": "08m:19s",
"raw_no_business": 499.5
},
"initialTTR": {
"friendly": "01h:41m",
"raw": 6119.25,
"friendly_no_business": "05h:46m",
"raw_no_business": 20811.035714285714,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "01h:27m",
"raw": 5223.75,
"friendly_no_business": "01h:27m",
"raw_no_business": 5223.75,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
},
{
"name": "[email protected]",
"threads": {
"total": 59,
"internal": 13,
"inbound": 44,
"outbound": 2,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 6,
"have_replies": 56,
"have_initial_replies": 40
},
"messages": {
"sent": {
"count": 62,
"initial": 4,
"replies": 41,
"reply_all": 15,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 71,
"initial": 25,
"replies": 33,
"reply_all": 12,
"forward": 1,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "01h:26m",
"raw": 5172.553571428572,
"friendly_no_business": "03h:38m",
"raw_no_business": 13111.232142857143,
"percentileRanks": [
{
"key": "15m:00s",
"value": "41.90%"
},
{
"key": "01h:00m",
"value": "85.97%"
},
{
"key": "02h:00m",
"value": "87.60%"
},
{
"key": "04h:00m",
"value": "89.70%"
},
{
"key": "08h:00m",
"value": "94.84%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 62
},
"overallTTF": {
"friendly": "14m:25s",
"raw": 865.5,
"friendly_no_business": "14m:25s",
"raw_no_business": 865.5
},
"initialTTR": {
"friendly": "01h:07m",
"raw": 4054.7,
"friendly_no_business": "02h:36m",
"raw_no_business": 9364.575,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "13m:24s",
"raw": 804.5,
"friendly_no_business": "24m:40s",
"raw_no_business": 1480,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
}
],
"overallTTC.raw": [
{
"name": "[email protected]",
"threads": {
"total": 42,
"internal": 0,
"inbound": 42,
"outbound": 0,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 3,
"have_replies": 0,
"have_initial_replies": 0
},
"messages": {
"sent": {
"count": 0,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": null
},
"received": {
"count": 61,
"initial": 42,
"replies": 0,
"reply_all": 19,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 0
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "09m:01s",
"raw": 541.6666666666666,
"friendly_no_business": "24m:02s",
"raw_no_business": 1442.3333333333333,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
},
{
"name": "[email protected]",
"threads": {
"total": 59,
"internal": 13,
"inbound": 44,
"outbound": 2,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 6,
"have_replies": 56,
"have_initial_replies": 40
},
"messages": {
"sent": {
"count": 62,
"initial": 4,
"replies": 41,
"reply_all": 15,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 71,
"initial": 25,
"replies": 33,
"reply_all": 12,
"forward": 1,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "01h:26m",
"raw": 5172.553571428572,
"friendly_no_business": "03h:38m",
"raw_no_business": 13111.232142857143,
"percentileRanks": [
{
"key": "15m:00s",
"value": "41.90%"
},
{
"key": "01h:00m",
"value": "85.97%"
},
{
"key": "02h:00m",
"value": "87.60%"
},
{
"key": "04h:00m",
"value": "89.70%"
},
{
"key": "08h:00m",
"value": "94.84%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 62
},
"overallTTF": {
"friendly": "14m:25s",
"raw": 865.5,
"friendly_no_business": "14m:25s",
"raw_no_business": 865.5
},
"initialTTR": {
"friendly": "01h:07m",
"raw": 4054.7,
"friendly_no_business": "02h:36m",
"raw_no_business": 9364.575,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "13m:24s",
"raw": 804.5,
"friendly_no_business": "24m:40s",
"raw_no_business": 1480,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
}
],
"overallTTF.raw": [
{
"name": "[email protected]",
"threads": {
"total": 89,
"internal": 13,
"inbound": 64,
"outbound": 12,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 10,
"have_replies": 81,
"have_initial_replies": 56
},
"messages": {
"sent": {
"count": 101,
"initial": 16,
"replies": 71,
"reply_all": 10,
"forward": 4,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 117,
"initial": 52,
"replies": 51,
"reply_all": 12,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "02h:15m",
"raw": 8101.83950617284,
"friendly_no_business": "07h:06m",
"raw_no_business": 25599.58024691358,
"percentileRanks": [
{
"key": "15m:00s",
"value": "36.73%"
},
{
"key": "01h:00m",
"value": "79.00%"
},
{
"key": "02h:00m",
"value": "81.98%"
},
{
"key": "04h:00m",
"value": "90.26%"
},
{
"key": "08h:00m",
"value": "92.27%"
},
{
"key": "24h:00m",
"value": "96.95%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 101
},
"overallTTF": {
"friendly": "06m:35s",
"raw": 395.75,
"friendly_no_business": "08m:19s",
"raw_no_business": 499.5
},
"initialTTR": {
"friendly": "01h:41m",
"raw": 6119.25,
"friendly_no_business": "05h:46m",
"raw_no_business": 20811.035714285714,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "01h:27m",
"raw": 5223.75,
"friendly_no_business": "01h:27m",
"raw_no_business": 5223.75,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
},
{
"name": "[email protected]",
"threads": {
"total": 59,
"internal": 13,
"inbound": 44,
"outbound": 2,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 6,
"have_replies": 56,
"have_initial_replies": 40
},
"messages": {
"sent": {
"count": 62,
"initial": 4,
"replies": 41,
"reply_all": 15,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 71,
"initial": 25,
"replies": 33,
"reply_all": 12,
"forward": 1,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "01h:26m",
"raw": 5172.553571428572,
"friendly_no_business": "03h:38m",
"raw_no_business": 13111.232142857143,
"percentileRanks": [
{
"key": "15m:00s",
"value": "41.90%"
},
{
"key": "01h:00m",
"value": "85.97%"
},
{
"key": "02h:00m",
"value": "87.60%"
},
{
"key": "04h:00m",
"value": "89.70%"
},
{
"key": "08h:00m",
"value": "94.84%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 62
},
"overallTTF": {
"friendly": "14m:25s",
"raw": 865.5,
"friendly_no_business": "14m:25s",
"raw_no_business": 865.5
},
"initialTTR": {
"friendly": "01h:07m",
"raw": 4054.7,
"friendly_no_business": "02h:36m",
"raw_no_business": 9364.575,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "13m:24s",
"raw": 804.5,
"friendly_no_business": "24m:40s",
"raw_no_business": 1480,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
}
],
"overallTTR.raw": [
{
"name": "[email protected]",
"threads": {
"total": 58,
"internal": 11,
"inbound": 36,
"outbound": 11,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 8,
"have_replies": 50,
"have_initial_replies": 29
},
"messages": {
"sent": {
"count": 67,
"initial": 17,
"replies": 47,
"reply_all": 3,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 83,
"initial": 38,
"replies": 30,
"reply_all": 12,
"forward": 3,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "38m:55s",
"raw": 2335.62,
"friendly_no_business": "01h:10m",
"raw_no_business": 4201.78,
"percentileRanks": [
{
"key": "15m:00s",
"value": "48.19%"
},
{
"key": "01h:00m",
"value": "85.32%"
},
{
"key": "02h:00m",
"value": "92.51%"
},
{
"key": "04h:00m",
"value": "96.08%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 67
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "32m:44s",
"raw": 1964.3103448275863,
"friendly_no_business": "50m:47s",
"raw_no_business": 3047.5172413793102,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "41m:33s",
"raw": 2493.6666666666665,
"friendly_no_business": "49m:37s",
"raw_no_business": 2977.6666666666665,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
},
{
"name": "[email protected]",
"threads": {
"total": 59,
"internal": 13,
"inbound": 44,
"outbound": 2,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 6,
"have_replies": 56,
"have_initial_replies": 40
},
"messages": {
"sent": {
"count": 62,
"initial": 4,
"replies": 41,
"reply_all": 15,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 71,
"initial": 25,
"replies": 33,
"reply_all": 12,
"forward": 1,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "01h:26m",
"raw": 5172.553571428572,
"friendly_no_business": "03h:38m",
"raw_no_business": 13111.232142857143,
"percentileRanks": [
{
"key": "15m:00s",
"value": "41.90%"
},
{
"key": "01h:00m",
"value": "85.97%"
},
{
"key": "02h:00m",
"value": "87.60%"
},
{
"key": "04h:00m",
"value": "89.70%"
},
{
"key": "08h:00m",
"value": "94.84%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 62
},
"overallTTF": {
"friendly": "14m:25s",
"raw": 865.5,
"friendly_no_business": "14m:25s",
"raw_no_business": 865.5
},
"initialTTR": {
"friendly": "01h:07m",
"raw": 4054.7,
"friendly_no_business": "02h:36m",
"raw_no_business": 9364.575,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "13m:24s",
"raw": 804.5,
"friendly_no_business": "24m:40s",
"raw_no_business": 1480,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
}
],
"threads.total": [
{
"name": "[email protected]",
"threads": {
"total": 89,
"internal": 13,
"inbound": 64,
"outbound": 12,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 10,
"have_replies": 81,
"have_initial_replies": 56
},
"messages": {
"sent": {
"count": 101,
"initial": 16,
"replies": 71,
"reply_all": 10,
"forward": 4,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 117,
"initial": 52,
"replies": 51,
"reply_all": 12,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "02h:15m",
"raw": 8101.83950617284,
"friendly_no_business": "07h:06m",
"raw_no_business": 25599.58024691358,
"percentileRanks": [
{
"key": "15m:00s",
"value": "36.73%"
},
{
"key": "01h:00m",
"value": "79.00%"
},
{
"key": "02h:00m",
"value": "81.98%"
},
{
"key": "04h:00m",
"value": "90.26%"
},
{
"key": "08h:00m",
"value": "92.27%"
},
{
"key": "24h:00m",
"value": "96.95%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 101
},
"overallTTF": {
"friendly": "06m:35s",
"raw": 395.75,
"friendly_no_business": "08m:19s",
"raw_no_business": 499.5
},
"initialTTR": {
"friendly": "01h:41m",
"raw": 6119.25,
"friendly_no_business": "05h:46m",
"raw_no_business": 20811.035714285714,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "01h:27m",
"raw": 5223.75,
"friendly_no_business": "01h:27m",
"raw_no_business": 5223.75,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
},
{
"name": "[email protected]",
"threads": {
"total": 59,
"internal": 13,
"inbound": 44,
"outbound": 2,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 6,
"have_replies": 56,
"have_initial_replies": 40
},
"messages": {
"sent": {
"count": 62,
"initial": 4,
"replies": 41,
"reply_all": 15,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 71,
"initial": 25,
"replies": 33,
"reply_all": 12,
"forward": 1,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "01h:26m",
"raw": 5172.553571428572,
"friendly_no_business": "03h:38m",
"raw_no_business": 13111.232142857143,
"percentileRanks": [
{
"key": "15m:00s",
"value": "41.90%"
},
{
"key": "01h:00m",
"value": "85.97%"
},
{
"key": "02h:00m",
"value": "87.60%"
},
{
"key": "04h:00m",
"value": "89.70%"
},
{
"key": "08h:00m",
"value": "94.84%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 62
},
"overallTTF": {
"friendly": "14m:25s",
"raw": 865.5,
"friendly_no_business": "14m:25s",
"raw_no_business": 865.5
},
"initialTTR": {
"friendly": "01h:07m",
"raw": 4054.7,
"friendly_no_business": "02h:36m",
"raw_no_business": 9364.575,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "13m:24s",
"raw": 804.5,
"friendly_no_business": "24m:40s",
"raw_no_business": 1480,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
}
]
},
"pagination": {
"total": 5,
"page": 1
},
"args": {
"model": {
"icon": "building",
"id": null,
"model_type": "Internal",
"name": "My Company",
"value": "My Company"
},
"modelCom": {
"icon": "globe-americas",
"id": null,
"model_type": "Anybody",
"name": "Anybody",
"value": "Anybody"
}
}
}
Received response:
Request failed with error:
Contacts - Report
requires authentication
Contacts Report Data
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/reports/contact"
);
const params = {
"from": "2020-01-01",
"to": "2020-01-08",
"model": "My Company",
"model_type": "Internal",
"exclude_cc": "0",
"model_com": "Top Revenue Contacts",
"model_type_com": "Contact Group",
"exclude_cc_com": "0",
"exclusive": "0",
"label": "INBOX",
"thread_type": "inbound,outbound,internal",
"thread_status": "internal,await-customer,closed,await-agent",
"has_replies": "hasReplies,hasForwards,hasNoRepliesOrForwards",
"classification": "calculating,first,reply,reply-all,forward",
"messageType": "inbound,outbound,internal",
"replies_over": "15",
"message_replies_over": "15",
"no_reply_for": "15",
"page_emails": "1",
"per_page_emails": "2",
"direction_emails": "desc",
"sort_by_emails": "threads.total",
"page_domains": "1",
"per_page_domains": "2",
"direction_domains": "desc",
"sort_by_domains": "threads.total",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/reports/contact',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'from'=> '2020-01-01',
'to'=> '2020-01-08',
'model'=> 'My Company',
'model_type'=> 'Internal',
'exclude_cc'=> '0',
'model_com'=> 'Top Revenue Contacts',
'model_type_com'=> 'Contact Group',
'exclude_cc_com'=> '0',
'exclusive'=> '0',
'label'=> 'INBOX',
'thread_type'=> 'inbound,outbound,internal',
'thread_status'=> 'internal,await-customer,closed,await-agent',
'has_replies'=> 'hasReplies,hasForwards,hasNoRepliesOrForwards',
'classification'=> 'calculating,first,reply,reply-all,forward',
'messageType'=> 'inbound,outbound,internal',
'replies_over'=> '15',
'message_replies_over'=> '15',
'no_reply_for'=> '15',
'page_emails'=> '1',
'per_page_emails'=> '2',
'direction_emails'=> 'desc',
'sort_by_emails'=> 'threads.total',
'page_domains'=> '1',
'per_page_domains'=> '2',
'direction_domains'=> 'desc',
'sort_by_domains'=> 'threads.total',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/reports/contact?from=2020-01-01&to=2020-01-08&model=My+Company&model_type=Internal&exclude_cc=&model_com=Top+Revenue+Contacts&model_type_com=Contact+Group&exclude_cc_com=&exclusive=&label=INBOX&thread_type=inbound%2Coutbound%2Cinternal&thread_status=internal%2Cawait-customer%2Cclosed%2Cawait-agent&has_replies=hasReplies%2ChasForwards%2ChasNoRepliesOrForwards&classification=calculating%2Cfirst%2Creply%2Creply-all%2Cforward&messageType=inbound%2Coutbound%2Cinternal&replies_over=15&message_replies_over=15&no_reply_for=15&page_emails=1&per_page_emails=2&direction_emails=desc&sort_by_emails=threads.total&page_domains=1&per_page_domains=2&direction_domains=desc&sort_by_domains=threads.total" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"domains": {
"data": {
"current_page": 1,
"data": [
{
"name": "labadie.com",
"threads": {
"total": 5,
"internal": 0,
"inbound": 0,
"outbound": 0,
"sent_internally": 0,
"await_customer": 1,
"await_agent": 4,
"closed": 0,
"have_replies": 2,
"have_initial_replies": 1
},
"messages": {
"sent": {
"count": 5,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 6,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "10m:42s",
"raw": 642.5,
"friendly_no_business": "10m:42s",
"raw_no_business": 642.5,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 5
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "13m:26s",
"raw": 806,
"friendly_no_business": "13m:26s",
"raw_no_business": 806,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
},
{
"name": "bahringer.com",
"threads": {
"total": 2,
"internal": 0,
"inbound": 0,
"outbound": 0,
"sent_internally": 0,
"await_customer": 2,
"await_agent": 0,
"closed": 0,
"have_replies": 1,
"have_initial_replies": 0
},
"messages": {
"sent": {
"count": 3,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 1,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "54m:58s",
"raw": 3298,
"friendly_no_business": "16h:00m",
"raw_no_business": 57612,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 3
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
}
],
"first_page_url": "https://portal.timetoreply.com/api/reports/contact?page=1",
"from": 1,
"last_page": 193,
"last_page_url": "https://portal.timetoreply.com/api/reports/contact?page=193",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=3",
"label": "3",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=4",
"label": "4",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=5",
"label": "5",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=6",
"label": "6",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=7",
"label": "7",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=8",
"label": "8",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=9",
"label": "9",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=10",
"label": "10",
"active": false
},
{
"url": null,
"label": "...",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=192",
"label": "192",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=193",
"label": "193",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/reports/contact?page=2",
"path": "https://portal.timetoreply.com/api/reports/contact",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 386
},
"totals": {
"name": null,
"threads.total": 189,
"threads.await_customer": 68,
"threads.await_agent": 83,
"messages.received.count": 330,
"messages.sent.count": 234,
"overallTTR.friendly": "N/A",
"overallTTR.friendly_no_business": "N/A",
"initialTTR.friendly": "N/A",
"initialTTR.friendly_no_business": "N/A",
"overallTTC.friendly": "N/A",
"overallTTC.friendly_no_business": "N/A"
}
},
"emails": {
"data": {
"current_page": 1,
"data": [
{
"name": "[email protected]",
"threads": {
"total": 3,
"internal": 0,
"inbound": 0,
"outbound": 0,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 3,
"closed": 0,
"have_replies": 4,
"have_initial_replies": 3
},
"messages": {
"sent": {
"count": 4,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 7,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "19m:49s",
"raw": 1189.75,
"friendly_no_business": "23m:32s",
"raw_no_business": 1412,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 4
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "20m:30s",
"raw": 1230.6666666666667,
"friendly_no_business": "25m:27s",
"raw_no_business": 1527,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
},
{
"name": "[email protected]",
"threads": {
"total": 2,
"internal": 0,
"inbound": 0,
"outbound": 0,
"sent_internally": 0,
"await_customer": 2,
"await_agent": 0,
"closed": 0,
"have_replies": 1,
"have_initial_replies": 1
},
"messages": {
"sent": {
"count": 2,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 1,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "00s",
"raw": 0,
"friendly_no_business": "19m:36s",
"raw_no_business": 1176,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 2
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "00s",
"raw": 0,
"friendly_no_business": "19m:36s",
"raw_no_business": 1176,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
}
],
"first_page_url": "https://portal.timetoreply.com/api/reports/contact?page=1",
"from": 1,
"last_page": 237,
"last_page_url": "https://portal.timetoreply.com/api/reports/contact?page=237",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=3",
"label": "3",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=4",
"label": "4",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=5",
"label": "5",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=6",
"label": "6",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=7",
"label": "7",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=8",
"label": "8",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=9",
"label": "9",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=10",
"label": "10",
"active": false
},
{
"url": null,
"label": "...",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=236",
"label": "236",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=237",
"label": "237",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/contact?page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/reports/contact?page=2",
"path": "https://portal.timetoreply.com/api/reports/contact",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 473
},
"totals": {
"name": null,
"threads.total": 189,
"threads.await_customer": 68,
"threads.await_agent": 83,
"messages.received.count": 330,
"messages.sent.count": 234,
"overallTTR.friendly": "N/A",
"overallTTR.friendly_no_business": "N/A",
"initialTTR.friendly": "N/A",
"initialTTR.friendly_no_business": "N/A",
"overallTTC.friendly": "N/A",
"overallTTC.friendly_no_business": "N/A"
}
},
"columns": [
{
"field": "name",
"sortable": true,
"centered": false,
"label": "Email",
"visible": true,
"hasEmails": true,
"hasComparison": false,
"headerClass": "w-1/6"
},
{
"field": "threads.total",
"sortable": true,
"centered": false,
"label": "Total",
"visible": true,
"hasComparison": true,
"group": "Conversations"
},
{
"field": "threads.await_customer",
"sortable": true,
"centered": false,
"label": "Awaiting Contact Response",
"visible": false,
"hasComparison": true,
"group": "Conversations"
},
{
"field": "threads.await_agent",
"sortable": true,
"centered": false,
"label": "Awaiting Mailbox Response",
"visible": false,
"hasComparison": true,
"group": "Conversations"
},
{
"field": "messages.received.count",
"sortable": true,
"centered": false,
"label": "Total",
"visible": true,
"hasComparison": true,
"group": "Emails Received"
},
{
"field": "messages.sent.count",
"sortable": true,
"centered": false,
"label": "Total",
"visible": true,
"hasComparison": true,
"group": "Emails Sent"
},
{
"field": "overallTTR.friendly",
"sortable": true,
"centered": true,
"label": "Average",
"visible": true,
"hasComparison": false,
"hasGoals": true,
"group": "Overall Reply Time"
},
{
"field": "overallTTR.friendly_no_business",
"sortable": true,
"centered": true,
"label": "Average (no business hours)",
"visible": false,
"hasComparison": false,
"group": "Overall Reply Time"
},
{
"field": "initialTTR.friendly",
"sortable": true,
"centered": true,
"label": "Average",
"visible": true,
"hasComparison": false,
"hasGoals": true,
"group": "First Reply Time"
},
{
"field": "initialTTR.friendly_no_business",
"sortable": true,
"centered": true,
"label": "Average (no business hours)",
"visible": false,
"hasComparison": false,
"group": "First Reply Time"
},
{
"field": "overallTTC.friendly",
"sortable": true,
"centered": true,
"label": "Average",
"visible": false,
"tooltip": "Average time to close a conversation. Measured from the first message in a conversation to the last. Takes account of business hours",
"hasComparison": false,
"hasGoals": true,
"group": "Time To Close"
},
{
"field": "overallTTC.friendly_no_business",
"sortable": true,
"centered": true,
"label": "Average (no business hours)",
"visible": false,
"tooltip": "Average time to close a conversation. Measured from the first message in a conversation to the last. Ingores of business hours",
"hasComparison": false,
"group": "Time To Close"
}
]
}
Received response:
Request failed with error:
Group Mailboxes - Report
requires authentication
Group Mailboxes Report Data
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/reports/group-mailboxes"
);
const params = {
"from": "2020-01-01",
"to": "2020-01-08",
"model": "Support",
"model_type": "Group Mailbox",
"exclude_cc": "0",
"model_com": "Top Revenue Contacts",
"model_type_com": "Contact Group",
"exclude_cc_com": "0",
"exclusive": "0",
"label": "INBOX",
"thread_type": "inbound,outbound,internal",
"thread_status": "internal,await-customer,closed,await-agent",
"has_replies": "hasReplies,hasForwards,hasNoRepliesOrForwards",
"classification": "calculating,first,reply,reply-all,forward",
"messageType": "inbound,outbound,internal",
"replies_over": "15",
"message_replies_over": "15",
"no_reply_for": "15",
"per_page": "2",
"sort_by": "threads.total",
"direction": "desc",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/reports/group-mailboxes',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'from'=> '2020-01-01',
'to'=> '2020-01-08',
'model'=> 'Support',
'model_type'=> 'Group Mailbox',
'exclude_cc'=> '0',
'model_com'=> 'Top Revenue Contacts',
'model_type_com'=> 'Contact Group',
'exclude_cc_com'=> '0',
'exclusive'=> '0',
'label'=> 'INBOX',
'thread_type'=> 'inbound,outbound,internal',
'thread_status'=> 'internal,await-customer,closed,await-agent',
'has_replies'=> 'hasReplies,hasForwards,hasNoRepliesOrForwards',
'classification'=> 'calculating,first,reply,reply-all,forward',
'messageType'=> 'inbound,outbound,internal',
'replies_over'=> '15',
'message_replies_over'=> '15',
'no_reply_for'=> '15',
'per_page'=> '2',
'sort_by'=> 'threads.total',
'direction'=> 'desc',
'page'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/reports/group-mailboxes?from=2020-01-01&to=2020-01-08&model=Support&model_type=Group+Mailbox&exclude_cc=&model_com=Top+Revenue+Contacts&model_type_com=Contact+Group&exclude_cc_com=&exclusive=&label=INBOX&thread_type=inbound%2Coutbound%2Cinternal&thread_status=internal%2Cawait-customer%2Cclosed%2Cawait-agent&has_replies=hasReplies%2ChasForwards%2ChasNoRepliesOrForwards&classification=calculating%2Cfirst%2Creply%2Creply-all%2Cforward&messageType=inbound%2Coutbound%2Cinternal&replies_over=15&message_replies_over=15&no_reply_for=15&per_page=2&sort_by=threads.total&direction=desc&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"stats": {
"threads": {
"total": 42,
"internal": 0,
"inbound": 42,
"outbound": 0,
"sent_internally": 1,
"await_customer": 10,
"await_agent": 28,
"closed": 3,
"have_replies": 31,
"have_replies_from_agents": 31,
"completionRatio": {
"ratio": "71.43%",
"numerator": 30,
"denominator": 42
}
},
"messages": {
"count": 111,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"received": {
"count": 85,
"initial": 42,
"replies": 23,
"reply_all": 19,
"forward": 1,
"follow_up": 0,
"initial_replies": 0,
"dayOfWeek": {
"Monday": 0,
"Tuesday": 0,
"Wednesday": 0,
"Thursday": 0,
"Friday": 0,
"Saturday": 0,
"Sunday": 0
},
"hourOfDay": {
"00:00": 0,
"01:00": 0,
"02:00": 0,
"03:00": 0,
"04:00": 0,
"05:00": 0,
"06:00": 0,
"07:00": 0,
"08:00": 0,
"09:00": 0,
"10:00": 0,
"11:00": 0,
"12:00": 0,
"13:00": 0,
"14:00": 0,
"15:00": 0,
"16:00": 0,
"17:00": 0,
"18:00": 0,
"19:00": 0,
"20:00": 0,
"21:00": 0,
"22:00": 0,
"23:00": 0
}
},
"sent": {
"count": 41,
"initial": 0,
"replies": 27,
"reply_all": 13,
"forward": 1,
"follow_up": 0,
"initial_replies": 30,
"dayOfWeek": {
"Monday": 0,
"Tuesday": 0,
"Wednesday": 0,
"Thursday": 0,
"Friday": 0,
"Saturday": 0,
"Sunday": 0
},
"hourOfDay": {
"00:00": 0,
"01:00": 0,
"02:00": 0,
"03:00": 0,
"04:00": 0,
"05:00": 0,
"06:00": 0,
"07:00": 0,
"08:00": 0,
"09:00": 0,
"10:00": 0,
"11:00": 0,
"12:00": 0,
"13:00": 0,
"14:00": 0,
"15:00": 0,
"16:00": 0,
"17:00": 0,
"18:00": 0,
"19:00": 0,
"20:00": 0,
"21:00": 0,
"22:00": 0,
"23:00": 0
}
}
},
"overallTTR": {
"friendly": "44m:51s",
"raw": 2691.95,
"friendly_no_business": "01h:25m",
"raw_no_business": 5148.85,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 41
},
"initialTTR": {
"friendly": "48m:05s",
"raw": 2885.6666666666665,
"friendly_no_business": "01h:10m",
"raw_no_business": 4242.666666666667,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTF": {
"friendly": "21m:29s",
"raw": 1289,
"friendly_no_business": "21m:29s",
"raw_no_business": 1289
},
"overallTTC": {
"friendly": "09m:01s",
"raw": 541.6666666666666,
"friendly_no_business": "24m:02s",
"raw_no_business": 1442.3333333333333,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"dailyStats": []
},
"all_group_mailbox_stats": {
"current_page": 1,
"data": [
{
"threads": {
"total": 42,
"internal": 0,
"inbound": 42,
"outbound": 0,
"sent_internally": 1,
"await_customer": 10,
"await_agent": 28,
"closed": 3,
"have_replies": 31,
"have_replies_from_agents": 31,
"completionRatio": {
"ratio": "71.43%",
"numerator": 30,
"denominator": 42
}
},
"messages": {
"count": 111,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"received": {
"count": 85,
"initial": 42,
"replies": 23,
"reply_all": 19,
"forward": 1,
"follow_up": 0,
"initial_replies": 0,
"dayOfWeek": {
"Monday": 0,
"Tuesday": 0,
"Wednesday": 0,
"Thursday": 0,
"Friday": 0,
"Saturday": 0,
"Sunday": 0
},
"hourOfDay": {
"00:00": 0,
"01:00": 0,
"02:00": 0,
"03:00": 0,
"04:00": 0,
"05:00": 0,
"06:00": 0,
"07:00": 0,
"08:00": 0,
"09:00": 0,
"10:00": 0,
"11:00": 0,
"12:00": 0,
"13:00": 0,
"14:00": 0,
"15:00": 0,
"16:00": 0,
"17:00": 0,
"18:00": 0,
"19:00": 0,
"20:00": 0,
"21:00": 0,
"22:00": 0,
"23:00": 0
}
},
"sent": {
"count": 41,
"initial": 0,
"replies": 27,
"reply_all": 13,
"forward": 1,
"follow_up": 0,
"initial_replies": 30,
"dayOfWeek": {
"Monday": 0,
"Tuesday": 0,
"Wednesday": 0,
"Thursday": 0,
"Friday": 0,
"Saturday": 0,
"Sunday": 0
},
"hourOfDay": {
"00:00": 0,
"01:00": 0,
"02:00": 0,
"03:00": 0,
"04:00": 0,
"05:00": 0,
"06:00": 0,
"07:00": 0,
"08:00": 0,
"09:00": 0,
"10:00": 0,
"11:00": 0,
"12:00": 0,
"13:00": 0,
"14:00": 0,
"15:00": 0,
"16:00": 0,
"17:00": 0,
"18:00": 0,
"19:00": 0,
"20:00": 0,
"21:00": 0,
"22:00": 0,
"23:00": 0
}
}
},
"overallTTR": {
"friendly": "44m:51s",
"raw": 2691.95,
"friendly_no_business": "01h:25m",
"raw_no_business": 5148.85,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 41,
"goal_status": null,
"goal": null
},
"initialTTR": {
"friendly": "48m:05s",
"raw": 2885.6666666666665,
"friendly_no_business": "01h:10m",
"raw_no_business": 4242.666666666667,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"goal_status": null,
"goal": null
},
"overallTTF": {
"friendly": "21m:29s",
"raw": 1289,
"friendly_no_business": "21m:29s",
"raw_no_business": 1289
},
"overallTTC": {
"friendly": "09m:01s",
"raw": 541.6666666666666,
"friendly_no_business": "24m:02s",
"raw_no_business": 1442.3333333333333,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"goal_status": null,
"goal": null
},
"dailyStats": [],
"name": "Support",
"members": {
"current_page": 1,
"data": [
{
"name": "[email protected]",
"threads": {
"total": 42,
"internal": 0,
"inbound": 42,
"outbound": 0,
"sent_internally": 1,
"await_customer": 10,
"await_agent": 28,
"closed": 3,
"have_replies": 0,
"have_initial_replies": 0
},
"messages": {
"sent": {
"count": 0,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": null
},
"received": {
"count": 61,
"initial": 42,
"replies": 0,
"reply_all": 19,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 0,
"goal_status": null,
"goal": null
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"goal_status": null,
"goal": null
},
"overallTTC": {
"friendly": "09m:01s",
"raw": 541.6666666666666,
"friendly_no_business": "24m:02s",
"raw_no_business": 1442.3333333333333,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [
{
"key": "15m:00s",
"value": "100.00%"
},
{
"key": "01h:00m",
"value": "100.00%"
},
{
"key": "02h:00m",
"value": "100.00%"
},
{
"key": "04h:00m",
"value": "100.00%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "29.81%"
},
{
"key": "01h:00m",
"value": "100.00%"
},
{
"key": "02h:00m",
"value": "100.00%"
},
{
"key": "04h:00m",
"value": "100.00%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"goal_status": null,
"goal": null
}
},
{
"name": "[email protected]",
"threads": {
"total": 21,
"internal": 0,
"inbound": 21,
"outbound": 0,
"sent_internally": 1,
"await_customer": 4,
"await_agent": 13,
"closed": 3,
"have_replies": 23,
"have_initial_replies": 20
},
"messages": {
"sent": {
"count": 24,
"initial": 0,
"replies": 14,
"reply_all": 9,
"forward": 1,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 19,
"initial": 0,
"replies": 15,
"reply_all": 4,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "50m:31s",
"raw": 3031.478260869565,
"friendly_no_business": "01h:19m",
"raw_no_business": 4745.217391304348,
"percentileRanks": [
{
"key": "15m:00s",
"value": "28.98%"
},
{
"key": "01h:00m",
"value": "83.80%"
},
{
"key": "02h:00m",
"value": "87.35%"
},
{
"key": "04h:00m",
"value": "92.31%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "16.85%"
},
{
"key": "01h:00m",
"value": "83.27%"
},
{
"key": "02h:00m",
"value": "85.39%"
},
{
"key": "04h:00m",
"value": "89.38%"
},
{
"key": "08h:00m",
"value": "94.63%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"within_sla": 0,
"sla_breach": 24,
"goal_status": null,
"goal": null
},
"overallTTF": {
"friendly": "21m:29s",
"raw": 1289,
"friendly_no_business": "21m:29s",
"raw_no_business": 1289
},
"initialTTR": {
"friendly": "54m:53s",
"raw": 3293.6,
"friendly_no_business": "01h:27m",
"raw_no_business": 5264.4,
"percentileRanks": [
{
"key": "15m:00s",
"value": "32.09%"
},
{
"key": "01h:00m",
"value": "81.37%"
},
{
"key": "02h:00m",
"value": "85.45%"
},
{
"key": "04h:00m",
"value": "91.16%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "19.38%"
},
{
"key": "01h:00m",
"value": "80.76%"
},
{
"key": "02h:00m",
"value": "83.20%"
},
{
"key": "04h:00m",
"value": "87.79%"
},
{
"key": "08h:00m",
"value": "93.82%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"goal_status": null,
"goal": null
},
"overallTTC": {
"friendly": "09m:01s",
"raw": 541.6666666666666,
"friendly_no_business": "24m:02s",
"raw_no_business": 1442.3333333333333,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [
{
"key": "15m:00s",
"value": "100.00%"
},
{
"key": "01h:00m",
"value": "100.00%"
},
{
"key": "02h:00m",
"value": "100.00%"
},
{
"key": "04h:00m",
"value": "100.00%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "29.81%"
},
{
"key": "01h:00m",
"value": "100.00%"
},
{
"key": "02h:00m",
"value": "100.00%"
},
{
"key": "04h:00m",
"value": "100.00%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"goal_status": null,
"goal": null
}
},
{
"name": "[email protected]",
"threads": {
"total": 11,
"internal": 0,
"inbound": 11,
"outbound": 0,
"sent_internally": 1,
"await_customer": 6,
"await_agent": 4,
"closed": 0,
"have_replies": 17,
"have_initial_replies": 10
},
"messages": {
"sent": {
"count": 17,
"initial": 0,
"replies": 13,
"reply_all": 4,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 11,
"initial": 0,
"replies": 8,
"reply_all": 2,
"forward": 1,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "37m:12s",
"raw": 2232.5882352941176,
"friendly_no_business": "01h:34m",
"raw_no_business": 5694.941176470588,
"percentileRanks": [
{
"key": "15m:00s",
"value": "42.59%"
},
{
"key": "01h:00m",
"value": "84.65%"
},
{
"key": "02h:00m",
"value": "89.32%"
},
{
"key": "04h:00m",
"value": "100.00%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "36.71%"
},
{
"key": "01h:00m",
"value": "84.50%"
},
{
"key": "02h:00m",
"value": "88.38%"
},
{
"key": "04h:00m",
"value": "89.63%"
},
{
"key": "08h:00m",
"value": "92.14%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"within_sla": 0,
"sla_breach": 17,
"goal_status": null,
"goal": null
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "34m:29s",
"raw": 2069.8,
"friendly_no_business": "36m:39s",
"raw_no_business": 2199.2,
"percentileRanks": [
{
"key": "15m:00s",
"value": "30.48%"
},
{
"key": "01h:00m",
"value": "83.90%"
},
{
"key": "02h:00m",
"value": "100.00%"
},
{
"key": "04h:00m",
"value": "100.00%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "30.48%"
},
{
"key": "01h:00m",
"value": "83.64%"
},
{
"key": "02h:00m",
"value": "100.00%"
},
{
"key": "04h:00m",
"value": "100.00%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"goal_status": null,
"goal": null
},
"overallTTC": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [
{
"key": "15m:00s",
"value": "0.00%"
},
{
"key": "01h:00m",
"value": "0.00%"
},
{
"key": "02h:00m",
"value": "0.00%"
},
{
"key": "04h:00m",
"value": "0.00%"
},
{
"key": "08h:00m",
"value": "0.00%"
},
{
"key": "24h:00m",
"value": "0.00%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "0.00%"
},
{
"key": "01h:00m",
"value": "0.00%"
},
{
"key": "02h:00m",
"value": "0.00%"
},
{
"key": "04h:00m",
"value": "0.00%"
},
{
"key": "08h:00m",
"value": "0.00%"
},
{
"key": "24h:00m",
"value": "0.00%"
}
],
"goal_status": null,
"goal": null
}
}
],
"first_page_url": "https://portal.timetoreply.com/api/reports/group-mailboxes?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/reports/group-mailboxes?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/group-mailboxes?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://portal.timetoreply.com/api/reports/group-mailboxes",
"per_page": 15,
"prev_page_url": null,
"to": 3,
"total": 3
}
}
],
"first_page_url": "/?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "/?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "/?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "/",
"per_page": 2,
"prev_page_url": null,
"to": 1,
"total": 1
},
"args": {
"model": {
"model_type": "Group Mailbox"
},
"modelCom": {
"icon": "globe-americas",
"id": null,
"model_type": "Anybody",
"name": "Anybody",
"value": "Anybody"
}
}
}
Received response:
Request failed with error:
Interactions - Report
requires authentication
Interactions Report Data
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/reports/interactions"
);
const params = {
"from": "2020-01-01",
"to": "2020-01-08",
"model": "My Company",
"model_type": "Internal",
"exclude_cc": "0",
"model_com": "Top Revenue Contacts",
"model_type_com": "Contact Group",
"exclude_cc_com": "0",
"exclusive": "0",
"label": "INBOX",
"thread_type": "inbound,outbound,internal",
"thread_status": "internal,await-customer,closed,await-agent",
"has_replies": "hasReplies,hasForwards,hasNoRepliesOrForwards",
"classification": "calculating,first,reply,reply-all,forward",
"messageType": "inbound,outbound,internal",
"replies_over": "15",
"message_replies_over": "15",
"no_reply_for": "15",
"per_page": "2",
"direction": "desc",
"page": "1",
"agentOne": "Joe Blogs",
"agentTwo": "Jane Doe",
"agentThree": "Peter Rabbit",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/reports/interactions',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'from'=> '2020-01-01',
'to'=> '2020-01-08',
'model'=> 'My Company',
'model_type'=> 'Internal',
'exclude_cc'=> '0',
'model_com'=> 'Top Revenue Contacts',
'model_type_com'=> 'Contact Group',
'exclude_cc_com'=> '0',
'exclusive'=> '0',
'label'=> 'INBOX',
'thread_type'=> 'inbound,outbound,internal',
'thread_status'=> 'internal,await-customer,closed,await-agent',
'has_replies'=> 'hasReplies,hasForwards,hasNoRepliesOrForwards',
'classification'=> 'calculating,first,reply,reply-all,forward',
'messageType'=> 'inbound,outbound,internal',
'replies_over'=> '15',
'message_replies_over'=> '15',
'no_reply_for'=> '15',
'per_page'=> '2',
'direction'=> 'desc',
'page'=> '1',
'agentOne'=> 'Joe Blogs',
'agentTwo'=> 'Jane Doe',
'agentThree'=> 'Peter Rabbit',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/reports/interactions?from=2020-01-01&to=2020-01-08&model=My+Company&model_type=Internal&exclude_cc=&model_com=Top+Revenue+Contacts&model_type_com=Contact+Group&exclude_cc_com=&exclusive=&label=INBOX&thread_type=inbound%2Coutbound%2Cinternal&thread_status=internal%2Cawait-customer%2Cclosed%2Cawait-agent&has_replies=hasReplies%2ChasForwards%2ChasNoRepliesOrForwards&classification=calculating%2Cfirst%2Creply%2Creply-all%2Cforward&messageType=inbound%2Coutbound%2Cinternal&replies_over=15&message_replies_over=15&no_reply_for=15&per_page=2&direction=desc&page=1&agentOne=Joe+Blogs&agentTwo=Jane+Doe&agentThree=Peter+Rabbit" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"Ewell Raynor": {
"interactions": {},
"agent": {
"id": 2,
"name": "Ewell Raynor",
"email_usernames": {
"0": "[email protected]"
},
"model_type": "Mailbox",
"icon": "user-plus",
"key": 0
}
}
}
Received response:
Request failed with error:
Overview - Report
requires authentication
Overview Report Data
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/reports/overview"
);
const params = {
"from": "2020-01-01",
"to": "2020-01-08",
"model": "timetoreply.com",
"model_type": "Contact",
"exclude_cc": "0",
"model_com": "Top Revenue Contacts",
"model_type_com": "Contact Group",
"exclude_cc_com": "0",
"exclusive": "0",
"label": "INBOX",
"thread_type": "inbound,outbound,internal",
"thread_status": "internal,await-customer,closed,await-agent",
"has_replies": "hasReplies,hasForwards,hasNoRepliesOrForwards",
"classification": "calculating,first,reply,reply-all,forward",
"messageType": "inbound,outbound,internal",
"replies_over": "15",
"message_replies_over": "15",
"no_reply_for": "15",
"sort_by": "threads.total",
"direction": "desc",
"per_page_agents": "2",
"page_agents": "1",
"per_page_contacts": "2",
"page_contacts": "1",
"per_page_domains": "2",
"page_domains": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/reports/overview',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'from'=> '2020-01-01',
'to'=> '2020-01-08',
'model'=> 'timetoreply.com',
'model_type'=> 'Contact',
'exclude_cc'=> '0',
'model_com'=> 'Top Revenue Contacts',
'model_type_com'=> 'Contact Group',
'exclude_cc_com'=> '0',
'exclusive'=> '0',
'label'=> 'INBOX',
'thread_type'=> 'inbound,outbound,internal',
'thread_status'=> 'internal,await-customer,closed,await-agent',
'has_replies'=> 'hasReplies,hasForwards,hasNoRepliesOrForwards',
'classification'=> 'calculating,first,reply,reply-all,forward',
'messageType'=> 'inbound,outbound,internal',
'replies_over'=> '15',
'message_replies_over'=> '15',
'no_reply_for'=> '15',
'sort_by'=> 'threads.total',
'direction'=> 'desc',
'per_page_agents'=> '2',
'page_agents'=> '1',
'per_page_contacts'=> '2',
'page_contacts'=> '1',
'per_page_domains'=> '2',
'page_domains'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/reports/overview?from=2020-01-01&to=2020-01-08&model=timetoreply.com&model_type=Contact&exclude_cc=&model_com=Top+Revenue+Contacts&model_type_com=Contact+Group&exclude_cc_com=&exclusive=&label=INBOX&thread_type=inbound%2Coutbound%2Cinternal&thread_status=internal%2Cawait-customer%2Cclosed%2Cawait-agent&has_replies=hasReplies%2ChasForwards%2ChasNoRepliesOrForwards&classification=calculating%2Cfirst%2Creply%2Creply-all%2Cforward&messageType=inbound%2Coutbound%2Cinternal&replies_over=15&message_replies_over=15&no_reply_for=15&sort_by=threads.total&direction=desc&per_page_agents=2&page_agents=1&per_page_contacts=2&page_contacts=1&per_page_domains=2&page_domains=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"stats": {
"threads": {
"total": 189,
"internal": 14,
"inbound": 150,
"outbound": 25,
"sent_internally": 18,
"await_customer": 68,
"await_agent": 83,
"closed": 20,
"have_replies": 148,
"have_replies_from_agents": 141,
"completionRatio": {
"ratio": "500.00%",
"numerator": 125,
"denominator": 25
}
},
"messages": {
"count": 488,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"received": {
"count": 322,
"initial": 159,
"replies": 114,
"reply_all": 43,
"forward": 6,
"follow_up": 0,
"initial_replies": 0,
"dayOfWeek": {
"Monday": 71,
"Tuesday": 29.5,
"Wednesday": 64,
"Thursday": 62,
"Friday": 63,
"Saturday": 1,
"Sunday": 2
},
"hourOfDay": {
"00:00": 0,
"01:00": 0.125,
"02:00": 0.125,
"03:00": 0,
"04:00": 0,
"05:00": 0,
"06:00": 0,
"07:00": 0,
"08:00": 0,
"09:00": 1.875,
"10:00": 4.125,
"11:00": 5.625,
"12:00": 5.375,
"13:00": 3.75,
"14:00": 3.75,
"15:00": 4.875,
"16:00": 5,
"17:00": 5,
"18:00": 0.125,
"19:00": 0.25,
"20:00": 0,
"21:00": 0.125,
"22:00": 0,
"23:00": 0.125
}
},
"sent": {
"count": 230,
"initial": 37,
"replies": 159,
"reply_all": 28,
"forward": 6,
"follow_up": 0,
"initial_replies": 125,
"dayOfWeek": {
"Monday": 58,
"Tuesday": 41,
"Wednesday": 38,
"Thursday": 46,
"Friday": 46,
"Saturday": 0,
"Sunday": 1
},
"hourOfDay": {
"00:00": 0,
"01:00": 0.125,
"02:00": 0.125,
"03:00": 0,
"04:00": 0,
"05:00": 0,
"06:00": 0,
"07:00": 0,
"08:00": 0,
"09:00": 0.75,
"10:00": 3.25,
"11:00": 3.25,
"12:00": 3.625,
"13:00": 3.25,
"14:00": 2.875,
"15:00": 3.25,
"16:00": 3.875,
"17:00": 4,
"18:00": 0,
"19:00": 0.125,
"20:00": 0,
"21:00": 0,
"22:00": 0,
"23:00": 0.25
}
}
},
"overallTTR": {
"friendly": "01h:34m",
"raw": 5682.850267379679,
"friendly_no_business": "04h:28m",
"raw_no_business": 16138.417112299465,
"percentileRanks": [
{
"key": "15m:00s",
"value": "41.48%"
},
{
"key": "01h:00m",
"value": "82.88%"
},
{
"key": "02h:00m",
"value": "86.59%"
},
{
"key": "04h:00m",
"value": "92.00%"
},
{
"key": "08h:00m",
"value": "95.15%"
},
{
"key": "24h:00m",
"value": "98.65%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "34.93%"
},
{
"key": "01h:00m",
"value": "82.35%"
},
{
"key": "02h:00m",
"value": "84.92%"
},
{
"key": "04h:00m",
"value": "88.92%"
},
{
"key": "08h:00m",
"value": "91.06%"
},
{
"key": "24h:00m",
"value": "94.61%"
}
],
"within_sla": 0,
"sla_breach": 230
},
"initialTTR": {
"friendly": "01h:14m",
"raw": 4494.648,
"friendly_no_business": "03h:37m",
"raw_no_business": 13027.032,
"percentileRanks": [
{
"key": "15m:00s",
"value": "39.65%"
},
{
"key": "01h:00m",
"value": "83.99%"
},
{
"key": "02h:00m",
"value": "88.74%"
},
{
"key": "04h:00m",
"value": "92.84%"
},
{
"key": "08h:00m",
"value": "96.48%"
},
{
"key": "24h:00m",
"value": "99.13%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "33.05%"
},
{
"key": "01h:00m",
"value": "83.99%"
},
{
"key": "02h:00m",
"value": "87.09%"
},
{
"key": "04h:00m",
"value": "89.95%"
},
{
"key": "08h:00m",
"value": "93.03%"
},
{
"key": "24h:00m",
"value": "95.83%"
}
],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTF": {
"friendly": "09m:12s",
"raw": 552.3333333333334,
"friendly_no_business": "10m:21s",
"raw_no_business": 621.5
},
"overallTTC": {
"friendly": "58m:19s",
"raw": 3499.266666666667,
"friendly_no_business": "01h:02m",
"raw_no_business": 3776.2,
"percentileRanks": [
{
"key": "15m:00s",
"value": "20.43%"
},
{
"key": "01h:00m",
"value": "69.59%"
},
{
"key": "02h:00m",
"value": "83.86%"
},
{
"key": "04h:00m",
"value": "100.00%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "7.43%"
},
{
"key": "01h:00m",
"value": "69.59%"
},
{
"key": "02h:00m",
"value": "83.86%"
},
{
"key": "04h:00m",
"value": "100.00%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"dailyStats": [
{
"timestamp": 1640649600000,
"date": "Tue, 28th Dec",
"messages": {
"sent": 41,
"forward": 0,
"reply": 31,
"received": 58
},
"overallTTR": {
"raw": 3659.7419354838707,
"raw_no_business": 5772.290322580645
},
"overallTTF": {
"raw": null,
"raw_no_business": null
},
"initialTTR": {
"raw": 4739.8421052631575,
"raw_no_business": 8022.894736842105
},
"threads": {
"total": 31,
"have_replies_from_agents": 12,
"no_reply_from_agents": 0,
"completionRatio": 38.71
}
},
{
"timestamp": 1640736000000,
"date": "Wed, 29th Dec",
"messages": {
"sent": 38,
"forward": 4,
"reply": 30,
"received": 64
},
"overallTTR": {
"raw": 5237.266666666666,
"raw_no_business": 14795.5
},
"overallTTF": {
"raw": 506.25,
"raw_no_business": 506.25
},
"initialTTR": {
"raw": 4110.55,
"raw_no_business": 9972.2
},
"threads": {
"total": 35,
"have_replies_from_agents": 11,
"no_reply_from_agents": 0,
"completionRatio": 31.43
}
},
{
"timestamp": 1640822400000,
"date": "Thu, 30th Dec",
"messages": {
"sent": 46,
"forward": 0,
"reply": 38,
"received": 62
},
"overallTTR": {
"raw": 11168.368421052632,
"raw_no_business": 28443.92105263158
},
"overallTTF": {
"raw": null,
"raw_no_business": null
},
"initialTTR": {
"raw": 8303.095238095239,
"raw_no_business": 17975.333333333332
},
"threads": {
"total": 37,
"have_replies_from_agents": 16,
"no_reply_from_agents": 0,
"completionRatio": 43.24
}
},
{
"timestamp": 1640908800000,
"date": "Fri, 31st Dec",
"messages": {
"sent": 46,
"forward": 1,
"reply": 36,
"received": 63
},
"overallTTR": {
"raw": 5002.055555555556,
"raw_no_business": 13029.666666666666
},
"overallTTF": {
"raw": 1289,
"raw_no_business": 1289
},
"initialTTR": {
"raw": 2055.896551724138,
"raw_no_business": 3079.862068965517
},
"threads": {
"total": 40,
"have_replies_from_agents": 16,
"no_reply_from_agents": 0,
"completionRatio": 40
}
},
{
"timestamp": 1640995200000,
"date": "Sat, 1st Jan",
"messages": {
"sent": 0,
"forward": 0,
"reply": 0,
"received": 1
},
"overallTTR": {
"raw": null,
"raw_no_business": null
},
"overallTTF": {
"raw": null,
"raw_no_business": null
},
"initialTTR": {
"raw": null,
"raw_no_business": null
},
"threads": {
"total": 1,
"have_replies_from_agents": 0,
"no_reply_from_agents": 0,
"completionRatio": 0
}
},
{
"timestamp": 1641081600000,
"date": "Sun, 2nd Jan",
"messages": {
"sent": 1,
"forward": 0,
"reply": 0,
"received": 2
},
"overallTTR": {
"raw": null,
"raw_no_business": null
},
"overallTTF": {
"raw": null,
"raw_no_business": null
},
"initialTTR": {
"raw": null,
"raw_no_business": null
},
"threads": {
"total": 0,
"have_replies_from_agents": 0,
"no_reply_from_agents": 0,
"completionRatio": 0
}
},
{
"timestamp": 1641168000000,
"date": "Mon, 3rd Jan",
"messages": {
"sent": 58,
"forward": 1,
"reply": 52,
"received": 71
},
"overallTTR": {
"raw": 3608.673076923077,
"raw_no_business": 16252.711538461539
},
"overallTTF": {
"raw": 0,
"raw_no_business": 415
},
"initialTTR": {
"raw": 4321.583333333333,
"raw_no_business": 22491.722222222223
},
"threads": {
"total": 44,
"have_replies_from_agents": 26,
"no_reply_from_agents": 0,
"completionRatio": 59.09
}
},
{
"timestamp": 1641254400000,
"date": "Tue, 4th Jan",
"messages": {
"sent": 0,
"forward": 0,
"reply": 0,
"received": 1
},
"overallTTR": {
"raw": null,
"raw_no_business": null
},
"overallTTF": {
"raw": null,
"raw_no_business": null
},
"initialTTR": {
"raw": null,
"raw_no_business": null
},
"threads": {
"total": 1,
"have_replies_from_agents": 0,
"no_reply_from_agents": 0,
"completionRatio": 0
}
}
]
},
"all_agent_stats": {
"maxima": {
"name": "Total",
"threads.total": 189,
"threads.internal": 14,
"threads.inbound": 150,
"threads.outbound": 25,
"threads.sent_internally": 18,
"threads.await_customer": 68,
"threads.await_agent": 83,
"threads.closed": 20,
"threads.have_replies": 148,
"messages.received.count": 322,
"messages.received.initial": 159,
"messages.received.replies": 114,
"messages.received.reply_all": 43,
"messages.received.forward": 6,
"messages.received.follow_up": 0,
"messages.sent.count": 230,
"messages.sent.initial": 37,
"messages.sent.replies": 159,
"messages.sent.reply_all": 28,
"messages.sent.forward": 6,
"messages.sent.follow_up": 0,
"overallTTR.friendly": "01h:34m",
"overallTTR.friendly_no_business": "04h:28m",
"overallTTR.within_sla": 0,
"overallTTR.sla_breach": 230,
"initialTTR.friendly": "01h:14m",
"initialTTR.friendly_no_business": "03h:37m",
"initialTTR.within_sla": 0,
"initialTTR.sla_breach": 0,
"initialTTR.closed_within_sla": 0,
"initialTTR.closed_sla_breach": 0,
"initialTTR.in_progress_within_sla": 0,
"initialTTR.in_progress_sla_breach": 0,
"initialTTR.unhandled_within_sla": 0,
"initialTTR.unhandled_sla_breach": 0,
"overallTTC.friendly": "58m:19s",
"overallTTC.friendly_no_business": "01h:02m",
"overallTTC.within_sla": 0,
"overallTTC.sla_breach": 0,
"overallTTC.closed_within_sla": 0,
"overallTTC.closed_sla_breach": 0,
"overallTTC.in_progress_within_sla": 0,
"overallTTC.in_progress_sla_breach": 0,
"overallTTC.unhandled_within_sla": 0,
"overallTTC.unhandled_sla_breach": 0,
"overallTTF.friendly": "09m:12s",
"overallTTF.friendly_no_business": "10m:21s"
},
"data": {
"current_page": 1,
"data": [
{
"name": "[email protected]",
"threads": {
"total": 89,
"internal": 13,
"inbound": 64,
"outbound": 12,
"sent_internally": 17,
"await_customer": 31,
"await_agent": 31,
"closed": 10,
"have_replies": 81,
"have_initial_replies": 56
},
"messages": {
"sent": {
"count": 101,
"initial": 16,
"replies": 71,
"reply_all": 10,
"forward": 4,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 117,
"initial": 52,
"replies": 51,
"reply_all": 12,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "02h:15m",
"raw": 8101.83950617284,
"friendly_no_business": "07h:06m",
"raw_no_business": 25599.58024691358,
"percentileRanks": [
{
"key": "15m:00s",
"value": "36.73%"
},
{
"key": "01h:00m",
"value": "79.00%"
},
{
"key": "02h:00m",
"value": "81.98%"
},
{
"key": "04h:00m",
"value": "90.26%"
},
{
"key": "08h:00m",
"value": "92.27%"
},
{
"key": "24h:00m",
"value": "96.95%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "31.79%"
},
{
"key": "01h:00m",
"value": "77.77%"
},
{
"key": "02h:00m",
"value": "79.23%"
},
{
"key": "04h:00m",
"value": "86.47%"
},
{
"key": "08h:00m",
"value": "87.39%"
},
{
"key": "24h:00m",
"value": "91.29%"
}
],
"within_sla": 0,
"sla_breach": 101
},
"overallTTF": {
"friendly": "06m:35s",
"raw": 395.75,
"friendly_no_business": "08m:19s",
"raw_no_business": 499.5
},
"initialTTR": {
"friendly": "01h:41m",
"raw": 6119.25,
"friendly_no_business": "05h:46m",
"raw_no_business": 20811.035714285714,
"percentileRanks": [
{
"key": "15m:00s",
"value": "37.05%"
},
{
"key": "01h:00m",
"value": "82.14%"
},
{
"key": "02h:00m",
"value": "86.42%"
},
{
"key": "04h:00m",
"value": "91.63%"
},
{
"key": "08h:00m",
"value": "94.17%"
},
{
"key": "24h:00m",
"value": "98.09%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "33.48%"
},
{
"key": "01h:00m",
"value": "82.14%"
},
{
"key": "02h:00m",
"value": "84.21%"
},
{
"key": "04h:00m",
"value": "89.36%"
},
{
"key": "08h:00m",
"value": "90.69%"
},
{
"key": "24h:00m",
"value": "93.01%"
}
],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "01h:27m",
"raw": 5223.75,
"friendly_no_business": "01h:27m",
"raw_no_business": 5223.75,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [
{
"key": "15m:00s",
"value": "0.00%"
},
{
"key": "01h:00m",
"value": "55.48%"
},
{
"key": "02h:00m",
"value": "72.18%"
},
{
"key": "04h:00m",
"value": "100.00%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "0.00%"
},
{
"key": "01h:00m",
"value": "55.48%"
},
{
"key": "02h:00m",
"value": "72.18%"
},
{
"key": "04h:00m",
"value": "100.00%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
]
}
},
{
"name": "[email protected]",
"threads": {
"total": 59,
"internal": 13,
"inbound": 44,
"outbound": 2,
"sent_internally": 14,
"await_customer": 15,
"await_agent": 24,
"closed": 6,
"have_replies": 56,
"have_initial_replies": 40
},
"messages": {
"sent": {
"count": 62,
"initial": 4,
"replies": 41,
"reply_all": 15,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 71,
"initial": 25,
"replies": 33,
"reply_all": 12,
"forward": 1,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "01h:26m",
"raw": 5172.553571428572,
"friendly_no_business": "03h:38m",
"raw_no_business": 13111.232142857143,
"percentileRanks": [
{
"key": "15m:00s",
"value": "41.90%"
},
{
"key": "01h:00m",
"value": "85.97%"
},
{
"key": "02h:00m",
"value": "87.60%"
},
{
"key": "04h:00m",
"value": "89.70%"
},
{
"key": "08h:00m",
"value": "94.84%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "37.31%"
},
{
"key": "01h:00m",
"value": "85.85%"
},
{
"key": "02h:00m",
"value": "86.76%"
},
{
"key": "04h:00m",
"value": "88.47%"
},
{
"key": "08h:00m",
"value": "90.65%"
},
{
"key": "24h:00m",
"value": "94.72%"
}
],
"within_sla": 0,
"sla_breach": 62
},
"overallTTF": {
"friendly": "14m:25s",
"raw": 865.5,
"friendly_no_business": "14m:25s",
"raw_no_business": 865.5
},
"initialTTR": {
"friendly": "01h:07m",
"raw": 4054.7,
"friendly_no_business": "02h:36m",
"raw_no_business": 9364.575,
"percentileRanks": [
{
"key": "15m:00s",
"value": "41.47%"
},
{
"key": "01h:00m",
"value": "85.35%"
},
{
"key": "02h:00m",
"value": "87.64%"
},
{
"key": "04h:00m",
"value": "90.58%"
},
{
"key": "08h:00m",
"value": "96.14%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "34.73%"
},
{
"key": "01h:00m",
"value": "85.19%"
},
{
"key": "02h:00m",
"value": "86.47%"
},
{
"key": "04h:00m",
"value": "88.86%"
},
{
"key": "08h:00m",
"value": "91.91%"
},
{
"key": "24h:00m",
"value": "95.96%"
}
],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "13m:24s",
"raw": 804.5,
"friendly_no_business": "24m:40s",
"raw_no_business": 1480,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [
{
"key": "15m:00s",
"value": "53.18%"
},
{
"key": "01h:00m",
"value": "100.00%"
},
{
"key": "02h:00m",
"value": "100.00%"
},
{
"key": "04h:00m",
"value": "100.00%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "22.63%"
},
{
"key": "01h:00m",
"value": "100.00%"
},
{
"key": "02h:00m",
"value": "100.00%"
},
{
"key": "04h:00m",
"value": "100.00%"
},
{
"key": "08h:00m",
"value": "100.00%"
},
{
"key": "24h:00m",
"value": "100.00%"
}
]
}
}
],
"first_page_url": "https://portal.timetoreply.com/api/reports/overview?page=1",
"from": 1,
"last_page": 3,
"last_page_url": "https://portal.timetoreply.com/api/reports/overview?page=3",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/overview?page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/reports/overview?page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/overview?page=3",
"label": "3",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/overview?page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/reports/overview?page=2",
"path": "https://portal.timetoreply.com/api/reports/overview",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 6
}
},
"all_domain_stats": {
"maxima": [],
"data": {
"current_page": 1,
"data": [
{
"name": "timetoreply.com",
"threads": {
"total": 189,
"internal": 14,
"inbound": 150,
"outbound": 25,
"sent_internally": 18,
"await_customer": 68,
"await_agent": 83,
"closed": 20,
"have_replies": 187,
"have_initial_replies": 125
},
"messages": {
"sent": {
"count": 230,
"initial": 37,
"replies": 159,
"reply_all": 28,
"forward": 6,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 322,
"initial": 159,
"replies": 114,
"reply_all": 43,
"forward": 6,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "01h:34m",
"raw": 5682.850267379679,
"friendly_no_business": "04h:28m",
"raw_no_business": 16138.417112299465,
"percentileRanks": [
{
"key": "15m:00s",
"value": "41.48%"
},
{
"key": "01h:00m",
"value": "82.88%"
},
{
"key": "02h:00m",
"value": "86.59%"
},
{
"key": "04h:00m",
"value": "92.00%"
},
{
"key": "08h:00m",
"value": "95.15%"
},
{
"key": "24h:00m",
"value": "98.65%"
}
],
"percentileRanksRaw": [
{
"key": "15m:00s",
"value": "34.93%"
},
{
"key": "01h:00m",
"value": "82.35%"
},
{
"key": "02h:00m",
"value": "84.92%"
},
{
"key": "04h:00m",
"value": "88.92%"
},
{
"key": "08h:00m",
"value": "91.06%"
},
{
"key": "24h:00m",
"value": "94.61%"
}
],
"within_sla": 0,
"sla_breach": 230
},
"overallTTF": {
"friendly": "09m:12s",
"raw": 552.3333333333334,
"friendly_no_business": "10m:21s",
"raw_no_business": 621.5
},
"initialTTR": {
"friendly": "01h:14m",
"raw": 4494.648,
"friendly_no_business": "03h:37m",
"raw_no_business": 13027.032,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "58m:19s",
"raw": 3499.266666666667,
"friendly_no_business": "01h:02m",
"raw_no_business": 3776.2,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
}
],
"first_page_url": "https://portal.timetoreply.com/api/reports/overview?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/reports/overview?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/overview?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://portal.timetoreply.com/api/reports/overview",
"per_page": 2,
"prev_page_url": null,
"to": 1,
"total": 1
}
},
"all_customer_stats": {
"maxima": [],
"data": {
"current_page": 1,
"data": [],
"first_page_url": "https://portal.timetoreply.com/api/reports/overview?page=1",
"from": null,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/reports/overview?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/reports/overview?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://portal.timetoreply.com/api/reports/overview",
"per_page": 2,
"prev_page_url": null,
"to": null,
"total": 0
}
},
"args": {
"model": {
"id": null,
"name": "timetoreply.com",
"email_usernames": [
"timetoreply.com"
],
"model_type": "Contact",
"icon": "user"
},
"modelCom": {
"icon": "globe-americas",
"id": null,
"model_type": "Anybody",
"name": "Anybody",
"value": "Anybody"
}
}
}
Received response:
Request failed with error:
Productivity - Report
requires authentication
Productivity Report Data
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/reports/productivity"
);
const params = {
"date": "2020-01-01",
"model": "My Company",
"model_type": "Internal",
"model_com": "Top Revenue Contacts",
"model_type_com": "Contact Group",
"label": "INBOX",
"per_page": "2",
"sort_by": "threads.total",
"direction": "desc",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/reports/productivity',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'date'=> '2020-01-01',
'model'=> 'My Company',
'model_type'=> 'Internal',
'model_com'=> 'Top Revenue Contacts',
'model_type_com'=> 'Contact Group',
'label'=> 'INBOX',
'per_page'=> '2',
'sort_by'=> 'threads.total',
'direction'=> 'desc',
'page'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/reports/productivity?date=2020-01-01&model=My+Company&model_type=Internal&model_com=Top+Revenue+Contacts&model_type_com=Contact+Group&label=INBOX&per_page=2&sort_by=threads.total&direction=desc&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"email_volumes": {
"columns": [
{
"field": "name",
"label": "Mailbox",
"sortable": true,
"visible": true,
"subheading": "Overall:",
"meta": {
"hasEmails": true,
"tooltip": "These are the email accounts you're currently tracking."
},
"headerClass": "has-tooltip"
},
{
"field": "messages_received_count",
"label": "Emails Received",
"sortable": true,
"visible": true,
"subheading": "0",
"meta": {
"hasSpark": true,
"tooltip": "The total number of emails received for this period, regardless of business hours."
},
"headerClass": "has-tooltip"
},
{
"field": "messages_sent_count",
"label": "Emails Sent",
"sortable": true,
"visible": true,
"subheading": "0",
"meta": {
"hasSpark": true,
"tooltip": "The total number of emails sent for the period regardless of business hours."
},
"headerClass": "has-tooltip"
},
{
"field": "messages_sent_replies_percent",
"label": "% Replies Sent",
"sortable": true,
"visible": true,
"subheading": "0 (0.00%)",
"meta": {
"tooltip": "The percentage of sent emails that were replies, regardless of business hours."
},
"headerClass": "has-tooltip"
},
{
"field": "messages_sent_initial_percent",
"label": "% New Emails Sent",
"sortable": true,
"visible": true,
"subheading": "0 (0.00%)",
"meta": {
"tooltip": "The percentage of sent emails that were new emails (i.e. not a reply or a forward) regardless of business hours."
},
"headerClass": "has-tooltip"
},
{
"field": "messages_sent_forwards_percent",
"label": "% Forwards Sent",
"sortable": true,
"visible": true,
"subheading": "0 (0.00%)",
"meta": {
"tooltip": "The percentage of sent emails that were emails that were forwards regardless of business hours."
},
"headerClass": "has-tooltip"
},
{
"field": "messages_sent_follow_ups_percent",
"label": "% Follow-Ups Sent",
"sortable": true,
"visible": true,
"subheading": "0 (0.00%)",
"meta": {
"tooltip": "The percentage of sent emails that were emails that were follow-ups regardless of business hours."
},
"headerClass": "has-tooltip"
}
],
"data": [
{
"name": "[email protected]",
"messages_received_count": {
"display": "0",
"spark": {
"Tue 24th Dec": 0,
"Wed 25th Dec": 0,
"Thu 26th Dec": 0,
"Fri 27th Dec": 0,
"Sat 28th Dec": 0,
"Sun 29th Dec": 0,
"Mon 30th Dec": 0,
"Tue 31st Dec": 0,
"Wed 1st Jan": 0
}
},
"messages_sent_count": {
"display": "0",
"spark": {
"Tue 24th Dec": 0,
"Wed 25th Dec": 0,
"Thu 26th Dec": 0,
"Fri 27th Dec": 0,
"Sat 28th Dec": 0,
"Sun 29th Dec": 0,
"Mon 30th Dec": 0,
"Tue 31st Dec": 0,
"Wed 1st Jan": 0
}
},
"messages_sent_replies_percent": "0 (0.00%)",
"messages_sent_initial_percent": "0 (0.00%)",
"messages_sent_forwards_percent": "0 (0.00%)",
"messages_sent_follow_ups_percent": "0 (0.00%)"
},
{
"name": "[email protected]",
"messages_received_count": {
"display": "0",
"spark": {
"Tue 24th Dec": 0,
"Wed 25th Dec": 0,
"Thu 26th Dec": 0,
"Fri 27th Dec": 0,
"Sat 28th Dec": 0,
"Sun 29th Dec": 0,
"Mon 30th Dec": 0,
"Tue 31st Dec": 0,
"Wed 1st Jan": 0
}
},
"messages_sent_count": {
"display": "0",
"spark": {
"Tue 24th Dec": 0,
"Wed 25th Dec": 0,
"Thu 26th Dec": 0,
"Fri 27th Dec": 0,
"Sat 28th Dec": 0,
"Sun 29th Dec": 0,
"Mon 30th Dec": 0,
"Tue 31st Dec": 0,
"Wed 1st Jan": 0
}
},
"messages_sent_replies_percent": "0 (0.00%)",
"messages_sent_initial_percent": "0 (0.00%)",
"messages_sent_forwards_percent": "0 (0.00%)",
"messages_sent_follow_ups_percent": "0 (0.00%)"
}
],
"default_sort": [
"messages_sent_count",
"desc"
],
"default_sort_direction": "desc",
"loading": false,
"per_page": 2,
"total": 5,
"page": 1
},
"activity": {
"columns": [
{
"field": "name",
"label": "Mailbox",
"sortable": true,
"visible": true,
"subheading": "Overall:",
"meta": {
"hasEmails": true,
"tooltip": "These are the email accounts you're currently tracking."
},
"headerClass": "has-tooltip"
},
{
"field": "first_activity",
"label": "Time of First Activity",
"sortable": true,
"visible": true,
"meta": {
"tooltip": "The time that the first email was sent by the mailbox on the date you are viewing for the report. (uses the mailbox's own timezone if available)"
},
"headerClass": "has-tooltip"
},
{
"field": "last_activity",
"label": "Time of Last Activity",
"sortable": true,
"visible": true,
"meta": {
"tooltip": "The time that the last email was sent by the mailbox on the date you are viewing for the report. (uses the mailbox's own timezone if available)"
},
"headerClass": "has-tooltip"
},
{
"field": "in_business_hours",
"label": "Sent Within Business Hours",
"sortable": true,
"visible": true,
"meta": {
"tooltip": "The total number of emails that were sent during business hours for the date you are viewing the report. (uses the mailbox's own timezone if available)"
},
"headerClass": "has-tooltip"
},
{
"field": "out_business_hours",
"label": "Sent Outside Business Hours",
"sortable": true,
"visible": true,
"meta": {
"tooltip": "The total number of emails that were sent outside business hours for the date you are viewing the report. (uses the mailbox's own timezone if available)"
},
"headerClass": "has-tooltip"
},
{
"field": "received_per_hour",
"label": "Average Emails Received Per Hour",
"sortable": true,
"visible": true,
"subheading": "0",
"meta": {
"tooltip": "The average number of emails that were received by the mailbox per hour (ignoring business hours) for the date you are viewing the report."
},
"headerClass": "has-tooltip"
},
{
"field": "sent_per_hour",
"label": "Average Emails Sent Per Hour",
"sortable": true,
"visible": true,
"subheading": "0",
"meta": {
"tooltip": "The average number of emails that were sent by the mailbox per hour (ignoring business hours) for the date you are viewing the report."
},
"headerClass": "has-tooltip"
}
],
"data": [
{
"name": "[email protected]",
"first_activity": "N/A",
"last_activity": "N/A",
"in_business_hours": "0 (0.00%)",
"out_business_hours": "0 (0.00%)",
"received_per_hour": "0",
"sent_per_hour": "0"
},
{
"name": "[email protected]",
"first_activity": "N/A",
"last_activity": "N/A",
"in_business_hours": "0 (0.00%)",
"out_business_hours": "0 (0.00%)",
"received_per_hour": "0",
"sent_per_hour": "0"
}
],
"default_sort": [
"first_activity",
"asc"
],
"default_sort_direction": "desc",
"loading": false,
"per_page": 2,
"total": 5,
"page": 1
},
"conversations": {
"columns": [
{
"field": "name",
"label": "Mailbox",
"sortable": true,
"visible": true,
"subheading": "Overall:",
"meta": {
"hasEmails": true,
"tooltip": "These are the email accounts you're currently tracking."
},
"headerClass": "has-tooltip"
},
{
"field": "threads_count",
"label": "Conversations",
"sortable": true,
"visible": true,
"subheading": "0",
"meta": {
"tooltip": "The total number of conversations (or email threads) that each mailbox was part of for the date range you are viewing. A conversation is a group of emails received and sent that all form part of the same thread."
},
"headerClass": "has-tooltip"
},
{
"field": "threads_inbound",
"label": "Inbound Conversations",
"sortable": true,
"visible": true,
"subheading": "0 (0.00%)",
"meta": {
"tooltip": "The number of conversations that were started by someone outside of your company, i.e. the first email in the conversation was from someone outside of your company."
},
"headerClass": "has-tooltip"
},
{
"field": "threads_outbound",
"label": "Outbound Conversations",
"sortable": true,
"visible": true,
"subheading": "0 (0.00%)",
"meta": {
"tooltip": "The number of conversations that were started by someone in your company, i.e. the first email in the conversation was from someone inside of your company to someone external to your company."
},
"headerClass": "has-tooltip"
},
{
"field": "threads_internal",
"label": "Internal Conversations",
"sortable": true,
"visible": true,
"subheading": "0 (0.00%)",
"meta": {
"tooltip": "The number of conversations where all participants have been in your company."
},
"headerClass": "has-tooltip"
},
{
"field": "threads_await_agent",
"label": "Conversations waiting for a reply",
"sortable": true,
"visible": true,
"subheading": "0 (0.00%)",
"meta": {
"tooltip": "The last email was from someone external, so the ball's in your court to reply. For better accuracy, this should be used in conjunction with our \"close conversations\" function that allows you to mark conversations that have been completed or no longer require a reply as \"closed\"."
},
"headerClass": "has-tooltip",
"cellClass": "has-background-white-ter"
},
{
"field": "threads_closed",
"label": "Conversations closed",
"sortable": true,
"visible": true,
"subheading": "0 (0.00%)",
"meta": {
"tooltip": "The number of conversations that the mailbox that you are viewing has been part of that have been marked as \"closed\" using our \"close conversations\" functionality. You can find this under TOOLS > SETTINGS > COMPANY > CLOSE CONVERSATION SETTINGS"
},
"headerClass": "has-tooltip",
"cellClass": "has-background-white-ter"
}
],
"data": [
{
"name": "[email protected]",
"threads_count": "0",
"threads_inbound": "0 (0.00%)",
"threads_outbound": "0 (0.00%)",
"threads_internal": "0 (0.00%)",
"threads_await_agent": "0 (0.00%)",
"threads_closed": "0 (0.00%)"
},
{
"name": "[email protected]",
"threads_count": "0",
"threads_inbound": "0 (0.00%)",
"threads_outbound": "0 (0.00%)",
"threads_internal": "0 (0.00%)",
"threads_await_agent": "0 (0.00%)",
"threads_closed": "0 (0.00%)"
}
],
"default_sort": [
"threads_count",
"desc"
],
"default_sort_direction": "desc",
"loading": false,
"per_page": 2,
"total": 5,
"page": 1
},
"average_reply_times": {
"columns": [
{
"field": "name",
"label": "Mailbox",
"sortable": true,
"visible": true,
"subheading": "Overall:",
"meta": {
"hasEmails": true,
"tooltip": "These are the email accounts you're currently tracking."
},
"headerClass": "has-tooltip"
},
{
"field": "initialTTR7Days",
"label": "7 day avg. First Reply Time",
"centered": true,
"sortable": true,
"visible": true,
"subheading": "N/A",
"meta": {
"tooltip": "This is your average First Reply time for the last 7 days prior to the date you have selected for the report."
},
"headerClass": "has-tooltip"
},
{
"field": "initialTTR",
"label": "Current avg. First Reply Time",
"centered": true,
"sortable": true,
"visible": true,
"subheading": "N/A",
"meta": {
"hasComparison": true,
"tooltip": "The average First Reply Time is the average time it takes to reply to the first email in a new email conversation. It only looks at the first reply that goes back to the conversation starter, the first \"from\". This average takes business hours into account and only calculates the time that has elapsed during business hours when calculating the average."
},
"headerClass": "has-tooltip"
},
{
"field": "overallTTR7Days",
"label": "7 days avg. Overall Reply Time",
"centered": true,
"sortable": true,
"visible": true,
"subheading": "N/A",
"meta": {
"tooltip": "This is your average overall reply time for the last 7 days prior to the date you have selected for this report."
},
"headerClass": "has-tooltip"
},
{
"field": "overallTTR",
"label": "Current avg. Overall Reply Time",
"centered": true,
"sortable": true,
"visible": true,
"subheading": "N/A",
"meta": {
"hasComparison": true,
"tooltip": "The average Overall Reply Time is the average time it takes to reply to any email. First and all subsequent replies are included in the avg. Overall Reply Time. This average takes business hours into account, and only calculates the time that has elapsed during business hours when calculating the average."
},
"headerClass": "has-tooltip"
}
],
"data": [
{
"name": "[email protected]",
"initialTTR7Days": "N/A",
"initialTTR": {
"display": "N/A",
"comparison": {
"value": "N/A",
"improved": true,
"separatedColumns": true
}
},
"overallTTR7Days": "N/A",
"overallTTR": {
"display": "N/A",
"comparison": {
"value": "N/A",
"improved": true,
"separatedColumns": true
}
}
},
{
"name": "[email protected]",
"initialTTR7Days": "N/A",
"initialTTR": {
"display": "N/A",
"comparison": {
"value": "N/A",
"improved": true,
"separatedColumns": true
}
},
"overallTTR7Days": "N/A",
"overallTTR": {
"display": "N/A",
"comparison": {
"value": "N/A",
"improved": true,
"separatedColumns": true
}
}
}
],
"default_sort": [
"initialTTR",
"asc"
],
"default_sort_direction": "asc",
"loading": false,
"per_page": 2,
"total": 5,
"page": 1
},
"responsiveness": {
"columns": [
{
"field": "name",
"label": "Mailbox",
"sortable": true,
"visible": true,
"subheading": "Overall:",
"meta": {
"hasEmails": true,
"tooltip": "These are the email accounts you're currently tracking."
},
"headerClass": "has-tooltip"
},
{
"field": "replies_count",
"label": "Replies Sent",
"sortable": true,
"visible": true,
"subheading": "0",
"meta": {
"tooltip": "The total replies that were sent (used to calculate reply times), regardless of business hours."
},
"headerClass": "has-tooltip"
},
{
"field": "replies_under_900",
"label": "Replies under 15m:00s",
"sortable": true,
"visible": true,
"subheading": "0.00%",
"meta": {
"tooltip": "Percentage of replies that happened in under 15m:00s (takes business hours into account)"
},
"headerClass": "has-tooltip"
},
{
"field": "replies_under_3600",
"label": "Replies under 01h:00m",
"sortable": true,
"visible": true,
"subheading": "0.00%",
"meta": {
"tooltip": "Percentage of replies that happened in under 01h:00m (takes business hours into account)"
},
"headerClass": "has-tooltip"
},
{
"field": "replies_under_7200",
"label": "Replies under 02h:00m",
"sortable": true,
"visible": true,
"subheading": "0.00%",
"meta": {
"tooltip": "Percentage of replies that happened in under 02h:00m (takes business hours into account)"
},
"headerClass": "has-tooltip"
},
{
"field": "replies_under_14400",
"label": "Replies under 04h:00m",
"sortable": true,
"visible": true,
"subheading": "0.00%",
"meta": {
"tooltip": "Percentage of replies that happened in under 04h:00m (takes business hours into account)"
},
"headerClass": "has-tooltip"
},
{
"field": "replies_under_28800",
"label": "Replies under 08h:00m",
"sortable": true,
"visible": true,
"subheading": "0.00%",
"meta": {
"tooltip": "Percentage of replies that happened in under 08h:00m (takes business hours into account)"
},
"headerClass": "has-tooltip"
},
{
"field": "replies_under_86400",
"label": "Replies under 24h:00m",
"sortable": true,
"visible": true,
"subheading": "0.00%",
"meta": {
"tooltip": "Percentage of replies that happened in under 24h:00m (takes business hours into account)"
},
"headerClass": "has-tooltip"
}
],
"data": [
{
"name": "[email protected]",
"replies_count": "0",
"replies_under_900": "0.00%",
"replies_under_3600": "0.00%",
"replies_under_7200": "0.00%",
"replies_under_14400": "0.00%",
"replies_under_28800": "0.00%",
"replies_under_86400": "0.00%"
},
{
"name": "[email protected]",
"replies_count": "0",
"replies_under_900": "0.00%",
"replies_under_3600": "0.00%",
"replies_under_7200": "0.00%",
"replies_under_14400": "0.00%",
"replies_under_28800": "0.00%",
"replies_under_86400": "0.00%"
}
],
"default_sort": [
"replies_under_900",
"desc"
],
"default_sort_direction": "desc",
"loading": false,
"per_page": 2,
"total": 5,
"page": 1
},
"stats": {
"messages": {
"received": {
"hourOfDay": []
},
"sent": {
"hourOfDay": []
}
}
},
"page": 1,
"total": 5,
"args": {
"model": {
"icon": "building",
"id": null,
"model_type": "Internal",
"name": "My Company",
"value": "My Company"
},
"modelCom": {
"icon": "globe-americas",
"id": null,
"model_type": "Anybody",
"name": "Anybody",
"value": "Anybody"
}
}
}
Received response:
Request failed with error:
Ratio - Report
requires authentication
Ratio Report Data
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/reports/ratio"
);
const params = {
"from": "2020-01-01",
"to": "2020-01-08",
"model": "My Company",
"model_type": "Internal",
"exclude_cc": "0",
"model_com": "Top Revenue Contacts",
"model_type_com": "Contact Group",
"exclude_cc_com": "0",
"exclusive": "0",
"label": "INBOX",
"thread_type": "inbound",
"thread_status": "internal,await-customer,closed,await-agent",
"has_replies": "hasReplies,hasForwards,hasNoRepliesOrForwards",
"classification": "calculating,first,reply,reply-all,forward",
"messageType": "inbound,outbound,internal",
"replies_over": "15",
"message_replies_over": "15",
"no_reply_for": "15",
"per_page": "2",
"sort_by": "threads.total",
"direction": "desc",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/reports/ratio',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'from'=> '2020-01-01',
'to'=> '2020-01-08',
'model'=> 'My Company',
'model_type'=> 'Internal',
'exclude_cc'=> '0',
'model_com'=> 'Top Revenue Contacts',
'model_type_com'=> 'Contact Group',
'exclude_cc_com'=> '0',
'exclusive'=> '0',
'label'=> 'INBOX',
'thread_type'=> 'inbound',
'thread_status'=> 'internal,await-customer,closed,await-agent',
'has_replies'=> 'hasReplies,hasForwards,hasNoRepliesOrForwards',
'classification'=> 'calculating,first,reply,reply-all,forward',
'messageType'=> 'inbound,outbound,internal',
'replies_over'=> '15',
'message_replies_over'=> '15',
'no_reply_for'=> '15',
'per_page'=> '2',
'sort_by'=> 'threads.total',
'direction'=> 'desc',
'page'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/reports/ratio?from=2020-01-01&to=2020-01-08&model=My+Company&model_type=Internal&exclude_cc=&model_com=Top+Revenue+Contacts&model_type_com=Contact+Group&exclude_cc_com=&exclusive=&label=INBOX&thread_type=inbound&thread_status=internal%2Cawait-customer%2Cclosed%2Cawait-agent&has_replies=hasReplies%2ChasForwards%2ChasNoRepliesOrForwards&classification=calculating%2Cfirst%2Creply%2Creply-all%2Cforward&messageType=inbound%2Coutbound%2Cinternal&replies_over=15&message_replies_over=15&no_reply_for=15&per_page=2&sort_by=threads.total&direction=desc&page=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"stats": {
"threads": {
"total": 189,
"internal": 0,
"inbound": 150,
"outbound": 0,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 0,
"have_replies": 0,
"have_replies_from_agents": 141,
"completionRatio": {
"ratio": "83.33%",
"numerator": 125,
"denominator": 150
}
},
"messages": {
"count": 488,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"received": {
"count": 322,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dayOfWeek": {
"Monday": 71,
"Tuesday": 29.5,
"Wednesday": 64,
"Thursday": 62,
"Friday": 63,
"Saturday": 1,
"Sunday": 2
},
"hourOfDay": {
"00:00": 0,
"01:00": 0,
"02:00": 0,
"03:00": 0,
"04:00": 0,
"05:00": 0,
"06:00": 0,
"07:00": 0,
"08:00": 0,
"09:00": 0,
"10:00": 0,
"11:00": 0,
"12:00": 0,
"13:00": 0,
"14:00": 0,
"15:00": 0,
"16:00": 0,
"17:00": 0,
"18:00": 0,
"19:00": 0,
"20:00": 0,
"21:00": 0,
"22:00": 0,
"23:00": 0
}
},
"sent": {
"count": 230,
"initial": 0,
"replies": 159,
"reply_all": 28,
"forward": 6,
"follow_up": 0,
"initial_replies": 125,
"dayOfWeek": {
"Monday": 58,
"Tuesday": 41,
"Wednesday": 38,
"Thursday": 46,
"Friday": 46,
"Saturday": 0,
"Sunday": 1
},
"hourOfDay": {
"00:00": 0,
"01:00": 0,
"02:00": 0,
"03:00": 0,
"04:00": 0,
"05:00": 0,
"06:00": 0,
"07:00": 0,
"08:00": 0,
"09:00": 0,
"10:00": 0,
"11:00": 0,
"12:00": 0,
"13:00": 0,
"14:00": 0,
"15:00": 0,
"16:00": 0,
"17:00": 0,
"18:00": 0,
"19:00": 0,
"20:00": 0,
"21:00": 0,
"22:00": 0,
"23:00": 0
}
}
},
"overallTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 230
},
"initialTTR": {
"friendly": "01h:14m",
"raw": 4494.648,
"friendly_no_business": "03h:37m",
"raw_no_business": 13027.032,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"overallTTC": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"dailyStats": [
{
"timestamp": 1640649600000,
"date": "Tue, 28th Dec",
"messages": {
"sent": 41,
"forward": 0,
"reply": 31,
"received": 58
},
"overallTTR": {
"raw": null,
"raw_no_business": null
},
"overallTTF": {
"raw": null,
"raw_no_business": null
},
"initialTTR": {
"raw": 4739.8421052631575,
"raw_no_business": 8022.894736842105,
"ttr_ratio": 0.61
},
"threads": {
"total": 31,
"have_replies_from_agents": 12,
"no_reply_from_agents": 0,
"completionRatio": 38.71,
"haveCustomerSuccess": 15,
"have_initial_replies_from_agents": 21
}
},
{
"timestamp": 1640736000000,
"date": "Wed, 29th Dec",
"messages": {
"sent": 38,
"forward": 4,
"reply": 30,
"received": 64
},
"overallTTR": {
"raw": null,
"raw_no_business": null
},
"overallTTF": {
"raw": null,
"raw_no_business": null
},
"initialTTR": {
"raw": 4110.55,
"raw_no_business": 9972.2,
"ttr_ratio": 0.63
},
"threads": {
"total": 35,
"have_replies_from_agents": 11,
"no_reply_from_agents": 0,
"completionRatio": 31.43,
"haveCustomerSuccess": 15,
"have_initial_replies_from_agents": 20
}
},
{
"timestamp": 1640822400000,
"date": "Thu, 30th Dec",
"messages": {
"sent": 46,
"forward": 0,
"reply": 38,
"received": 62
},
"overallTTR": {
"raw": null,
"raw_no_business": null
},
"overallTTF": {
"raw": null,
"raw_no_business": null
},
"initialTTR": {
"raw": 8303.095238095239,
"raw_no_business": 17975.333333333332,
"ttr_ratio": 0.39
},
"threads": {
"total": 37,
"have_replies_from_agents": 16,
"no_reply_from_agents": 0,
"completionRatio": 43.24,
"haveCustomerSuccess": 20,
"have_initial_replies_from_agents": 24
}
},
{
"timestamp": 1640908800000,
"date": "Fri, 31st Dec",
"messages": {
"sent": 46,
"forward": 1,
"reply": 36,
"received": 63
},
"overallTTR": {
"raw": null,
"raw_no_business": null
},
"overallTTF": {
"raw": null,
"raw_no_business": null
},
"initialTTR": {
"raw": 2055.896551724138,
"raw_no_business": 3079.862068965517,
"ttr_ratio": 1.02
},
"threads": {
"total": 40,
"have_replies_from_agents": 16,
"no_reply_from_agents": 0,
"completionRatio": 40,
"haveCustomerSuccess": 14,
"have_initial_replies_from_agents": 24
}
},
{
"timestamp": 1640995200000,
"date": "Sat, 1st Jan",
"messages": {
"sent": 0,
"forward": 0,
"reply": 0,
"received": 1
},
"overallTTR": {
"raw": null,
"raw_no_business": null
},
"overallTTF": {
"raw": null,
"raw_no_business": null
},
"initialTTR": {
"raw": null,
"raw_no_business": null,
"ttr_ratio": 0
},
"threads": {
"total": 1,
"have_replies_from_agents": 0,
"no_reply_from_agents": 0,
"completionRatio": 0,
"haveCustomerSuccess": 0,
"have_initial_replies_from_agents": 0
}
},
{
"timestamp": 1641081600000,
"date": "Sun, 2nd Jan",
"messages": {
"sent": 1,
"forward": 0,
"reply": 0,
"received": 2
},
"overallTTR": {
"raw": null,
"raw_no_business": null
},
"overallTTF": {
"raw": null,
"raw_no_business": null
},
"initialTTR": {
"raw": null,
"raw_no_business": null,
"ttr_ratio": 0
},
"threads": {
"total": 0,
"have_replies_from_agents": 0,
"no_reply_from_agents": 0,
"completionRatio": 0,
"haveCustomerSuccess": 0,
"have_initial_replies_from_agents": 0
}
},
{
"timestamp": 1641168000000,
"date": "Mon, 3rd Jan",
"messages": {
"sent": 58,
"forward": 1,
"reply": 52,
"received": 71
},
"overallTTR": {
"raw": null,
"raw_no_business": null
},
"overallTTF": {
"raw": null,
"raw_no_business": null
},
"initialTTR": {
"raw": 4321.583333333333,
"raw_no_business": 22491.722222222223,
"ttr_ratio": 0.66
},
"threads": {
"total": 44,
"have_replies_from_agents": 26,
"no_reply_from_agents": 0,
"completionRatio": 59.09,
"haveCustomerSuccess": 21,
"have_initial_replies_from_agents": 36
}
},
{
"timestamp": 1641254400000,
"date": "Tue, 4th Jan",
"messages": {
"sent": 0,
"forward": 0,
"reply": 0,
"received": 1
},
"overallTTR": {
"raw": null,
"raw_no_business": null
},
"overallTTF": {
"raw": null,
"raw_no_business": null
},
"initialTTR": {
"raw": null,
"raw_no_business": null,
"ttr_ratio": 0
},
"threads": {
"total": 1,
"have_replies_from_agents": 0,
"no_reply_from_agents": 0,
"completionRatio": 0,
"haveCustomerSuccess": 0,
"have_initial_replies_from_agents": 0
}
}
]
},
"all_agent_stats": {
"current_page": 1,
"data": [
{
"name": "[email protected]",
"threads": {
"total": 89,
"internal": 0,
"inbound": 64,
"outbound": 0,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 31,
"closed": 10,
"have_replies": 81,
"have_initial_replies": 56,
"have_contact_success": 38,
"success_rate": 59.38,
"ttr_ratio": 0.58,
"initial_reply_rate": 62.92,
"success_time": 12917.578947368422,
"success_time_friendly": "03h:35m",
"have_initial_reply_rate": 87.5
},
"messages": {
"sent": {
"count": 0,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": null
},
"received": {
"count": 0,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": null
}
},
"overallTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 0
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "01h:41m",
"raw": 6119.25,
"friendly_no_business": "05h:46m",
"raw_no_business": 20811.035714285714,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "01h:27m",
"raw": 5223.75,
"friendly_no_business": "N/A",
"raw_no_business": null,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
},
{
"name": "[email protected]",
"threads": {
"total": 59,
"internal": 0,
"inbound": 44,
"outbound": 0,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 24,
"closed": 6,
"have_replies": 56,
"have_initial_replies": 40,
"have_contact_success": 26,
"success_rate": 59.09,
"ttr_ratio": 0.87,
"initial_reply_rate": 67.8,
"success_time": 14520.653846153846,
"success_time_friendly": "04h:02m",
"have_initial_reply_rate": 90.91
},
"messages": {
"sent": {
"count": 0,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": null
},
"received": {
"count": 0,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": null
}
},
"overallTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 0
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "01h:07m",
"raw": 4054.7,
"friendly_no_business": "02h:36m",
"raw_no_business": 9364.575,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0
},
"overallTTC": {
"friendly": "13m:24s",
"raw": 804.5,
"friendly_no_business": "N/A",
"raw_no_business": null,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 0,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 0,
"within_sla": 0,
"sla_breach": 0,
"percentileRanks": [],
"percentileRanksRaw": []
}
}
],
"first_page_url": "/?page=1",
"from": 1,
"last_page": 3,
"last_page_url": "/?page=3",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "/?page=1",
"label": "1",
"active": true
},
{
"url": "/?page=2",
"label": "2",
"active": false
},
{
"url": "/?page=3",
"label": "3",
"active": false
},
{
"url": "/?page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "/?page=2",
"path": "/",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 5
},
"maxima": {
"threads.inbound": 64,
"threads.ttr_ratio": 0.87,
"threads.have_initial_replies": 56,
"threads.initial_reply_rate": 67.8,
"threads.have_contact_success": 38,
"threads.success_rate": 59.38,
"threads.await_agent": 31,
"threads.closed": 10
},
"overall": {
"total": 150,
"have_initial_reply": 125,
"success": 85,
"avg_convo_length": 3.49,
"have_initial_reply_rate": 83.33,
"success_rate": 56.67,
"success_time": 12025,
"success_time_friendly": "03h:20m",
"customer_reply_time": 5966,
"customer_reply_time_friendly": "01h:39m",
"avg_initial_reply_time": 4494.648,
"avg_initial_reply_time_friendly": "01h:14m",
"ttr_ratio": 0.76
},
"contact_rate_data": {
"total": [
49,
56,
11,
5,
4
],
"have_initial_reply": [
49,
56,
11,
5,
4
],
"success": [
27,
41,
8,
5,
4
],
"avg_convo_length": [
3.59,
3.49,
3.5,
3.2,
3.25
],
"have_initial_reply_rate": [
100,
100,
100,
100,
100
],
"success_rate": [
55.1,
73.21,
72.73,
100,
100
],
"success_time": [
8578,
3855,
27191,
19090,
79873
],
"success_time_friendly": [
"02h:22m",
"01h:04m",
"07h:33m",
"05h:18m",
"22h:11m"
],
"customer_reply_time": [
8205,
2297,
18463,
1205,
9426
],
"customer_reply_time_friendly": [
"02h:16m",
"38m:17s",
"05h:07m",
"20m:05s",
"02h:37m"
],
"avg_initial_reply_time": [
424.57142857142856,
1539.4285714285713,
7600.454545454545,
17885,
70447.25
],
"avg_initial_reply_time_friendly": [
"07m:04s",
"25m:39s",
"02h:06m",
"04h:58m",
"19h:34m"
],
"ttr_ratio": [
7.79,
2.85,
0.57,
0.34,
0.09
]
},
"page": 1,
"ttr_categories": [
"< 15m",
"15m - 1h",
"1h - 4h",
"4h - 8h",
"> 8h"
],
"args": {
"model": {
"icon": "building",
"id": null,
"model_type": "Internal",
"name": "My Company",
"value": "My Company"
},
"modelCom": {
"icon": "globe-americas",
"id": null,
"model_type": "Anybody",
"name": "Anybody",
"value": "Anybody"
}
}
}
Received response:
Request failed with error:
SLA - Report
requires authentication
SLA Report Data
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/reports/sla"
);
const params = {
"from": "2020-01-01",
"to": "2020-01-08",
"model": "timetoreply.com",
"model_type": "Contact",
"exclude_cc": "0",
"model_com": "Top Revenue Contacts",
"model_type_com": "Contact Group",
"exclude_cc_com": "0",
"exclusive": "0",
"label": "INBOX",
"thread_type": "inbound,outbound,internal",
"thread_status": "internal,await-customer,closed,await-agent",
"has_replies": "hasReplies,hasForwards,hasNoRepliesOrForwards",
"classification": "calculating,first,reply,reply-all,forward",
"messageType": "inbound,outbound,internal",
"replies_over": "15",
"message_replies_over": "15",
"no_reply_for": "15",
"per_page": "2",
"sort_by": "threads.total",
"direction": "desc",
"page": "1",
"init_ttr_goal": "02:00:00",
"overall_ttr_goal": "02:00:00",
"overall_ttc_goal": "02:00:00",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://portal.timetoreply.com/api/reports/sla',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'from'=> '2020-01-01',
'to'=> '2020-01-08',
'model'=> 'timetoreply.com',
'model_type'=> 'Contact',
'exclude_cc'=> '0',
'model_com'=> 'Top Revenue Contacts',
'model_type_com'=> 'Contact Group',
'exclude_cc_com'=> '0',
'exclusive'=> '0',
'label'=> 'INBOX',
'thread_type'=> 'inbound,outbound,internal',
'thread_status'=> 'internal,await-customer,closed,await-agent',
'has_replies'=> 'hasReplies,hasForwards,hasNoRepliesOrForwards',
'classification'=> 'calculating,first,reply,reply-all,forward',
'messageType'=> 'inbound,outbound,internal',
'replies_over'=> '15',
'message_replies_over'=> '15',
'no_reply_for'=> '15',
'per_page'=> '2',
'sort_by'=> 'threads.total',
'direction'=> 'desc',
'page'=> '1',
'init_ttr_goal'=> '02:00:00',
'overall_ttr_goal'=> '02:00:00',
'overall_ttc_goal'=> '02:00:00',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/reports/sla?from=2020-01-01&to=2020-01-08&model=timetoreply.com&model_type=Contact&exclude_cc=&model_com=Top+Revenue+Contacts&model_type_com=Contact+Group&exclude_cc_com=&exclusive=&label=INBOX&thread_type=inbound%2Coutbound%2Cinternal&thread_status=internal%2Cawait-customer%2Cclosed%2Cawait-agent&has_replies=hasReplies%2ChasForwards%2ChasNoRepliesOrForwards&classification=calculating%2Cfirst%2Creply%2Creply-all%2Cforward&messageType=inbound%2Coutbound%2Cinternal&replies_over=15&message_replies_over=15&no_reply_for=15&per_page=2&sort_by=threads.total&direction=desc&page=1&init_ttr_goal=02%3A00%3A00&overall_ttr_goal=02%3A00%3A00&overall_ttc_goal=02%3A00%3A00" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"stats": {
"threads": {
"total": 190,
"internal": 14,
"inbound": 150,
"outbound": 26,
"sent_internally": 18,
"await_customer": 68,
"await_agent": 83,
"closed": 21,
"have_replies": 149,
"have_replies_from_agents": 141,
"completionRatio": {
"ratio": "480.77%",
"numerator": 125,
"denominator": 26
}
},
"messages": {
"count": 488,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"received": {
"count": 322,
"initial": 159,
"replies": 114,
"reply_all": 43,
"forward": 6,
"follow_up": 0,
"initial_replies": 0,
"dayOfWeek": {
"Monday": 0,
"Tuesday": 0,
"Wednesday": 0,
"Thursday": 0,
"Friday": 0,
"Saturday": 0,
"Sunday": 0
},
"hourOfDay": {
"00:00": 0,
"01:00": 0,
"02:00": 0,
"03:00": 0,
"04:00": 0,
"05:00": 0,
"06:00": 0,
"07:00": 0,
"08:00": 0,
"09:00": 0,
"10:00": 0,
"11:00": 0,
"12:00": 0,
"13:00": 0,
"14:00": 0,
"15:00": 0,
"16:00": 0,
"17:00": 0,
"18:00": 0,
"19:00": 0,
"20:00": 0,
"21:00": 0,
"22:00": 0,
"23:00": 0
}
},
"sent": {
"count": 230,
"initial": 37,
"replies": 159,
"reply_all": 28,
"forward": 6,
"follow_up": 0,
"initial_replies": 125,
"dayOfWeek": {
"Monday": 0,
"Tuesday": 0,
"Wednesday": 0,
"Thursday": 0,
"Friday": 0,
"Saturday": 0,
"Sunday": 0
},
"hourOfDay": {
"00:00": 0,
"01:00": 0,
"02:00": 0,
"03:00": 0,
"04:00": 0,
"05:00": 0,
"06:00": 0,
"07:00": 0,
"08:00": 0,
"09:00": 0,
"10:00": 0,
"11:00": 0,
"12:00": 0,
"13:00": 0,
"14:00": 0,
"15:00": 0,
"16:00": 0,
"17:00": 0,
"18:00": 0,
"19:00": 0,
"20:00": 0,
"21:00": 0,
"22:00": 0,
"23:00": 0
}
}
},
"overallTTR": {
"friendly": "01h:34m",
"raw": 5682.850267379679,
"friendly_no_business": "04h:28m",
"raw_no_business": 16138.417112299465,
"percentileRanks": [
{
"key": "02h:00m",
"value": "86.59%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "84.92%"
}
],
"within_sla": 168,
"sla_breach": 62
},
"initialTTR": {
"friendly": "01h:14m",
"raw": 4494.648,
"friendly_no_business": "03h:37m",
"raw_no_business": 13027.032,
"percentileRanks": [
{
"key": "02h:00m",
"value": "88.74%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "87.09%"
}
],
"closed_within_sla": 20,
"closed_sla_breach": 0,
"in_progress_within_sla": 108,
"in_progress_sla_breach": 21,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 31,
"within_sla": 128,
"sla_breach": 52
},
"overallTTF": {
"friendly": "09m:12s",
"raw": 552.3333333333334,
"friendly_no_business": "10m:21s",
"raw_no_business": 621.5
},
"overallTTC": {
"friendly": "01h:51m",
"raw": 6670.1875,
"friendly_no_business": "06h:55m",
"raw_no_business": 24929.8125,
"percentileRanks": [
{
"key": "02h:00m",
"value": "78.61%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "78.61%"
}
],
"closed_within_sla": 13,
"closed_sla_breach": 7,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 129,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 31,
"within_sla": 15,
"sla_breach": 165
},
"dailyStats": []
},
"previous_period": {
"threads": {
"total": 173,
"internal": 14,
"inbound": 131,
"outbound": 28,
"sent_internally": 21,
"await_customer": 61,
"await_agent": 76,
"closed": 15,
"have_replies": 132,
"have_replies_from_agents": 122,
"completionRatio": {
"ratio": "385.71%",
"numerator": 108,
"denominator": 28
}
},
"messages": {
"count": 424,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"received": {
"count": 283,
"initial": 145,
"replies": 94,
"reply_all": 36,
"forward": 8,
"follow_up": 0,
"initial_replies": 0,
"dayOfWeek": {
"Monday": 0,
"Tuesday": 0,
"Wednesday": 0,
"Thursday": 0,
"Friday": 0,
"Saturday": 0,
"Sunday": 0
},
"hourOfDay": {
"00:00": 0,
"01:00": 0,
"02:00": 0,
"03:00": 0,
"04:00": 0,
"05:00": 0,
"06:00": 0,
"07:00": 0,
"08:00": 0,
"09:00": 0,
"10:00": 0,
"11:00": 0,
"12:00": 0,
"13:00": 0,
"14:00": 0,
"15:00": 0,
"16:00": 0,
"17:00": 0,
"18:00": 0,
"19:00": 0,
"20:00": 0,
"21:00": 0,
"22:00": 0,
"23:00": 0
}
},
"sent": {
"count": 201,
"initial": 42,
"replies": 130,
"reply_all": 21,
"forward": 8,
"follow_up": 0,
"initial_replies": 108,
"dayOfWeek": {
"Monday": 0,
"Tuesday": 0,
"Wednesday": 0,
"Thursday": 0,
"Friday": 0,
"Saturday": 0,
"Sunday": 0
},
"hourOfDay": {
"00:00": 0,
"01:00": 0,
"02:00": 0,
"03:00": 0,
"04:00": 0,
"05:00": 0,
"06:00": 0,
"07:00": 0,
"08:00": 0,
"09:00": 0,
"10:00": 0,
"11:00": 0,
"12:00": 0,
"13:00": 0,
"14:00": 0,
"15:00": 0,
"16:00": 0,
"17:00": 0,
"18:00": 0,
"19:00": 0,
"20:00": 0,
"21:00": 0,
"22:00": 0,
"23:00": 0
}
}
},
"overallTTR": {
"friendly": "01h:08m",
"raw": 4124.87417218543,
"friendly_no_business": "04h:02m",
"raw_no_business": 14578.079470198676,
"percentileRanks": [
{
"key": "02h:00m",
"value": "86.50%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "82.39%"
}
],
"within_sla": 138,
"sla_breach": 63
},
"initialTTR": {
"friendly": "01h:14m",
"raw": 4455.157407407408,
"friendly_no_business": "04h:14m",
"raw_no_business": 15242.333333333334,
"percentileRanks": [
{
"key": "02h:00m",
"value": "85.75%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "81.09%"
}
],
"closed_within_sla": 12,
"closed_sla_breach": 3,
"in_progress_within_sla": 98,
"in_progress_sla_breach": 25,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 26,
"within_sla": 110,
"sla_breach": 54
},
"overallTTF": {
"friendly": "42m:32s",
"raw": 2552.375,
"friendly_no_business": "01h:58m",
"raw_no_business": 7113.75
},
"overallTTC": {
"friendly": "02h:18m",
"raw": 8327.333333333334,
"friendly_no_business": "07h:45m",
"raw_no_business": 27956.133333333335,
"percentileRanks": [
{
"key": "02h:00m",
"value": "67.95%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "67.95%"
}
],
"closed_within_sla": 11,
"closed_sla_breach": 4,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 123,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 26,
"within_sla": 14,
"sla_breach": 150
},
"dailyStats": []
},
"all_agent_stats": {
"maxima": {
"name": "Total",
"threads.total": 190,
"threads.internal": 14,
"threads.inbound": 150,
"threads.outbound": 26,
"threads.sent_internally": 18,
"threads.await_customer": 68,
"threads.await_agent": 83,
"threads.closed": 21,
"threads.have_replies": 149,
"messages.received.count": 322,
"messages.received.initial": 159,
"messages.received.replies": 114,
"messages.received.reply_all": 43,
"messages.received.forward": 6,
"messages.received.follow_up": 0,
"messages.sent.count": 230,
"messages.sent.initial": 37,
"messages.sent.replies": 159,
"messages.sent.reply_all": 28,
"messages.sent.forward": 6,
"messages.sent.follow_up": 0,
"overallTTR.friendly": "01h:34m",
"overallTTR.friendly_no_business": "04h:28m",
"overallTTR.within_sla": 168,
"overallTTR.sla_breach": 62,
"initialTTR.friendly": "01h:14m",
"initialTTR.friendly_no_business": "03h:37m",
"initialTTR.within_sla": 128,
"initialTTR.sla_breach": 52,
"initialTTR.closed_within_sla": 20,
"initialTTR.closed_sla_breach": 0,
"initialTTR.in_progress_within_sla": 108,
"initialTTR.in_progress_sla_breach": 21,
"initialTTR.unhandled_within_sla": 0,
"initialTTR.unhandled_sla_breach": 31,
"overallTTC.friendly": "01h:51m",
"overallTTC.friendly_no_business": "06h:55m",
"overallTTC.within_sla": 15,
"overallTTC.sla_breach": 165,
"overallTTC.closed_within_sla": 13,
"overallTTC.closed_sla_breach": 7,
"overallTTC.in_progress_within_sla": 0,
"overallTTC.in_progress_sla_breach": 129,
"overallTTC.unhandled_within_sla": 0,
"overallTTC.unhandled_sla_breach": 31,
"overallTTF.friendly": "09m:12s",
"overallTTF.friendly_no_business": "10m:21s"
},
"data": {
"current_page": 1,
"data": [
{
"name": "[email protected]",
"threads": {
"total": 89,
"internal": 13,
"inbound": 64,
"outbound": 12,
"sent_internally": 17,
"await_customer": 31,
"await_agent": 31,
"closed": 10,
"have_replies": 81,
"have_initial_replies": 56
},
"messages": {
"sent": {
"count": 101,
"initial": 16,
"replies": 71,
"reply_all": 10,
"forward": 4,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 117,
"initial": 52,
"replies": 51,
"reply_all": 12,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "02h:15m",
"raw": 8101.83950617284,
"friendly_no_business": "07h:06m",
"raw_no_business": 25599.58024691358,
"percentileRanks": [
{
"key": "02h:00m",
"value": "81.98%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "79.23%"
}
],
"within_sla": 70,
"sla_breach": 31
},
"overallTTF": {
"friendly": "06m:35s",
"raw": 395.75,
"friendly_no_business": "08m:19s",
"raw_no_business": 499.5
},
"initialTTR": {
"friendly": "01h:41m",
"raw": 6119.25,
"friendly_no_business": "05h:46m",
"raw_no_business": 20811.035714285714,
"percentileRanks": [
{
"key": "02h:00m",
"value": "86.42%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "84.21%"
}
],
"closed_within_sla": 10,
"closed_sla_breach": 0,
"in_progress_within_sla": 47,
"in_progress_sla_breach": 15,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 7,
"within_sla": 57,
"sla_breach": 22
},
"overallTTC": {
"friendly": "01h:27m",
"raw": 5223.75,
"friendly_no_business": "01h:27m",
"raw_no_business": 5223.75,
"closed_within_sla": 6,
"closed_sla_breach": 4,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 62,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 7,
"within_sla": 6,
"sla_breach": 73,
"percentileRanks": [
{
"key": "02h:00m",
"value": "72.18%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "72.18%"
}
]
},
"previous": {
"threads": {
"total": 73,
"internal": 11,
"inbound": 51,
"outbound": 11,
"sent_internally": 15,
"await_customer": 20,
"await_agent": 30,
"closed": 8,
"have_replies": 57,
"have_initial_replies": 43
},
"messages": {
"sent": {
"count": 76,
"initial": 17,
"replies": 51,
"reply_all": 6,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 88,
"initial": 35,
"replies": 41,
"reply_all": 9,
"forward": 3,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "48m:18s",
"raw": 2898.2631578947367,
"friendly_no_business": "03h:17m",
"raw_no_business": 11862.192982456141,
"percentileRanks": [
{
"key": "02h:00m",
"value": "87.77%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "82.96%"
}
],
"within_sla": 52,
"sla_breach": 24
},
"overallTTF": {
"friendly": "28m:05s",
"raw": 1685,
"friendly_no_business": "28m:05s",
"raw_no_business": 1685
},
"initialTTR": {
"friendly": "55m:33s",
"raw": 3333.0697674418607,
"friendly_no_business": "04h:07m",
"raw_no_business": 14868.651162790698,
"percentileRanks": [
{
"key": "02h:00m",
"value": "86.12%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "82.06%"
}
],
"closed_within_sla": 6,
"closed_sla_breach": 1,
"in_progress_within_sla": 39,
"in_progress_sla_breach": 13,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 6,
"within_sla": 45,
"sla_breach": 20
},
"overallTTC": {
"friendly": "02h:39m",
"raw": 9591.25,
"friendly_no_business": "12h:53m",
"raw_no_business": 46395.25,
"closed_within_sla": 5,
"closed_sla_breach": 2,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 52,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 6,
"within_sla": 5,
"sla_breach": 60,
"percentileRanks": [
{
"key": "02h:00m",
"value": "73.08%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "73.08%"
}
]
}
}
},
{
"name": "[email protected]",
"threads": {
"total": 59,
"internal": 13,
"inbound": 44,
"outbound": 2,
"sent_internally": 14,
"await_customer": 15,
"await_agent": 24,
"closed": 6,
"have_replies": 56,
"have_initial_replies": 40
},
"messages": {
"sent": {
"count": 62,
"initial": 4,
"replies": 41,
"reply_all": 15,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 71,
"initial": 25,
"replies": 33,
"reply_all": 12,
"forward": 1,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "01h:26m",
"raw": 5172.553571428572,
"friendly_no_business": "03h:38m",
"raw_no_business": 13111.232142857143,
"percentileRanks": [
{
"key": "02h:00m",
"value": "87.60%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "86.76%"
}
],
"within_sla": 51,
"sla_breach": 11
},
"overallTTF": {
"friendly": "14m:25s",
"raw": 865.5,
"friendly_no_business": "14m:25s",
"raw_no_business": 865.5
},
"initialTTR": {
"friendly": "01h:07m",
"raw": 4054.7,
"friendly_no_business": "02h:36m",
"raw_no_business": 9364.575,
"percentileRanks": [
{
"key": "02h:00m",
"value": "87.64%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "86.47%"
}
],
"closed_within_sla": 5,
"closed_sla_breach": 0,
"in_progress_within_sla": 33,
"in_progress_sla_breach": 8,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 7,
"within_sla": 38,
"sla_breach": 15
},
"overallTTC": {
"friendly": "13m:24s",
"raw": 804.5,
"friendly_no_business": "24m:40s",
"raw_no_business": 1480,
"closed_within_sla": 3,
"closed_sla_breach": 2,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 41,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 7,
"within_sla": 3,
"sla_breach": 50,
"percentileRanks": [
{
"key": "02h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "100.00%"
}
]
},
"previous": {
"threads": {
"total": 50,
"internal": 13,
"inbound": 32,
"outbound": 5,
"sent_internally": 18,
"await_customer": 17,
"await_agent": 11,
"closed": 4,
"have_replies": 41,
"have_initial_replies": 28
},
"messages": {
"sent": {
"count": 52,
"initial": 7,
"replies": 31,
"reply_all": 10,
"forward": 4,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 57,
"initial": 22,
"replies": 21,
"reply_all": 12,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "01h:19m",
"raw": 4759.8536585365855,
"friendly_no_business": "04h:15m",
"raw_no_business": 15312.609756097561,
"percentileRanks": [
{
"key": "02h:00m",
"value": "88.19%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "88.19%"
}
],
"within_sla": 40,
"sla_breach": 12
},
"overallTTF": {
"friendly": "01h:01m",
"raw": 3693.25,
"friendly_no_business": "03h:33m",
"raw_no_business": 12816
},
"initialTTR": {
"friendly": "01h:36m",
"raw": 5790.785714285715,
"friendly_no_business": "05h:18m",
"raw_no_business": 19108.39285714286,
"percentileRanks": [
{
"key": "02h:00m",
"value": "87.67%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "87.67%"
}
],
"closed_within_sla": 4,
"closed_sla_breach": 0,
"in_progress_within_sla": 26,
"in_progress_sla_breach": 9,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 2,
"within_sla": 30,
"sla_breach": 11
},
"overallTTC": {
"friendly": "36m:19s",
"raw": 2179.25,
"friendly_no_business": "45m:11s",
"raw_no_business": 2711,
"closed_within_sla": 4,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 35,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 2,
"within_sla": 5,
"sla_breach": 36,
"percentileRanks": [
{
"key": "02h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "100.00%"
}
]
}
}
},
{
"name": "[email protected]",
"threads": {
"total": 58,
"internal": 11,
"inbound": 36,
"outbound": 11,
"sent_internally": 12,
"await_customer": 22,
"await_agent": 16,
"closed": 8,
"have_replies": 50,
"have_initial_replies": 29
},
"messages": {
"sent": {
"count": 67,
"initial": 17,
"replies": 47,
"reply_all": 3,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 83,
"initial": 38,
"replies": 30,
"reply_all": 12,
"forward": 3,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "38m:55s",
"raw": 2335.62,
"friendly_no_business": "01h:10m",
"raw_no_business": 4201.78,
"percentileRanks": [
{
"key": "02h:00m",
"value": "92.51%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "90.78%"
}
],
"within_sla": 47,
"sla_breach": 20
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "32m:44s",
"raw": 1964.3103448275863,
"friendly_no_business": "50m:47s",
"raw_no_business": 3047.5172413793102,
"percentileRanks": [
{
"key": "02h:00m",
"value": "93.90%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "90.85%"
}
],
"closed_within_sla": 8,
"closed_sla_breach": 0,
"in_progress_within_sla": 36,
"in_progress_sla_breach": 4,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 6,
"within_sla": 44,
"sla_breach": 10
},
"overallTTC": {
"friendly": "41m:33s",
"raw": 2493.6666666666665,
"friendly_no_business": "49m:37s",
"raw_no_business": 2977.6666666666665,
"closed_within_sla": 3,
"closed_sla_breach": 5,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 40,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 6,
"within_sla": 5,
"sla_breach": 49,
"percentileRanks": [
{
"key": "02h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "100.00%"
}
]
},
"previous": {
"threads": {
"total": 72,
"internal": 14,
"inbound": 46,
"outbound": 12,
"sent_internally": 18,
"await_customer": 23,
"await_agent": 26,
"closed": 5,
"have_replies": 53,
"have_initial_replies": 37
},
"messages": {
"sent": {
"count": 73,
"initial": 18,
"replies": 48,
"reply_all": 5,
"forward": 2,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
},
"received": {
"count": 95,
"initial": 51,
"replies": 32,
"reply_all": 9,
"forward": 3,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "01h:22m",
"raw": 4952.8490566037735,
"friendly_no_business": "04h:42m",
"raw_no_business": 16930.716981132075,
"percentileRanks": [
{
"key": "02h:00m",
"value": "82.11%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "77.32%"
}
],
"within_sla": 46,
"sla_breach": 27
},
"overallTTF": {
"friendly": "18m:58s",
"raw": 1138,
"friendly_no_business": "18m:58s",
"raw_no_business": 1138
},
"initialTTR": {
"friendly": "01h:19m",
"raw": 4748.459459459459,
"friendly_no_business": "03h:32m",
"raw_no_business": 12750.945945945947,
"percentileRanks": [
{
"key": "02h:00m",
"value": "82.48%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "75.64%"
}
],
"closed_within_sla": 3,
"closed_sla_breach": 2,
"in_progress_within_sla": 41,
"in_progress_sla_breach": 10,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 11,
"within_sla": 44,
"sla_breach": 23
},
"overallTTC": {
"friendly": "02h:13m",
"raw": 8024.2,
"friendly_no_business": "02h:20m",
"raw_no_business": 8449.6,
"closed_within_sla": 3,
"closed_sla_breach": 2,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 51,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 11,
"within_sla": 6,
"sla_breach": 61,
"percentileRanks": [
{
"key": "02h:00m",
"value": "47.71%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "47.71%"
}
]
}
}
},
{
"name": "[email protected]",
"threads": {
"total": 42,
"internal": 0,
"inbound": 42,
"outbound": 0,
"sent_internally": 1,
"await_customer": 10,
"await_agent": 28,
"closed": 3,
"have_replies": 0,
"have_initial_replies": 0
},
"messages": {
"sent": {
"count": 0,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": null
},
"received": {
"count": 61,
"initial": 42,
"replies": 0,
"reply_all": 19,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 0
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 3,
"closed_sla_breach": 0,
"in_progress_within_sla": 23,
"in_progress_sla_breach": 5,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 11,
"within_sla": 26,
"sla_breach": 16
},
"overallTTC": {
"friendly": "09m:01s",
"raw": 541.6666666666666,
"friendly_no_business": "24m:02s",
"raw_no_business": 1442.3333333333333,
"closed_within_sla": 3,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 28,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 11,
"within_sla": 3,
"sla_breach": 39,
"percentileRanks": [
{
"key": "02h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "100.00%"
}
]
},
"previous": {
"threads": {
"total": 33,
"internal": 0,
"inbound": 33,
"outbound": 0,
"sent_internally": 4,
"await_customer": 9,
"await_agent": 17,
"closed": 3,
"have_replies": 0,
"have_initial_replies": 0
},
"messages": {
"sent": {
"count": 0,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": null
},
"received": {
"count": 42,
"initial": 33,
"replies": 0,
"reply_all": 9,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 0
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 3,
"closed_sla_breach": 0,
"in_progress_within_sla": 16,
"in_progress_sla_breach": 8,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 6,
"within_sla": 19,
"sla_breach": 14
},
"overallTTC": {
"friendly": "01h:13m",
"raw": 4387.666666666667,
"friendly_no_business": "01h:37m",
"raw_no_business": 5822.666666666667,
"closed_within_sla": 2,
"closed_sla_breach": 1,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 24,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 6,
"within_sla": 2,
"sla_breach": 31,
"percentileRanks": [
{
"key": "02h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "64.21%"
}
]
}
}
},
{
"name": "[email protected]",
"threads": {
"total": 12,
"internal": 0,
"inbound": 12,
"outbound": 0,
"sent_internally": 0,
"await_customer": 7,
"await_agent": 4,
"closed": 1,
"have_replies": 0,
"have_initial_replies": 0
},
"messages": {
"sent": {
"count": 0,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": null
},
"received": {
"count": 16,
"initial": 11,
"replies": 0,
"reply_all": 5,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 0
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 1,
"closed_sla_breach": 0,
"in_progress_within_sla": 8,
"in_progress_sla_breach": 2,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 1,
"within_sla": 9,
"sla_breach": 3
},
"overallTTC": {
"friendly": "26m:33s",
"raw": 1593,
"friendly_no_business": "26m:33s",
"raw_no_business": 1593,
"closed_within_sla": 1,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 10,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 1,
"within_sla": 1,
"sla_breach": 11,
"percentileRanks": [
{
"key": "02h:00m",
"value": "100.00%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "100.00%"
}
]
},
"previous": {
"threads": {
"total": 14,
"internal": 0,
"inbound": 14,
"outbound": 0,
"sent_internally": 0,
"await_customer": 8,
"await_agent": 6,
"closed": 0,
"have_replies": 0,
"have_initial_replies": 0
},
"messages": {
"sent": {
"count": 0,
"initial": 0,
"replies": 0,
"reply_all": 0,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": null
},
"received": {
"count": 22,
"initial": 14,
"replies": 0,
"reply_all": 8,
"forward": 0,
"follow_up": 0,
"initial_replies": 0,
"dailyStats": []
}
},
"overallTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"sla_breach": 0
},
"overallTTF": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null
},
"initialTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 9,
"in_progress_sla_breach": 3,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 2,
"within_sla": 9,
"sla_breach": 5
},
"overallTTC": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"closed_within_sla": 0,
"closed_sla_breach": 0,
"in_progress_within_sla": 0,
"in_progress_sla_breach": 12,
"unhandled_within_sla": 0,
"unhandled_sla_breach": 2,
"within_sla": 0,
"sla_breach": 14,
"percentileRanks": [
{
"key": "02h:00m",
"value": "0.00%"
}
],
"percentileRanksRaw": [
{
"key": "02h:00m",
"value": "0.00%"
}
]
}
}
},
{
"name": "[email protected]",
"threads": {
"total": 7,
"internal": 0,
"inbound": 5,
"outbou