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
To authenticate requests, include 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
Logs
Conversations - Report Conversation (Thread) Logs data
requires authentication
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[0]": "vitae",
"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[0]' => 'vitae',
'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[]=vitae&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": 481,
"init_agent_reply_time": 0,
"init_agent_action_time": 47867,
"total_agent_reply_time": 47867,
"last_received_at_date_time": "Feb 1st 2023 19:28:29",
"thread_type": "inbound",
"thread_status": "await-customer",
"raw_init_agent_reply_time": 50097,
"init_agent_reply_message_id": "[email protected]",
"init_reply_agent_id": 1,
"time_to_close": null,
"raw_time_to_close": null,
"touches": 2,
"nudges": 1,
"friendly_initial_reply_time": "00s",
"friendly_raw_initial_reply_time": "13h:54m:57s",
"friendly_total_reply_time": "13h:17m:47s",
"microsoft_conversations": [],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]",
"[email protected]"
],
"email_usernames_reply_to": [],
"email_usernames_to": [
"[email protected]",
"[email protected]"
],
"email_usernames_received": [
"[email protected]",
"[email protected]"
],
"email_domains": [
"barton.com",
"timetoreply.com"
],
"date_times": [
"2023-02-01 05:32:07",
"2023-02-01 18:49:54",
"2023-02-01 19:27:04",
"2023-02-01 19:28:29"
],
"message_classifications": [
"first",
"follow-up",
"reply"
],
"message_subjects": [
"cultivate robust channels",
"RE: cultivate robust channels"
],
"messages": [
{
"internet_message_id": "[email protected]",
"date_time": "Feb 1st 2023 19:28:29",
"subject": "RE: cultivate robust channels",
"references": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"replytime": 0,
"classification": "follow-up",
"raw_replytime": 85,
"friendly_reply_time": "00s",
"friendly_raw_reply_time": "01m:25s",
"email_domains": [
"timetoreply.com",
"barton.com"
],
"email_domains_from": [
"timetoreply.com"
],
"email_domains_to": [
"barton.com"
],
"email_domains_reply_to": [],
"email_domains_received": [
"barton.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_reply_to": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"is_newest_message": true,
"message_type": "outbound",
"labels": [],
"is_touch": true,
"is_nudge": false,
"touch_time": 85,
"timestamp": 1675279709,
"is_closing_email": false,
"is_included_in_stats": true,
"reply_is_relevant": true,
"reply_is_outlier": false,
"agents_read_status": [],
"friendly_touch_time": "01m:25s"
},
{
"internet_message_id": "[email protected]",
"date_time": "Feb 1st 2023 19:27:04",
"subject": "RE: cultivate robust channels",
"references": [
"[email protected]"
],
"replytime": 0,
"classification": "reply",
"raw_replytime": 2230,
"friendly_reply_time": "00s",
"friendly_raw_reply_time": "37m:10s",
"email_domains": [
"timetoreply.com",
"barton.com"
],
"email_domains_from": [
"timetoreply.com"
],
"email_domains_to": [
"barton.com"
],
"email_domains_reply_to": [],
"email_domains_received": [
"barton.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_reply_to": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": true,
"is_newest_message": false,
"message_type": "outbound",
"labels": [],
"is_touch": true,
"is_nudge": false,
"touch_time": null,
"timestamp": 1675279624,
"is_closing_email": false,
"is_included_in_stats": true,
"reply_is_relevant": true,
"reply_is_outlier": false,
"agents_read_status": [],
"friendly_touch_time": "N/A"
},
{
"internet_message_id": "[email protected]",
"date_time": "Feb 1st 2023 18:49:54",
"subject": "RE: cultivate robust channels",
"references": [
"[email protected]",
"[email protected]"
],
"replytime": 47867,
"classification": "follow-up",
"raw_replytime": 47867,
"friendly_reply_time": "13h:17m:47s",
"friendly_raw_reply_time": "13h:17m:47s",
"email_domains": [
"barton.com",
"timetoreply.com"
],
"email_domains_from": [
"barton.com"
],
"email_domains_to": [
"timetoreply.com"
],
"email_domains_reply_to": [],
"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_reply_to": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"is_newest_message": false,
"message_type": "inbound",
"labels": [],
"is_touch": false,
"is_nudge": true,
"touch_time": null,
"timestamp": 1675277394,
"is_closing_email": false,
"is_included_in_stats": true,
"reply_is_relevant": false,
"reply_is_outlier": false,
"agents_read_status": {
"[email protected]": true
},
"friendly_touch_time": "N/A"
},
{
"internet_message_id": "[email protected]",
"date_time": "Feb 1st 2023 05:32:07",
"subject": "cultivate robust channels",
"references": null,
"replytime": null,
"classification": "first",
"raw_replytime": null,
"friendly_reply_time": "N/A",
"friendly_raw_reply_time": "N/A",
"email_domains": [
"barton.com",
"timetoreply.com"
],
"email_domains_from": [
"barton.com"
],
"email_domains_to": [
"timetoreply.com"
],
"email_domains_reply_to": [],
"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_reply_to": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"is_newest_message": false,
"message_type": "inbound",
"labels": [
"UNREAD"
],
"is_touch": false,
"is_nudge": false,
"touch_time": null,
"timestamp": 1675229527,
"is_closing_email": false,
"is_included_in_stats": true,
"reply_is_relevant": false,
"reply_is_outlier": false,
"agents_read_status": {
"[email protected]": false
},
"friendly_touch_time": "N/A"
}
],
"labels": [
"UNREAD"
],
"has_contact_success": false,
"contact_success_time": null,
"contact_reply_time": null,
"deal": null,
"subject": "RE: cultivate robust channels",
"initial_reply_is_relevant": true,
"initial_reply_is_included_in_stats": true,
"initial_reply_is_outlier": false,
"friendly_time_to_close": "N/A",
"friendly_raw_time_to_close": "N/A"
},
{
"id": 203,
"init_agent_reply_time": 1465,
"init_agent_action_time": 1465,
"total_agent_reply_time": 13534,
"last_received_at_date_time": "Feb 1st 2023 17:58:48",
"thread_type": "inbound",
"thread_status": "await-agent",
"raw_init_agent_reply_time": 1465,
"init_agent_reply_message_id": "[email protected]",
"init_reply_agent_id": 4,
"time_to_close": null,
"raw_time_to_close": null,
"touches": 1,
"nudges": 0,
"friendly_initial_reply_time": "24m:25s",
"friendly_raw_initial_reply_time": "24m:25s",
"friendly_total_reply_time": "03h:45m:34s",
"microsoft_conversations": [],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]",
"[email protected]"
],
"email_usernames_reply_to": [],
"email_usernames_to": [
"[email protected]",
"[email protected]"
],
"email_usernames_received": [
"[email protected]",
"[email protected]"
],
"email_domains": [
"crooks.com",
"timetoreply.com"
],
"date_times": [
"2023-02-01 14:13:14",
"2023-02-01 14:37:39",
"2023-02-01 17:58:48"
],
"message_classifications": [
"first",
"reply"
],
"message_subjects": [
"Web Enquiry Form: visualize cross-media mindshare",
"RE: Web Enquiry Form: visualize cross-media mindshare"
],
"messages": [
{
"internet_message_id": "[email protected]",
"date_time": "Feb 1st 2023 17:58:48",
"subject": "RE: Web Enquiry Form: visualize cross-media mindshare",
"references": [
"[email protected]",
"[email protected]"
],
"replytime": 12069,
"classification": "reply",
"raw_replytime": 12069,
"friendly_reply_time": "03h:21m:09s",
"friendly_raw_reply_time": "03h:21m:09s",
"email_domains": [
"crooks.com",
"timetoreply.com"
],
"email_domains_from": [
"crooks.com"
],
"email_domains_to": [
"timetoreply.com"
],
"email_domains_reply_to": [],
"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_reply_to": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"is_newest_message": true,
"message_type": "inbound",
"labels": [],
"is_touch": false,
"is_nudge": false,
"touch_time": null,
"timestamp": 1675274328,
"is_closing_email": false,
"is_included_in_stats": true,
"reply_is_relevant": false,
"reply_is_outlier": false,
"agents_read_status": {
"[email protected]": true
},
"friendly_touch_time": "N/A"
},
{
"internet_message_id": "[email protected]",
"date_time": "Feb 1st 2023 14:37:39",
"subject": "RE: Web Enquiry Form: visualize cross-media mindshare",
"references": [
"[email protected]"
],
"replytime": 1465,
"classification": "reply",
"raw_replytime": 1465,
"friendly_reply_time": "24m:25s",
"friendly_raw_reply_time": "24m:25s",
"email_domains": [
"timetoreply.com",
"crooks.com"
],
"email_domains_from": [
"timetoreply.com"
],
"email_domains_to": [
"crooks.com"
],
"email_domains_reply_to": [],
"email_domains_received": [
"crooks.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_reply_to": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": true,
"is_newest_message": false,
"message_type": "outbound",
"labels": [
"UNREAD",
"CATEGORY_PROMOTIONS",
"CATEGORY_PERSONAL"
],
"is_touch": true,
"is_nudge": false,
"touch_time": null,
"timestamp": 1675262259,
"is_closing_email": false,
"is_included_in_stats": true,
"reply_is_relevant": true,
"reply_is_outlier": false,
"agents_read_status": [],
"friendly_touch_time": "N/A"
},
{
"internet_message_id": "[email protected]",
"date_time": "Feb 1st 2023 14:13:14",
"subject": "Web Enquiry Form: visualize cross-media mindshare",
"references": null,
"replytime": null,
"classification": "first",
"raw_replytime": null,
"friendly_reply_time": "N/A",
"friendly_raw_reply_time": "N/A",
"email_domains": [
"crooks.com",
"timetoreply.com"
],
"email_domains_from": [
"crooks.com"
],
"email_domains_to": [
"timetoreply.com"
],
"email_domains_reply_to": [],
"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_reply_to": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"is_newest_message": false,
"message_type": "inbound",
"labels": [],
"is_touch": false,
"is_nudge": false,
"touch_time": null,
"timestamp": 1675260794,
"is_closing_email": false,
"is_included_in_stats": true,
"reply_is_relevant": false,
"reply_is_outlier": false,
"agents_read_status": {
"[email protected]": true
},
"friendly_touch_time": "N/A"
}
],
"labels": [
"UNREAD",
"CATEGORY_PROMOTIONS",
"CATEGORY_PERSONAL"
],
"has_contact_success": true,
"contact_success_time": 13534,
"contact_reply_time": 12069,
"deal": {
"id": 23,
"deal_stage": 1,
"deal_value": 1571,
"owner": 5,
"name": "Rustic Silk Shoes"
},
"subject": "RE: Web Enquiry Form: visualize cross-media mindshare",
"initial_reply_is_relevant": true,
"initial_reply_is_included_in_stats": 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?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=1",
"from": 1,
"last_page": 169,
"last_page_url": "https://portal.timetoreply.com/api/logs/conversations?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=169",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=3",
"label": "3",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=4",
"label": "4",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=5",
"label": "5",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=6",
"label": "6",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=7",
"label": "7",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=8",
"label": "8",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=9",
"label": "9",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=10",
"label": "10",
"active": false
},
{
"url": null,
"label": "...",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=168",
"label": "168",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=169",
"label": "169",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/conversations?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/logs/conversations?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=2",
"path": "https://portal.timetoreply.com/api/logs/conversations",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 337
},
"stats": {
"threads": {
"total": 337,
"internal": 28,
"inbound": 257,
"outbound": 52,
"sent_internally": 0,
"await_customer": 0,
"await_agent": 0,
"closed": 0,
"have_replies": 269,
"have_replies_from_agents": 245,
"have_no_replies_from_agents": 92,
"completionRatio": {
"ratio": 85.99,
"numerator": 221,
"denominator": 257
},
"labels": {
"total": 0,
"list": []
}
},
"messages": {
"count": 850,
"initial": 0,
"replies": 507,
"forward": 0,
"follow_up": 0,
"received": {
"count": 0,
"initial": 0,
"replies": 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": 419,
"initial": 0,
"replies": 300,
"forward": 0,
"follow_up": 0,
"initial_replies": 221,
"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": null,
"within_sla_percentage_friendly": 0,
"sla_breach": null,
"sla_breach_percentage_friendly": 0,
"excluded_from_sla": 300,
"excluded_from_sla_percentage_friendly": 100
},
"initialTTR": {
"friendly": "01h:43m",
"raw": 6204.110599078341,
"friendly_no_business": "05h:53m",
"raw_no_business": 21203.576036866358,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"within_sla_percentage_friendly": 0,
"sla_breach": 0,
"sla_breach_percentage_friendly": 0,
"excluded_from_sla": 221,
"excluded_from_sla_percentage_friendly": 100
},
"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": [],
"within_sla": 0,
"within_sla_percentage_friendly": 0,
"sla_breach": 0,
"sla_breach_percentage_friendly": 0
},
"dailyStats": []
}
}
Received response:
Request failed with error:
Conversations - Find by subject or email Find Conversation from a subject line or email address
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/logs/conversations/get-by-subject-or-email"
);
const params = {
"search": "Support Query",
};
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-subject-or-email',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'search' => 'Support Query',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/logs/conversations/get-by-subject-or-email?search=Support+Query" \
--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: []
[]
Received response:
Request failed with error:
Conversations - Find Entire Conversation from a single Message ID
requires authentication
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: []
{
"messages": [],
"last_received_at_date_time": "",
"subject": "",
"initial_reply_is_relevant": true,
"initial_reply_is_included_in_stats": true,
"initial_reply_is_outlier": false,
"friendly_time_to_close": "N/A",
"friendly_raw_time_to_close": "N/A"
}
Received response:
Request failed with error:
Conversations - Close Endpoint For marking Conversations as closed.
requires authentication
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:
Messages - Report Message Logs data
requires authentication
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[0]": "omnis",
"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[0]' => 'omnis',
'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[]=omnis&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,
"have_no_replies_from_agents": 0,
"completionRatio": {
"ratio": 0,
"numerator": 222,
"denominator": 0
},
"labels": {
"total": 0,
"list": []
}
},
"messages": {
"count": 855,
"initial": 0,
"replies": 0,
"forward": 0,
"follow_up": 0,
"received": {
"count": 517,
"initial": 196,
"replies": 236,
"forward": 41,
"follow_up": 44,
"initial_replies": 54,
"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": 421,
"initial": 68,
"replies": 302,
"forward": 48,
"follow_up": 3,
"initial_replies": 222,
"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:37m",
"raw": 5855.543046357616,
"friendly_no_business": "06h:03m",
"raw_no_business": 21806.17880794702,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": null,
"within_sla_percentage_friendly": 0,
"sla_breach": null,
"sla_breach_percentage_friendly": 0,
"excluded_from_sla": 302,
"excluded_from_sla_percentage_friendly": 100
},
"initialTTR": {
"friendly": "N/A",
"raw": null,
"friendly_no_business": "N/A",
"raw_no_business": null,
"percentileRanks": [],
"percentileRanksRaw": [],
"within_sla": 0,
"within_sla_percentage_friendly": 0,
"sla_breach": 0,
"sla_breach_percentage_friendly": 0,
"excluded_from_sla": 0,
"excluded_from_sla_percentage_friendly": 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": [],
"within_sla": 0,
"within_sla_percentage_friendly": 0,
"sla_breach": 0,
"sla_breach_percentage_friendly": 0
},
"dailyStats": []
},
"messages": {
"current_page": 1,
"data": [
{
"email_usernames_from": [
"[email protected]"
],
"replytime": 0,
"touch_time": 85,
"references": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"email_domains_reply_to": [],
"is_newest_message": true,
"subject": "RE: cultivate robust channels",
"friendly_reply_time": "00s",
"raw_replytime": 85,
"friendly_raw_reply_time": "01m:25s",
"is_touch": true,
"date_time": "Feb 1st 2023 19:28:29",
"email_usernames_to": [
"[email protected]"
],
"email_domains_received": [
"barton.com"
],
"email_domains": [
"timetoreply.com",
"barton.com"
],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"message_type": "outbound",
"classification": "follow-up",
"email_usernames_reply_to": [],
"labels": [],
"is_nudge": false,
"internet_message_id": "[email protected]",
"email_domains_from": [
"timetoreply.com"
],
"email_domains_to": [
"barton.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_cc": [],
"thread_id": 481,
"timestamp": 1675279709,
"is_closing_email": false,
"is_included_in_stats": true,
"reply_is_relevant": true,
"reply_is_outlier": false,
"agents_read_status": [],
"friendly_touch_time": "01m:25s",
"thread_message_count": 4
},
{
"email_usernames_from": [
"g.[email protected]"
],
"replytime": 0,
"touch_time": null,
"references": [
"[email protected]"
],
"email_domains_reply_to": [],
"is_newest_message": false,
"subject": "RE: cultivate robust channels",
"friendly_reply_time": "00s",
"raw_replytime": 2230,
"friendly_raw_reply_time": "37m:10s",
"is_touch": true,
"date_time": "Feb 1st 2023 19:27:04",
"email_usernames_to": [
"[email protected]"
],
"email_domains_received": [
"barton.com"
],
"email_domains": [
"timetoreply.com",
"barton.com"
],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": true,
"message_type": "outbound",
"classification": "reply",
"email_usernames_reply_to": [],
"labels": [],
"is_nudge": false,
"internet_message_id": "[email protected]",
"email_domains_from": [
"timetoreply.com"
],
"email_domains_to": [
"barton.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_cc": [],
"thread_id": 481,
"timestamp": 1675279624,
"is_closing_email": false,
"is_included_in_stats": true,
"reply_is_relevant": true,
"reply_is_outlier": false,
"agents_read_status": [],
"friendly_touch_time": "N/A",
"thread_message_count": 4
}
],
"first_page_url": "https://portal.timetoreply.com/api/logs/messages?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=1",
"from": 1,
"last_page": 428,
"last_page_url": "https://portal.timetoreply.com/api/logs/messages?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=428",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=3",
"label": "3",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=4",
"label": "4",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=5",
"label": "5",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=6",
"label": "6",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=7",
"label": "7",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=8",
"label": "8",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=9",
"label": "9",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=10",
"label": "10",
"active": false
},
{
"url": null,
"label": "...",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=427",
"label": "427",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=428",
"label": "428",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/messages?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/logs/messages?model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=2",
"path": "https://portal.timetoreply.com/api/logs/messages",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 855
}
}
Received response:
Request failed with error:
Stats - Breakdown Get the conversations or emails that make up a given statistic.
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/logs/stat-breakdown"
);
const params = {
"stat": "threads.total",
"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[0]": "sapiente",
"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/stat-breakdown',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'stat' => 'threads.total',
'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[0]' => 'sapiente',
'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/stat-breakdown?stat=threads.total&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[]=sapiente&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: []
{
"data": {
"current_page": 1,
"data": [
{
"id": 481,
"init_agent_reply_time": 0,
"init_agent_action_time": 47867,
"total_agent_reply_time": 47867,
"last_received_at_date_time": "Feb 1st 2023 19:28:29",
"thread_type": "inbound",
"thread_status": "await-customer",
"raw_init_agent_reply_time": 50097,
"init_agent_reply_message_id": "[email protected]",
"init_reply_agent_id": 1,
"time_to_close": null,
"raw_time_to_close": null,
"touches": 2,
"nudges": 1,
"friendly_initial_reply_time": "00s",
"friendly_raw_initial_reply_time": "13h:54m:57s",
"friendly_total_reply_time": "13h:17m:47s",
"microsoft_conversations": [],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]",
"[email protected]"
],
"email_usernames_reply_to": [],
"email_usernames_to": [
"[email protected]",
"[email protected]"
],
"email_usernames_received": [
"[email protected]",
"[email protected]"
],
"email_domains": [
"barton.com",
"timetoreply.com"
],
"date_times": [
"2023-02-01 05:32:07",
"2023-02-01 18:49:54",
"2023-02-01 19:27:04",
"2023-02-01 19:28:29"
],
"message_classifications": [
"first",
"follow-up",
"reply"
],
"message_subjects": [
"cultivate robust channels",
"RE: cultivate robust channels"
],
"messages": [
{
"internet_message_id": "[email protected]",
"date_time": "Feb 1st 2023 19:28:29",
"subject": "RE: cultivate robust channels",
"references": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"replytime": 0,
"classification": "follow-up",
"raw_replytime": 85,
"friendly_reply_time": "00s",
"friendly_raw_reply_time": "01m:25s",
"email_domains": [
"timetoreply.com",
"barton.com"
],
"email_domains_from": [
"timetoreply.com"
],
"email_domains_to": [
"barton.com"
],
"email_domains_reply_to": [],
"email_domains_received": [
"barton.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_reply_to": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"is_newest_message": true,
"message_type": "outbound",
"labels": [],
"is_touch": true,
"is_nudge": false,
"touch_time": 85,
"timestamp": 1675279709,
"is_closing_email": false,
"is_included_in_stats": true,
"reply_is_relevant": true,
"reply_is_outlier": false,
"agents_read_status": [],
"friendly_touch_time": "01m:25s"
},
{
"internet_message_id": "[email protected]",
"date_time": "Feb 1st 2023 19:27:04",
"subject": "RE: cultivate robust channels",
"references": [
"[email protected]"
],
"replytime": 0,
"classification": "reply",
"raw_replytime": 2230,
"friendly_reply_time": "00s",
"friendly_raw_reply_time": "37m:10s",
"email_domains": [
"timetoreply.com",
"barton.com"
],
"email_domains_from": [
"timetoreply.com"
],
"email_domains_to": [
"barton.com"
],
"email_domains_reply_to": [],
"email_domains_received": [
"barton.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_reply_to": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": true,
"is_newest_message": false,
"message_type": "outbound",
"labels": [],
"is_touch": true,
"is_nudge": false,
"touch_time": null,
"timestamp": 1675279624,
"is_closing_email": false,
"is_included_in_stats": true,
"reply_is_relevant": true,
"reply_is_outlier": false,
"agents_read_status": [],
"friendly_touch_time": "N/A"
},
{
"internet_message_id": "[email protected]",
"date_time": "Feb 1st 2023 18:49:54",
"subject": "RE: cultivate robust channels",
"references": [
"[email protected]",
"[email protected]"
],
"replytime": 47867,
"classification": "follow-up",
"raw_replytime": 47867,
"friendly_reply_time": "13h:17m:47s",
"friendly_raw_reply_time": "13h:17m:47s",
"email_domains": [
"barton.com",
"timetoreply.com"
],
"email_domains_from": [
"barton.com"
],
"email_domains_to": [
"timetoreply.com"
],
"email_domains_reply_to": [],
"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_reply_to": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"is_newest_message": false,
"message_type": "inbound",
"labels": [],
"is_touch": false,
"is_nudge": true,
"touch_time": null,
"timestamp": 1675277394,
"is_closing_email": false,
"is_included_in_stats": true,
"reply_is_relevant": false,
"reply_is_outlier": false,
"agents_read_status": {
"[email protected]": true
},
"friendly_touch_time": "N/A"
},
{
"internet_message_id": "[email protected]",
"date_time": "Feb 1st 2023 05:32:07",
"subject": "cultivate robust channels",
"references": null,
"replytime": null,
"classification": "first",
"raw_replytime": null,
"friendly_reply_time": "N/A",
"friendly_raw_reply_time": "N/A",
"email_domains": [
"barton.com",
"timetoreply.com"
],
"email_domains_from": [
"barton.com"
],
"email_domains_to": [
"timetoreply.com"
],
"email_domains_reply_to": [],
"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_reply_to": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"is_newest_message": false,
"message_type": "inbound",
"labels": [
"UNREAD"
],
"is_touch": false,
"is_nudge": false,
"touch_time": null,
"timestamp": 1675229527,
"is_closing_email": false,
"is_included_in_stats": true,
"reply_is_relevant": false,
"reply_is_outlier": false,
"agents_read_status": {
"[email protected]": false
},
"friendly_touch_time": "N/A"
}
],
"labels": [
"UNREAD"
],
"has_contact_success": false,
"contact_success_time": null,
"contact_reply_time": null,
"deal": null,
"subject": "RE: cultivate robust channels",
"initial_reply_is_relevant": true,
"initial_reply_is_included_in_stats": true,
"initial_reply_is_outlier": false,
"friendly_time_to_close": "N/A",
"friendly_raw_time_to_close": "N/A"
},
{
"id": 203,
"init_agent_reply_time": 1465,
"init_agent_action_time": 1465,
"total_agent_reply_time": 13534,
"last_received_at_date_time": "Feb 1st 2023 17:58:48",
"thread_type": "inbound",
"thread_status": "await-agent",
"raw_init_agent_reply_time": 1465,
"init_agent_reply_message_id": "[email protected]",
"init_reply_agent_id": 4,
"time_to_close": null,
"raw_time_to_close": null,
"touches": 1,
"nudges": 0,
"friendly_initial_reply_time": "24m:25s",
"friendly_raw_initial_reply_time": "24m:25s",
"friendly_total_reply_time": "03h:45m:34s",
"microsoft_conversations": [],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]",
"[email protected]"
],
"email_usernames_reply_to": [],
"email_usernames_to": [
"[email protected]",
"[email protected]"
],
"email_usernames_received": [
"[email protected]",
"[email protected]"
],
"email_domains": [
"crooks.com",
"timetoreply.com"
],
"date_times": [
"2023-02-01 14:13:14",
"2023-02-01 14:37:39",
"2023-02-01 17:58:48"
],
"message_classifications": [
"first",
"reply"
],
"message_subjects": [
"Web Enquiry Form: visualize cross-media mindshare",
"RE: Web Enquiry Form: visualize cross-media mindshare"
],
"messages": [
{
"internet_message_id": "[email protected]",
"date_time": "Feb 1st 2023 17:58:48",
"subject": "RE: Web Enquiry Form: visualize cross-media mindshare",
"references": [
"[email protected]",
"[email protected]"
],
"replytime": 12069,
"classification": "reply",
"raw_replytime": 12069,
"friendly_reply_time": "03h:21m:09s",
"friendly_raw_reply_time": "03h:21m:09s",
"email_domains": [
"crooks.com",
"timetoreply.com"
],
"email_domains_from": [
"crooks.com"
],
"email_domains_to": [
"timetoreply.com"
],
"email_domains_reply_to": [],
"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_reply_to": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"is_newest_message": true,
"message_type": "inbound",
"labels": [],
"is_touch": false,
"is_nudge": false,
"touch_time": null,
"timestamp": 1675274328,
"is_closing_email": false,
"is_included_in_stats": true,
"reply_is_relevant": false,
"reply_is_outlier": false,
"agents_read_status": {
"[email protected]": true
},
"friendly_touch_time": "N/A"
},
{
"internet_message_id": "[email protected]",
"date_time": "Feb 1st 2023 14:37:39",
"subject": "RE: Web Enquiry Form: visualize cross-media mindshare",
"references": [
"[email protected]"
],
"replytime": 1465,
"classification": "reply",
"raw_replytime": 1465,
"friendly_reply_time": "24m:25s",
"friendly_raw_reply_time": "24m:25s",
"email_domains": [
"timetoreply.com",
"crooks.com"
],
"email_domains_from": [
"timetoreply.com"
],
"email_domains_to": [
"crooks.com"
],
"email_domains_reply_to": [],
"email_domains_received": [
"crooks.com"
],
"email_usernames": [
"[email protected]",
"[email protected]"
],
"email_usernames_from": [
"[email protected]"
],
"email_usernames_to": [
"[email protected]"
],
"email_usernames_cc": [],
"email_usernames_reply_to": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": true,
"is_newest_message": false,
"message_type": "outbound",
"labels": [
"UNREAD",
"CATEGORY_PROMOTIONS",
"CATEGORY_PERSONAL"
],
"is_touch": true,
"is_nudge": false,
"touch_time": null,
"timestamp": 1675262259,
"is_closing_email": false,
"is_included_in_stats": true,
"reply_is_relevant": true,
"reply_is_outlier": false,
"agents_read_status": [],
"friendly_touch_time": "N/A"
},
{
"internet_message_id": "[email protected]",
"date_time": "Feb 1st 2023 14:13:14",
"subject": "Web Enquiry Form: visualize cross-media mindshare",
"references": null,
"replytime": null,
"classification": "first",
"raw_replytime": null,
"friendly_reply_time": "N/A",
"friendly_raw_reply_time": "N/A",
"email_domains": [
"crooks.com",
"timetoreply.com"
],
"email_domains_from": [
"crooks.com"
],
"email_domains_to": [
"timetoreply.com"
],
"email_domains_reply_to": [],
"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_reply_to": [],
"email_usernames_received": [
"[email protected]"
],
"is_initial_reply": false,
"is_newest_message": false,
"message_type": "inbound",
"labels": [],
"is_touch": false,
"is_nudge": false,
"touch_time": null,
"timestamp": 1675260794,
"is_closing_email": false,
"is_included_in_stats": true,
"reply_is_relevant": false,
"reply_is_outlier": false,
"agents_read_status": {
"[email protected]": true
},
"friendly_touch_time": "N/A"
}
],
"labels": [
"UNREAD",
"CATEGORY_PROMOTIONS",
"CATEGORY_PERSONAL"
],
"has_contact_success": true,
"contact_success_time": 13534,
"contact_reply_time": 12069,
"deal": {
"id": 23,
"deal_stage": 1,
"deal_value": 1571,
"owner": 5,
"name": "Rustic Silk Shoes"
},
"subject": "RE: Web Enquiry Form: visualize cross-media mindshare",
"initial_reply_is_relevant": true,
"initial_reply_is_included_in_stats": 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/stat-breakdown?stat=threads.total&model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=1",
"from": 1,
"last_page": 169,
"last_page_url": "https://portal.timetoreply.com/api/logs/stat-breakdown?stat=threads.total&model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=169",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/stat-breakdown?stat=threads.total&model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/logs/stat-breakdown?stat=threads.total&model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/stat-breakdown?stat=threads.total&model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=3",
"label": "3",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/stat-breakdown?stat=threads.total&model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=4",
"label": "4",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/stat-breakdown?stat=threads.total&model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=5",
"label": "5",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/stat-breakdown?stat=threads.total&model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=6",
"label": "6",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/stat-breakdown?stat=threads.total&model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=7",
"label": "7",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/stat-breakdown?stat=threads.total&model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=8",
"label": "8",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/stat-breakdown?stat=threads.total&model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=9",
"label": "9",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/stat-breakdown?stat=threads.total&model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=10",
"label": "10",
"active": false
},
{
"url": null,
"label": "...",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/stat-breakdown?stat=threads.total&model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=168",
"label": "168",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/stat-breakdown?stat=threads.total&model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=169",
"label": "169",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/logs/stat-breakdown?stat=threads.total&model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/logs/stat-breakdown?stat=threads.total&model=My%20Company&model_type=Internal&model_com=Top%20Revenue%20Contacts&model_type_com=Contact%20Group&per_page=2&direction=desc&page=2",
"path": "https://portal.timetoreply.com/api/logs/stat-breakdown",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 338
},
"type": "threads",
"show_column": null,
"friendly_name": "Total Conversations",
"explainer": "All conversations."
}
Received response:
Request failed with error:
Entities
Entities - Search Searches your company entities
requires authentication
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": [
"kling.com",
"lakin.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?per_page=2&search=Top%20Revenue&type=all&page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/entities/search?per_page=2&search=Top%20Revenue&type=all&page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/search?per_page=2&search=Top%20Revenue&type=all&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:
Mailboxes - List List all mailboxes
requires authentication
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",
"product_type": "success",
};
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',
'product_type' => 'success',
],
]
);
$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&product_type=success" \
--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": 2,
"company_id": 1,
"company_name": "timetoreply",
"name": "Koby Maggio",
"email": "[email protected]",
"main_type": "Google",
"active": true,
"created_at": "2023-01-25 19:48:26",
"email_usernames": [
"[email protected]"
],
"time_zone": {
"id": 29,
"php_timezone": "Europe/London",
"friendly_name": "Greenwich Mean Time => Dublin, Edinburgh, Lisbon, London"
},
"newest_message_date": "2023-01-31 17:27:04",
"ingestion_started_date": "2023-01-13 17:17:10",
"ingestion_completed_date": "2023-02-01 19:48:35",
"ingestion_duration": "458h:31m",
"ingestion_duration_seconds": 1650685,
"user_permissions": [],
"search_string": "Koby Maggio [email protected]",
"leave_days": [],
"work_days": [],
"business_hours": [],
"product_type": "success",
"is_user": false,
"last_used_addon": null,
"optimiser_installed": false
},
{
"id": 4,
"company_id": 1,
"company_name": "timetoreply",
"name": "Peggie Bosco",
"email": "[email protected]",
"main_type": "Google",
"active": true,
"created_at": "2023-01-25 19:48:26",
"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": "2022-07-01 14:46:50",
"ingestion_completed_date": "2022-10-17 09:07:33",
"ingestion_duration": "2586h:20m",
"ingestion_duration_seconds": 9310843,
"user_permissions": [],
"search_string": "Peggie Bosco [email protected]",
"leave_days": [],
"work_days": [],
"business_hours": [],
"product_type": "success",
"is_user": false,
"last_used_addon": null,
"optimiser_installed": false
}
],
"first_page_url": "https://portal.timetoreply.com/api/entities/agents?direction=asc&per_page=2&product_type=success&page=1",
"from": 1,
"last_page": 2,
"last_page_url": "https://portal.timetoreply.com/api/entities/agents?direction=asc&per_page=2&product_type=success&page=2",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/agents?direction=asc&per_page=2&product_type=success&page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/entities/agents?direction=asc&per_page=2&product_type=success&page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/agents?direction=asc&per_page=2&product_type=success&page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/entities/agents?direction=asc&per_page=2&product_type=success&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 - Invite Create a mailbox invitation
requires authentication
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=1675453743&signature=5207d39d44cc05d83ac959486e23717fc4c2f6e5d87c2fd5050afcdf7adfc7e2",
"id": 2
}
Received response:
Request failed with error:
Authentication Invites - Remind Remind A Mailbox about an Authentication Invitation
requires authentication
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:
Authentication Invites - Delete Delete an Authentication Invitation
requires authentication
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:
Entities - IT Help Request Help from your IT team to set up timetoreply
requires authentication
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": "Hey Peter, please could you help me getting timetoreply set up?"
};
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' => 'Hey Peter, please could you help me getting timetoreply set up?',
],
]
);
$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\": \"Hey Peter, please could you help me getting timetoreply set up?\"
}"
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:
Mailboxes -Exchange - Bulk Add Store a list of Exchange Mailboxes
requires authentication
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 -Mimecast - Update List Force an update of potential Mimecast mailboxes
requires authentication
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 -Mimecast - Token Generate a Mimecast token from a username and password
requires authentication
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 - List Load potential Mimecast mailboxes
requires authentication
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 Search potential Mimecast Mailboxes
requires authentication
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 - Bulk Add Add a list of email addresses as mailboxes
requires authentication
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 -O365 - List Load potential O365 Mailboxes
requires authentication
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 Search potential O365 Mailboxes
requires authentication
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:
Mailboxes -O365 - Bulk Add Store a list of O365 Mailboxes
requires authentication
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 -Gmail - List Load potential Gmail mailboxes
requires authentication
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 -Gmail - Bulk Add Add multiple mailboxes at once
requires authentication
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 -Imap - Update Update Imap Mailbox
requires authentication
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 -EWS - Update Update Imap Mailbox
requires authentication
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 - Delete Delete a mailbox
requires authentication
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 - Re-authenticate Send a re-authentication request to a mailbox.
requires authentication
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 Gia Haley. Please ask them to check their email and SPAM box"
}
Received response:
Request failed with error:
Mailboxes - Update Update a mailbox
requires authentication
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 - Search all Searches all mailboxes for a given string including in Gmail, O365 if authenticated using admin credentials.
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/agents/search-all-company-mailboxes"
);
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/search-all-company-mailboxes',
[
'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/search-all-company-mailboxes" \
--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:
Contacts - List
requires authentication
Get all existing contacts.
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contacts"
);
const params = {
"sort_by": "name",
"direction": "asc",
"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' => [
'sort_by' => 'name',
'direction' => 'asc',
'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?sort_by=name&direction=asc&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": 585,
"company_id": 1,
"name": "[email protected]",
"type": "email",
"crm_type": null,
"search_string": "[email protected]",
"is_lead": false
},
{
"id": 99,
"company_id": 1,
"name": "[email protected]",
"type": "email",
"crm_type": null,
"search_string": "[email protected]",
"is_lead": false
}
],
"first_page_url": "https://portal.timetoreply.com/api/entities/contacts?direction=asc&per_page=2&page=1",
"from": 1,
"last_page": 325,
"last_page_url": "https://portal.timetoreply.com/api/entities/contacts?direction=asc&per_page=2&page=325",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?direction=asc&per_page=2&page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?direction=asc&per_page=2&page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?direction=asc&per_page=2&page=3",
"label": "3",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?direction=asc&per_page=2&page=4",
"label": "4",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?direction=asc&per_page=2&page=5",
"label": "5",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?direction=asc&per_page=2&page=6",
"label": "6",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?direction=asc&per_page=2&page=7",
"label": "7",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?direction=asc&per_page=2&page=8",
"label": "8",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?direction=asc&per_page=2&page=9",
"label": "9",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?direction=asc&per_page=2&page=10",
"label": "10",
"active": false
},
{
"url": null,
"label": "...",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?direction=asc&per_page=2&page=324",
"label": "324",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?direction=asc&per_page=2&page=325",
"label": "325",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contacts?direction=asc&per_page=2&page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/entities/contacts?direction=asc&per_page=2&page=2",
"path": "https://portal.timetoreply.com/api/entities/contacts",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 649
}
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": 815,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
}
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/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "[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/contacts/1',
[
'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 PUT \
"https://portal.timetoreply.com/api/entities/contacts/1" \
--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": 1,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
}
Received response:
Request failed with error:
Contacts - Delete Delete a contact
requires authentication
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 - Delete multi Delete multiple contacts
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contacts/delete-multiple"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"ids": [
1,
2
]
};
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/delete-multiple',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'ids' => [
1,
2,
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/contacts/delete-multiple" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"ids\": [
1,
2
]
}"
Example response (200):
{
"status": "Contacts deleted."
}
Received response:
Request failed with error:
Contacts - Search for possible leads Searches through your conversations to find possible leads.
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contacts/search-possible-leads"
);
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/search-possible-leads',
[
'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/contacts/search-possible-leads" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
[
{
"email": "[email protected]"
},
{
"email": "[email protected]"
}
]
Received response:
Request failed with error:
Contacts - Create multiple Stores multiple email addresses as contacts/leads
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/contacts/create-multi"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"customers": [
{
"name": "[email protected]",
"is_lead": true
}
]
};
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/create-multi',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'customers' => [
[
'name' => '[email protected]',
'is_lead' => true,
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/contacts/create-multi" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"customers\": [
{
\"name\": \"[email protected]\",
\"is_lead\": true
}
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
[
{
"company_id": 1,
"name": "[email protected]",
"type": "email",
"is_lead": true,
"id": 816
}
]
Received response:
Request failed with error:
Contact Groups - List List all Contact Groups
requires authentication
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": [
"kling.com",
"lakin.net"
],
"user_permissions": [
7
],
"search_string": "Top Revenue Customers [email protected] [email protected] kling.com lakin.net"
},
{
"id": 2,
"company_id": 1,
"name": "Hubspot Customer Group",
"crm_type": "hubspot",
"customer_emails": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"gorczany.net",
"daniel.info"
],
"user_permissions": [],
"search_string": "Hubspot Customer Group [email protected] [email protected] gorczany.net daniel.info"
}
],
"first_page_url": "https://portal.timetoreply.com/api/entities/contact-groups?direction=asc&per_page=2&page=1",
"from": 1,
"last_page": 4,
"last_page_url": "https://portal.timetoreply.com/api/entities/contact-groups?direction=asc&per_page=2&page=4",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contact-groups?direction=asc&per_page=2&page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/entities/contact-groups?direction=asc&per_page=2&page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contact-groups?direction=asc&per_page=2&page=3",
"label": "3",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contact-groups?direction=asc&per_page=2&page=4",
"label": "4",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/contact-groups?direction=asc&per_page=2&page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/entities/contact-groups?direction=asc&per_page=2&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 - Store Store a Contact Group
requires authentication
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": "Most important 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' => 'Most important 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\": \"Most important 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": "Most important contacts",
"members": {
"emails": [
"[email protected]"
],
"domains": [
"example.com"
]
}
}
Received response:
Request failed with error:
Contact Groups - Show Show a single Contact Group
requires authentication
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": [
"kling.com",
"lakin.net"
],
"model_type": "Contact Group",
"icon": "user-friends"
}
Received response:
Request failed with error:
Contact Groups - Update Update a Contact Group
requires authentication
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": "Most important contacts updated",
"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' => 'Most important contacts updated',
'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\": \"Most important contacts updated\",
\"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": "Most important contacts updated",
"members": {
"emails": [
"[email protected]"
],
"domains": [
"example.com"
]
}
}
Received response:
Request failed with error:
Contact Groups - Delete Delete a Contact Group
requires authentication
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 - Add Email Add An Email To A Contact Group
requires authentication
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": "Most important contacts updated",
"members": {
"emails": [
"[email protected]",
"[email protected]"
],
"domains": [
"example.com"
]
}
}
Received response:
Request failed with error:
Contact Groups - Delete Email Remove An Email From A Contact Group
requires authentication
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": "Most important contacts updated",
"members": {
"emails": [
"[email protected]"
],
"domains": [
"example.com"
]
}
}
Received response:
Request failed with error:
Contact Groups - Remove Members Remove An Email From A Contact Group
requires authentication
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": [
"quos"
]
};
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' => [
'quos',
],
],
]
);
$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\": [
\"quos\"
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 1,
"name": "Most important contacts updated",
"members": {
"emails": [
"[email protected]"
],
"domains": [
"example.com"
]
}
}
Received response:
Request failed with error:
Contact Groups - Add Domain Add A Domain To A Contact Group
requires authentication
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": "Most important contacts updated",
"members": {
"emails": [
"[email protected]"
],
"domains": [
"example.com"
]
}
}
Received response:
Request failed with error:
Contact Groups - Delete Domain Remove A Domain From A Contact Group
requires authentication
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": "Most important contacts updated",
"members": {
"emails": [
"[email protected]"
],
"domains": []
}
}
Received response:
Request failed with error:
Group Mailboxes - List Show all Group Mailboxes
requires authentication
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": "US Support",
"email_usernames": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
],
"model_type": "Group Mailbox",
"icon": "users"
},
{
"id": 2,
"name": "EU Support",
"email_usernames": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
],
"model_type": "Group Mailbox",
"icon": "users"
}
],
"first_page_url": "https://portal.timetoreply.com/api/entities/group-mailboxes?per_page=2&page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/entities/group-mailboxes?per_page=2&page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/group-mailboxes?per_page=2&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 - Store Store a Group Mailbox
requires authentication
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]"
],
"first_reply_time_goal": 60,
"overall_reply_time_goal": 120,
"time_to_close_goal": 180
};
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]',
],
'first_reply_time_goal' => 60,
'overall_reply_time_goal' => 120,
'time_to_close_goal' => 180,
],
]
);
$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]\"
],
\"first_reply_time_goal\": 60,
\"overall_reply_time_goal\": 120,
\"time_to_close_goal\": 180
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 5,
"company_id": 1,
"name": "Sales Mailbox",
"first_reply_time_goal": 3600,
"overall_reply_time_goal": 7200,
"time_to_close_goal": 10800,
"created_at": "2023-02-01 19:49:04",
"updated_at": "2023-02-01 19:49:04",
"product_type": "success",
"members": {
"current_page": 1,
"data": [],
"first_page_url": "https://portal.timetoreply.com/api/entities/group-mailboxes?per_page=2&page=1",
"from": null,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/entities/group-mailboxes?per_page=2&page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/group-mailboxes?per_page=2&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": 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 - Show Show a single Group Mailbox
requires authentication
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": "US Support",
"email_usernames": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
],
"model_type": "Group Mailbox",
"icon": "users"
}
Received response:
Request failed with error:
Group Mailboxes - Update Update a Group Mailbox
requires authentication
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]"
],
"first_reply_time_goal": 60,
"overall_reply_time_goal": 120,
"time_to_close_goal": 180
};
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]',
],
'first_reply_time_goal' => 60,
'overall_reply_time_goal' => 120,
'time_to_close_goal' => 180,
],
]
);
$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]\"
],
\"first_reply_time_goal\": 60,
\"overall_reply_time_goal\": 120,
\"time_to_close_goal\": 180
}"
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": 3600,
"overall_reply_time_goal": 7200,
"time_to_close_goal": 10800,
"created_at": "2023-02-01 19:48:27",
"updated_at": "2023-02-01 19:49:05",
"product_type": "success",
"pending_invites_count": 0,
"members": {
"current_page": 1,
"data": [
{
"email": "[email protected]",
"type": 1,
"existing": true
},
{
"email": "[email protected]",
"type": 1,
"existing": true
}
],
"first_page_url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1?per_page=2&page=1",
"from": 1,
"last_page": 2,
"last_page_url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1?per_page=2&page=2",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1?per_page=2&page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1?per_page=2&page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1?per_page=2&page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1?per_page=2&page=2",
"path": "https://portal.timetoreply.com/api/entities/group-mailboxes/1",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 3
},
"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 - Delete Delete a Group Mailbox
requires authentication
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 Mailbox Members - List Show members of a Group Mailbox
requires authentication
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": "https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents?direction=asc&per_page=2&page=1",
"from": 1,
"last_page": 2,
"last_page_url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents?direction=asc&per_page=2&page=2",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents?direction=asc&per_page=2&page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents?direction=asc&per_page=2&page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents?direction=asc&per_page=2&page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents?direction=asc&per_page=2&page=2",
"path": "https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 3
}
Received response:
Request failed with error:
Group Mailbox Members - Store Add a member to a Group Mailbox
requires authentication
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
},
{
"email": "[email protected]",
"type": 1,
"existing": true
}
],
"first_page_url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents?per_page=2&page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents?per_page=2&page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents?per_page=2&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/1/agents",
"per_page": 25,
"prev_page_url": null,
"to": 4,
"total": 4,
"failed": []
}
Received response:
Request failed with error:
Group Mailbox Members - Delete Remove a member from a Group Mailbox
requires authentication
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
},
{
"email": "[email protected]",
"type": 1,
"existing": true
}
],
"first_page_url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents?per_page=2&page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents?per_page=2&page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/group-mailboxes/1/agents?per_page=2&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/1/agents",
"per_page": 25,
"prev_page_url": null,
"to": 3,
"total": 3,
"failed": []
}
Received response:
Request failed with error:
Teams - List Show all teams
requires authentication
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": 3,
"name": "US Support Team",
"email_usernames": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
],
"model_type": "Team",
"icon": "handshake"
},
{
"id": 4,
"name": "EU Support Team",
"email_usernames": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
],
"model_type": "Team",
"icon": "handshake"
}
],
"first_page_url": "https://portal.timetoreply.com/api/entities/teams?per_page=2&page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/entities/teams?per_page=2&page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/teams?per_page=2&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 - Store Store a new Team
requires authentication
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": "ACME Support Team One",
"first_reply_time_goal": 30,
"overall_reply_time_goal": 60,
"time_to_close_goal": 120
};
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' => 'ACME Support Team One',
'first_reply_time_goal' => 30,
'overall_reply_time_goal' => 60,
'time_to_close_goal' => 120,
],
]
);
$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\": \"ACME Support Team One\",
\"first_reply_time_goal\": 30,
\"overall_reply_time_goal\": 60,
\"time_to_close_goal\": 120
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 5,
"company_id": 1,
"name": "ACME Support Team One",
"first_reply_time_goal": 1800,
"overall_reply_time_goal": 3600,
"time_to_close_goal": 7200,
"created_at": "2023-02-01 19:49:05",
"updated_at": "2023-02-01 19:49:05",
"product_type": "success",
"members": {
"current_page": 1,
"data": [],
"first_page_url": "https://portal.timetoreply.com/api/entities/teams?per_page=2&page=1",
"from": null,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/entities/teams?per_page=2&page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/teams?per_page=2&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": 25,
"prev_page_url": null,
"to": null,
"total": 0,
"failed": []
},
"model_type": "Team",
"pending_invites": []
}
Received response:
Request failed with error:
Teams - Show Show a single Team
requires authentication
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]",
"[email protected]",
"[email protected]"
],
"model_type": "Team",
"icon": "handshake"
}
Received response:
Request failed with error:
Teams - Update Update a Team
requires authentication
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": "ACME Support Team Two",
"first_reply_time_goal": 30,
"overall_reply_time_goal": 60,
"time_to_close_goal": 120
};
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' => 'ACME Support Team Two',
'first_reply_time_goal' => 30,
'overall_reply_time_goal' => 60,
'time_to_close_goal' => 120,
],
]
);
$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\": \"ACME Support Team Two\",
\"first_reply_time_goal\": 30,
\"overall_reply_time_goal\": 60,
\"time_to_close_goal\": 120
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 1,
"company_id": 1,
"name": "ACME Support Team Two",
"first_reply_time_goal": 1800,
"overall_reply_time_goal": 3600,
"time_to_close_goal": 7200,
"created_at": "2023-02-01 19:48:27",
"updated_at": "2023-02-01 19:49:05",
"product_type": "ignite",
"members": {
"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": "https://portal.timetoreply.com/api/entities/teams/1?per_page=2&page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/entities/teams/1?per_page=2&page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/teams/1?per_page=2&page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://portal.timetoreply.com/api/entities/teams/1",
"per_page": 25,
"prev_page_url": null,
"to": 3,
"total": 3,
"failed": []
},
"model_type": "Team",
"pending_invites": []
}
Received response:
Request failed with error:
Teams - Delete Delete a Team
requires authentication
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:
Team Members - List Show members of a Team
requires authentication
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": "https://portal.timetoreply.com/api/entities/teams/1/agents?direction=asc&per_page=2&page=1",
"from": 1,
"last_page": 2,
"last_page_url": "https://portal.timetoreply.com/api/entities/teams/1/agents?direction=asc&per_page=2&page=2",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/teams/1/agents?direction=asc&per_page=2&page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/entities/teams/1/agents?direction=asc&per_page=2&page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/teams/1/agents?direction=asc&per_page=2&page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/entities/teams/1/agents?direction=asc&per_page=2&page=2",
"path": "https://portal.timetoreply.com/api/entities/teams/1/agents",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 3,
"failed": []
}
Received response:
Request failed with error:
Team Members - Store Add a member to a Team
requires authentication
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": "https://portal.timetoreply.com/api/entities/teams/1/agents?per_page=2&page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/entities/teams/1/agents?per_page=2&page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/teams/1/agents?per_page=2&page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://portal.timetoreply.com/api/entities/teams/1/agents",
"per_page": 25,
"prev_page_url": null,
"to": 3,
"total": 3,
"failed": []
}
Received response:
Request failed with error:
Team Members - Delete Remove a member from a Team
requires authentication
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": "https://portal.timetoreply.com/api/entities/teams/1/agents?per_page=2&page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/entities/teams/1/agents?per_page=2&page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/entities/teams/1/agents?per_page=2&page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://portal.timetoreply.com/api/entities/teams/1/agents",
"per_page": 25,
"prev_page_url": null,
"to": 2,
"total": 2,
"failed": []
}
Received response:
Request failed with error:
Filters - List List all current filters and entities
requires authentication
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": 6,
"name": "Amie Dare",
"email_usernames": [
"[email protected]"
],
"model_type": "Mailbox",
"icon": "user-plus"
},
{
"id": 2,
"name": "Koby Maggio",
"email_usernames": [
"[email protected]"
],
"model_type": "Mailbox",
"icon": "user-plus"
},
{
"id": 4,
"name": "Peggie Bosco",
"email_usernames": [
"[email protected]"
],
"model_type": "Mailbox",
"icon": "user-plus"
},
{
"id": 1,
"name": "Peter Rabbit",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"model_type": "Mailbox",
"icon": "user-plus"
}
],
"teams": [
{
"id": 4,
"name": "EU Support Team",
"email_usernames": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
],
"model_type": "Team",
"icon": "handshake"
},
{
"id": 3,
"name": "US Support Team",
"email_usernames": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
],
"model_type": "Team",
"icon": "handshake"
}
],
"group_mailboxes": [
{
"id": 2,
"name": "EU Support",
"email_usernames": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
],
"model_type": "Group Mailbox",
"icon": "users"
},
{
"id": 1,
"name": "US Support",
"email_usernames": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
],
"model_type": "Group Mailbox",
"icon": "users"
}
],
"customer_groups": [
{
"id": 3,
"name": "Active Campaign Customer Group",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"dubuque.com",
"langosh.info"
],
"model_type": "Contact Group",
"icon": "user-friends"
},
{
"id": 5,
"name": "Constant Contact Customer Group",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"nader.info",
"nicolas.com"
],
"model_type": "Contact Group",
"icon": "user-friends"
},
{
"id": 2,
"name": "Hubspot Customer Group",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"gorczany.net",
"daniel.info"
],
"model_type": "Contact Group",
"icon": "user-friends"
},
{
"id": 4,
"name": "Maropost Customer Group",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"renner.com",
"heathcote.info"
],
"model_type": "Contact Group",
"icon": "user-friends"
},
{
"id": 8,
"name": "Most important contacts",
"email_usernames": [
"[email protected]"
],
"customer_domains": [
"example.com"
],
"model_type": "Contact Group",
"icon": "user-friends"
},
{
"id": 6,
"name": "Salesforce Customer Group",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"jacobs.com",
"carroll.com"
],
"model_type": "Contact Group",
"icon": "user-friends"
},
{
"id": 1,
"name": "Top Revenue Customers",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"kling.com",
"lakin.net"
],
"model_type": "Contact Group",
"icon": "user-friends"
},
{
"id": 7,
"name": "Zoho Customer Group",
"email_usernames": [
"[email protected]",
"[email protected]"
],
"customer_domains": [
"ferry.com",
"torp.com"
],
"model_type": "Contact Group",
"icon": "user-friends"
}
],
"customers": [
{
"id": 585,
"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": 177,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 704,
"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": 644,
"name": "[email protected]nd.com",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 770,
"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": 193,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 370,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 695,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 398,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 220,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 340,
"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": 429,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 786,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 590,
"name": "[email protected]",
"email_usernames": [
"alan.lu[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 805,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 334,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 675,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 519,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 703,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 297,
"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": 672,
"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": 303,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 189,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 353,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 496,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 801,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 608,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 775,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 458,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 688,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 263,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 588,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 799,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 707,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 508,
"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": 535,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 746,
"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": 310,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 565,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 436,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 474,
"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": 525,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 217,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 206,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 216,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 403,
"name": "[email protected]y.org",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 110,
"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": 582,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 722,
"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": 171,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 684,
"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": 333,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 665,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 463,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 685,
"name": "[email protected]",
"email_usernames": [
"[email protected]e.com"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 253,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 552,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 487,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 637,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 765,
"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": 413,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 326,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 629,
"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": 75,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 343,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 656,
"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": 611,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 777,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 539,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 737,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 352,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 369,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 792,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 242,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 394,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 716,
"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": 532,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 738,
"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": 677,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 275,
"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": 359,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 435,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 730,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 709,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 624,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 364,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 257,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 451,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 556,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 581,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 332,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 661,
"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": 191,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 580,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 697,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 222,
"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": 317,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 341,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 605,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 793,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 538,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 734,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 355,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 366,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 234,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 683,
"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": 477,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 583,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 723,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 434,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 619,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 772,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 571,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 682,
"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": 62,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 404,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 374,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 615,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 782,
"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": 45,
"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": 118,
"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": 308,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 335,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 670,
"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": 499,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 363,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 456,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 550,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 741,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 564,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 258,
"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": 632,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 32,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 414,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 750,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 251,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 248,
"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": 90,
"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": 2,
"name": "customer.com",
"email_usernames": [
"customer.com"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 241,
"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": 279,
"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": 278,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 376,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 551,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 739,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 389,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 503,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 813,
"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": 453,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 293,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 187,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 328,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 589,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 773,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 329,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 671,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 301,
"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": 472,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 754,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 452,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 594,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 780,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 236,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 461,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
},
{
"id": 396,
"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": 628,
"name": "[email protected]",
"email_usernames": [
"[email protected]"
],
"model_type": "Contact",
"icon": "user"
}
],
"lead_sources": [
{
"id": 1,
"name": "US Sales Box",
"email_usernames": [],
"model_type": "Lead Source",
"icon": "square-list"
},
{
"id": 2,
"name": "Web Enquiry Form",
"email_usernames": [],
"model_type": "Lead Source",
"icon": "square-list"
}
],
"labels": [
"CATEGORY_FORUMS",
"CATEGORY_PERSONAL",
"CATEGORY_PROMOTIONS",
"CATEGORY_SOCIAL",
"CATEGORY_UPDATES",
"IMPORTANT",
"INBOX",
"SENT",
"STARRED",
"UNREAD"
],
"goals": {
"first_reply_time_goal": 7200,
"first_reply_time_goal_bands": [],
"overall_reply_time_goal": 14400,
"overall_reply_time_goal_bands": [],
"time_to_close_goal": 86400,
"time_to_close_goal_bands": []
}
}
Received response:
Request failed with error:
Mailboxes - Invite As Users Invite a selection of mailboxes as users
requires authentication
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:
Deals - List List all Deals
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/sales/deals"
);
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/sales/deals',
[
'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/sales/deals?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,
"name": "Rustic Granite Gloves",
"company_id": 1,
"agent_id": 1,
"deal_value": 3207,
"deal_stage": 11,
"thread_ids": [],
"created_at": "Feb 1st 2023 19:48:28",
"updated_at": "2023-02-01 19:48:28",
"search_string": "Rustic Granite Gloves ",
"agent": {
"id": 1,
"name": "Peter Rabbit"
},
"emails": []
},
{
"id": 2,
"name": "Aerodynamic Granite Bottle",
"company_id": 1,
"agent_id": 2,
"deal_value": 3910,
"deal_stage": 11,
"thread_ids": [
20,
56,
86,
98,
137
],
"created_at": "Feb 1st 2023 19:48:33",
"updated_at": "2023-02-01 19:48:33",
"search_string": "Aerodynamic Granite Bottle [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]",
"agent": {
"id": 2,
"name": "Koby Maggio"
},
"emails": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
]
}
],
"first_page_url": "https://portal.timetoreply.com/api/sales/deals?direction=asc&per_page=2&page=1",
"from": 1,
"last_page": 25,
"last_page_url": "https://portal.timetoreply.com/api/sales/deals?direction=asc&per_page=2&page=25",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/sales/deals?direction=asc&per_page=2&page=1",
"label": "1",
"active": true
},
{
"url": "https://portal.timetoreply.com/api/sales/deals?direction=asc&per_page=2&page=2",
"label": "2",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/sales/deals?direction=asc&per_page=2&page=3",
"label": "3",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/sales/deals?direction=asc&per_page=2&page=4",
"label": "4",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/sales/deals?direction=asc&per_page=2&page=5",
"label": "5",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/sales/deals?direction=asc&per_page=2&page=6",
"label": "6",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/sales/deals?direction=asc&per_page=2&page=7",
"label": "7",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/sales/deals?direction=asc&per_page=2&page=8",
"label": "8",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/sales/deals?direction=asc&per_page=2&page=9",
"label": "9",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/sales/deals?direction=asc&per_page=2&page=10",
"label": "10",
"active": false
},
{
"url": null,
"label": "...",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/sales/deals?direction=asc&per_page=2&page=24",
"label": "24",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/sales/deals?direction=asc&per_page=2&page=25",
"label": "25",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/sales/deals?direction=asc&per_page=2&page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://portal.timetoreply.com/api/sales/deals?direction=asc&per_page=2&page=2",
"path": "https://portal.timetoreply.com/api/sales/deals",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 49
}
Received response:
Request failed with error:
Tools
CRM Connections - CRM Fields List Possible CRM Fields for Mapping
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/crm-properties-mapping"
);
const params = {
"crmType": "hubspot",
"stringOnly": "1",
"expanded": "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/crm-properties-mapping',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'crmType' => 'hubspot',
'stringOnly' => '1',
'expanded' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/entities/crm-properties-mapping?crmType=hubspot&stringOnly=1&expanded=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: []
{
"contacts": {
"annualrevenue": {
"label": "Annual Revenue",
"type": "string"
},
"average_first_reply_time": {
"label": "Average First Reply Time",
"type": "string"
},
"average_overall_reply_time": {
"label": "Average Overall Reply Time",
"type": "string"
},
"city": {
"label": "City",
"type": "string"
},
"company": {
"label": "Company Name",
"type": "string"
},
"company_size": {
"label": "Company size",
"type": "string"
},
"country": {
"label": "Country/Region",
"type": "string"
},
"date_of_birth": {
"label": "Date of birth",
"type": "string"
},
"degree": {
"label": "Degree",
"type": "string"
},
"email": {
"label": "Email",
"type": "string"
},
"hs_facebookid": {
"label": "Facebook ID",
"type": "string"
},
"hs_facebook_click_id": {
"label": "Facebook click id",
"type": "string"
},
"fax": {
"label": "Fax Number",
"type": "string"
},
"field_of_study": {
"label": "Field of study",
"type": "string"
},
"firstname": {
"label": "First Name",
"type": "string"
},
"gender": {
"label": "Gender",
"type": "string"
},
"hs_google_click_id": {
"label": "Google ad click id",
"type": "string"
},
"graduation_date": {
"label": "Graduation date",
"type": "string"
},
"owneremail": {
"label": "HubSpot Owner Email (legacy)",
"type": "string"
},
"ownername": {
"label": "HubSpot Owner Name (legacy)",
"type": "string"
},
"industry": {
"label": "Industry",
"type": "string"
},
"jobtitle": {
"label": "Job Title",
"type": "string"
},
"job_function": {
"label": "Job function",
"type": "string"
},
"lastname": {
"label": "Last Name",
"type": "string"
},
"linkedinbio": {
"label": "LinkedIn Bio",
"type": "string"
},
"hs_linkedinid": {
"label": "Linkedin ID",
"type": "string"
},
"marital_status": {
"label": "Marital Status",
"type": "string"
},
"hs_content_membership_email": {
"label": "Member email",
"type": "string"
},
"hs_content_membership_notes": {
"label": "Membership Notes",
"type": "string"
},
"message": {
"label": "Message",
"type": "string"
},
"military_status": {
"label": "Military status",
"type": "string"
},
"mobilephone": {
"label": "Mobile Phone Number",
"type": "string"
},
"phone": {
"label": "Phone Number",
"type": "string"
},
"photo": {
"label": "Photo",
"type": "string"
},
"zip": {
"label": "Postal Code",
"type": "string"
},
"relationship_status": {
"label": "Relationship Status",
"type": "string"
},
"salutation": {
"label": "Salutation",
"type": "string"
},
"school": {
"label": "School",
"type": "string"
},
"seniority": {
"label": "Seniority",
"type": "string"
},
"start_date": {
"label": "Start date",
"type": "string"
},
"state": {
"label": "State/Region",
"type": "string"
},
"address": {
"label": "Street Address",
"type": "string"
},
"twitterbio": {
"label": "Twitter Bio",
"type": "string"
},
"hs_twitterid": {
"label": "Twitter ID",
"type": "string"
},
"twitterprofilephoto": {
"label": "Twitter Profile Photo",
"type": "string"
},
"twitterhandle": {
"label": "Twitter Username",
"type": "string"
},
"website": {
"label": "Website URL",
"type": "string"
},
"hs_whatsapp_phone_number": {
"label": "WhatsApp Phone Number",
"type": "string"
},
"work_email": {
"label": "Work email",
"type": "string"
},
"hs_googleplusid": {
"label": "googleplus ID",
"type": "string"
}
},
"companies": {
"about_us": {
"label": "About Us",
"type": "string"
},
"city": {
"label": "City",
"type": "string"
},
"domain": {
"label": "Company Domain Name",
"type": "string"
},
"name": {
"label": "Company name",
"type": "string"
},
"country": {
"label": "Country/Region",
"type": "string"
},
"description": {
"label": "Description",
"type": "string"
},
"facebook_company_page": {
"label": "Facebook Company Page",
"type": "string"
},
"googleplus_page": {
"label": "Google Plus Page",
"type": "string"
},
"owneremail": {
"label": "HubSpot Owner Email",
"type": "string"
},
"ownername": {
"label": "HubSpot Owner Name",
"type": "string"
},
"linkedinbio": {
"label": "LinkedIn Bio",
"type": "string"
},
"linkedin_company_page": {
"label": "LinkedIn Company Page",
"type": "string"
},
"phone": {
"label": "Phone Number",
"type": "string"
},
"zip": {
"label": "Postal Code",
"type": "string"
},
"state": {
"label": "State/Region",
"type": "string"
},
"address": {
"label": "Street Address",
"type": "string"
},
"address2": {
"label": "Street Address 2",
"type": "string"
},
"timezone": {
"label": "Time Zone",
"type": "string"
},
"total_money_raised": {
"label": "Total Money Raised",
"type": "string"
},
"twitterbio": {
"label": "Twitter Bio",
"type": "string"
},
"twitterhandle": {
"label": "Twitter Handle",
"type": "string"
},
"website": {
"label": "Website URL",
"type": "string"
},
"founded_year": {
"label": "Year Founded",
"type": "string"
}
}
}
Received response:
Request failed with error:
CRM Connections - Store Store A New CRM Connection
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/entities/crm-properties-mapping"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"crmType": "hubspot",
"selectedEmailProperty": "email_address"
};
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/crm-properties-mapping',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'crmType' => 'hubspot',
'selectedEmailProperty' => 'email_address',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/entities/crm-properties-mapping" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"crmType\": \"hubspot\",
\"selectedEmailProperty\": \"email_address\"
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
"Contacts are being synced now, it will take some time to complete. Please feel free to complete the advanced setup, you can navigate away from this page at any time."
Received response:
Request failed with error:
Domain Filters - List List all Domain Filters
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/message-filters/domains"
);
const params = {
"sort_by": "domain",
"direction": "asc",
"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/tools/settings/message-filters/domains',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'sort_by' => 'domain',
'direction' => 'asc',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/tools/settings/message-filters/domains?sort_by=domain&direction=asc&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: []
{
"domains": {
"current_page": 1,
"data": [
"spam.com"
],
"first_page_url": "https://portal.timetoreply.com/api/tools/settings/message-filters/domains?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/tools/settings/message-filters/domains?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/tools/settings/message-filters/domains?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://portal.timetoreply.com/api/tools/settings/message-filters/domains",
"per_page": 15,
"prev_page_url": null,
"to": 1,
"total": 1
},
"whitelisting": false
}
Received response:
Request failed with error:
Domain Filters - Store Block domains
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/message-filters/domains/block"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"domains": [
"spam.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/tools/settings/message-filters/domains/block',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'domains' => [
'spam.com',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/tools/settings/message-filters/domains/block" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"domains\": [
\"spam.com\"
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
[
{
"id": 11,
"domain": "spam.com"
}
]
Received response:
Request failed with error:
Domain Filters - Delete Unblock domains
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/message-filters/domains/unblock"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"domains": [
"spam.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/tools/settings/message-filters/domains/unblock',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'domains' => [
'spam.com',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/tools/settings/message-filters/domains/unblock" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"domains\": [
\"spam.com\"
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"status": "Domains unblocked successfully"
}
Received response:
Request failed with error:
Domain Filters - Delete All Unblock All domains
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/message-filters/domains/unblockAll"
);
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/tools/settings/message-filters/domains/unblockAll',
[
'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/tools/settings/message-filters/domains/unblockAll" \
--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": "Domains unblocked successfully"
}
Received response:
Request failed with error:
Domain Filters - Whitelisting Toggle on/off Domain Whitelisting
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/message-filters/domains/whitelisting/toggle"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"whitelisting": true
};
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/tools/settings/message-filters/domains/whitelisting/toggle',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'whitelisting' => true,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
"https://portal.timetoreply.com/api/tools/settings/message-filters/domains/whitelisting/toggle" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"whitelisting\": true
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"status": "Domain whitelisting enabled"
}
Received response:
Request failed with error:
Email Filters - List Get email address filters
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/message-filters/usernames"
);
const params = {
"sort_by": "email_address",
"direction": "asc",
"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/tools/settings/message-filters/usernames',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'sort_by' => 'email_address',
'direction' => 'asc',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/tools/settings/message-filters/usernames?sort_by=email_address&direction=asc&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 protected]"
],
"first_page_url": "https://portal.timetoreply.com/api/tools/settings/message-filters/usernames?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/tools/settings/message-filters/usernames?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/tools/settings/message-filters/usernames?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://portal.timetoreply.com/api/tools/settings/message-filters/usernames",
"per_page": 15,
"prev_page_url": null,
"to": 1,
"total": 1
}
Received response:
Request failed with error:
Email Filters - Store Block email addresses
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/message-filters/usernames/block"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"usernames": [
"[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/tools/settings/message-filters/usernames/block',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'usernames' => [
'[email protected]',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/tools/settings/message-filters/usernames/block" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"usernames\": [
\"[email protected]\"
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
[
{
"id": 25,
"username": "spam",
"domain_id": 126,
"email_address": "[email protected]"
}
]
Received response:
Request failed with error:
Email Filters - Store CSV Block Email addresses by uploading a CSV
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/message-filters/usernames/block-csv"
);
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/tools/settings/message-filters/usernames/block-csv',
[
'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/tools/settings/message-filters/usernames/block-csv" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
Example response (200):
[
"[email protected]",
"[email protected]"
]
Received response:
Request failed with error:
Email Filters - Delete Unblock email addresses
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/message-filters/usernames/unblock"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"usernames": [
"[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/tools/settings/message-filters/usernames/unblock',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'usernames' => [
'[email protected]',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/tools/settings/message-filters/usernames/unblock" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"usernames\": [
\"[email protected]\"
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"status": "Email addresses unblocked successfully"
}
Received response:
Request failed with error:
Advanced Filters - List List all Advanced filters
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/message-filters/advanced"
);
const params = {
"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/tools/settings/message-filters/advanced',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'per_page' => '15',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/tools/settings/message-filters/advanced?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": "example message filter group",
"active": false,
"message_filters_count": 1,
"message_filters": [
{
"id": 1,
"message_filter_group_id": 1,
"field": "Subject",
"operator": "does not equal",
"type": "and",
"value": "example message filter"
}
]
}
],
"first_page_url": "https://portal.timetoreply.com/api/tools/settings/message-filters/advanced?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/tools/settings/message-filters/advanced?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/tools/settings/message-filters/advanced?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://portal.timetoreply.com/api/tools/settings/message-filters/advanced",
"per_page": 2,
"prev_page_url": null,
"to": 1,
"total": 1
}
Received response:
Request failed with error:
Advanced Filters - Store Add a new Advanced Filter
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/message-filters/advanced"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"filterName": "From Does Not Contain no-reply example",
"filters": [
{
"field": "From",
"operator": "does not contain",
"type": "and",
"value": "no-reply"
}
]
};
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/settings/message-filters/advanced',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'filterName' => 'From Does Not Contain no-reply example',
'filters' => [
[
'field' => 'From',
'operator' => 'does not contain',
'type' => 'and',
'value' => 'no-reply',
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/tools/settings/message-filters/advanced" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"filterName\": \"From Does Not Contain no-reply example\",
\"filters\": [
{
\"field\": \"From\",
\"operator\": \"does not contain\",
\"type\": \"and\",
\"value\": \"no-reply\"
}
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 2,
"company_id": 1,
"name": "From Does Not Contain no-reply example",
"active": true
}
Received response:
Request failed with error:
Advanced Filters - Update Update an Advanced Filter
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/message-filters/advanced/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"filterName": "From Does Not Contain no-reply filter",
"filters": [
{
"field": "From",
"operator": "does not contain",
"type": "and",
"value": "no-reply"
}
]
};
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/tools/settings/message-filters/advanced/1',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'filterName' => 'From Does Not Contain no-reply filter',
'filters' => [
[
'field' => 'From',
'operator' => 'does not contain',
'type' => 'and',
'value' => 'no-reply',
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
"https://portal.timetoreply.com/api/tools/settings/message-filters/advanced/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"filterName\": \"From Does Not Contain no-reply filter\",
\"filters\": [
{
\"field\": \"From\",
\"operator\": \"does not contain\",
\"type\": \"and\",
\"value\": \"no-reply\"
}
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 1,
"company_id": 1,
"name": "From Does Not Contain no-reply filter",
"active": false,
"message_filters": [
{
"id": 3,
"message_filter_group_id": 1,
"field": "From",
"operator": "does not contain",
"type": "and",
"value": "no-reply"
}
]
}
Received response:
Request failed with error:
Advanced Filters - Delete Delete an Advanced Filter
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/message-filters/advanced/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/tools/settings/message-filters/advanced/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/tools/settings/message-filters/advanced/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
{
"status": "Advanced filter deleted."
}
Received response:
Request failed with error:
Advanced Filters - Toggle Toggle on/off an Advanced Filter
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/message-filters/advanced/1/toggle"
);
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/tools/settings/message-filters/advanced/1/toggle',
[
'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/tools/settings/message-filters/advanced/1/toggle" \
--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,
"company_id": 1,
"name": "From Does Not Contain no-reply filter",
"active": true
}
Received response:
Request failed with error:
Reply Time Goals - List Get current reply time goals (shown in seconds)
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/reply-time-goals"
);
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/reply-time-goals',
[
'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/reply-time-goals" \
--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: []
{
"first_reply_time_goal": 7200,
"first_reply_time_goal_bands": [],
"overall_reply_time_goal": 14400,
"overall_reply_time_goal_bands": [],
"time_to_close_goal": 86400,
"time_to_close_goal_bands": []
}
Received response:
Request failed with error:
Reply Time Goals - Update Update Reply Time Goals
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/reply-time-goals"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"first_reply_time_goal": 3600,
"overall_reply_time_goal": 3600,
"time_to_close_goal": 3600,
"first_reply_time_goal_bands": [
1800,
7200
],
"overall_reply_time_goal_bands": [
1800,
7200
],
"time_to_close_goal_bands": [
1800,
7200
]
};
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/tools/settings/reply-time-goals',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'first_reply_time_goal' => 3600,
'overall_reply_time_goal' => 3600,
'time_to_close_goal' => 3600,
'first_reply_time_goal_bands' => [
1800,
7200,
],
'overall_reply_time_goal_bands' => [
1800,
7200,
],
'time_to_close_goal_bands' => [
1800,
7200,
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
"https://portal.timetoreply.com/api/tools/settings/reply-time-goals" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"first_reply_time_goal\": 3600,
\"overall_reply_time_goal\": 3600,
\"time_to_close_goal\": 3600,
\"first_reply_time_goal_bands\": [
1800,
7200
],
\"overall_reply_time_goal_bands\": [
1800,
7200
],
\"time_to_close_goal_bands\": [
1800,
7200
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"first_reply_time_goal": 3600,
"first_reply_time_goal_bands": [
1800,
7200
],
"overall_reply_time_goal": 3600,
"overall_reply_time_goal_bands": [
1800,
7200
],
"time_to_close_goal": 3600,
"time_to_close_goal_bands": [
1800,
7200
]
}
Received response:
Request failed with error:
Profile - Delete Delete your account
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/profile"
);
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/tools/settings/profile',
[
'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/tools/settings/profile" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
{
"status": "Account deletion in progress. Please allow a few minutes for this to complete. We will now log you out of your account."
}
Received response:
Request failed with error:
Profile - Delete Company Delete your company account
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/profile/company"
);
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/tools/settings/profile/company',
[
'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/tools/settings/profile/company" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
{
"status": "Company account deletion in progress. Please allow a few minutes for this to complete. We will now log you out of your account."
}
Received response:
Request failed with error:
Profile - Update Add more details to your profile
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/settings/profile"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"team": "Customer Service",
"team_role": "Manager",
"company_size": "B"
};
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/settings/profile',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'team' => 'Customer Service',
'team_role' => 'Manager',
'company_size' => 'B',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/tools/settings/profile" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"team\": \"Customer Service\",
\"team_role\": \"Manager\",
\"company_size\": \"B\"
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"status": "Thanks for telling us more about you."
}
Received response:
Request failed with error:
Scheduled Reports - List List all scheduled reports
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/scheduled-reports"
);
const params = {
"search": "Weekly Overview Report",
"sort_by": "name",
"direction": "asc",
};
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/tools/scheduled-reports',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'search' => 'Weekly Overview Report',
'sort_by' => 'name',
'direction' => 'asc',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/tools/scheduled-reports?search=Weekly+Overview+Report&sort_by=name&direction=asc" \
--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": [],
"first_page_url": "https://portal.timetoreply.com/api/tools/scheduled-reports?page=1",
"from": null,
"last_page": 1,
"last_page_url": "https://portal.timetoreply.com/api/tools/scheduled-reports?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://portal.timetoreply.com/api/tools/scheduled-reports?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://portal.timetoreply.com/api/tools/scheduled-reports",
"per_page": 15,
"prev_page_url": null,
"to": null,
"total": 0
}
Received response:
Request failed with error:
Scheduled Reports - Store Save a Scheduled Report
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/scheduled-reports"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Weekly Overview Report",
"customEmails": [
"[email protected]"
],
"reportType": "overview",
"exportType": "xlsx",
"frequency": "weekly",
"includeToday": true,
"time": "09:00:00",
"monday": true,
"tuesday": false,
"wednesday": false,
"thursday": false,
"friday": false,
"saturday": false,
"sunday": false,
"timeOfMonth": "not_applicable",
"dayOfMonth": 1,
"options": {
"model": "Joe Blogs",
"model_type": "Agent",
"model_com": "Important Contact",
"model_type_com": "Contact Group",
"label": [
"porro"
],
"exclude_cc": false,
"exclude_cc_com": false,
"exclusive": false,
"search": "important email subject",
"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
},
"interactions": [],
"sla": {
"initialTTRGoal": "02:00:00",
"overallTTRGoal": "02:00:00",
"overallTTCGoal": "02:00:00"
},
"trend": {
"show_agents": false
},
"widgets": [
"in"
]
};
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/scheduled-reports',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Weekly Overview Report',
'customEmails' => [
'[email protected]',
],
'reportType' => 'overview',
'exportType' => 'xlsx',
'frequency' => 'weekly',
'includeToday' => true,
'time' => '09:00:00',
'monday' => true,
'tuesday' => false,
'wednesday' => false,
'thursday' => false,
'friday' => false,
'saturday' => false,
'sunday' => false,
'timeOfMonth' => 'not_applicable',
'dayOfMonth' => 1,
'options' => [
'model' => 'Joe Blogs',
'model_type' => 'Agent',
'model_com' => 'Important Contact',
'model_type_com' => 'Contact Group',
'label' => [
'porro',
],
'exclude_cc' => false,
'exclude_cc_com' => false,
'exclusive' => false,
'search' => 'important email subject',
'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,
],
'interactions' => [],
'sla' => [
'initialTTRGoal' => '02:00:00',
'overallTTRGoal' => '02:00:00',
'overallTTCGoal' => '02:00:00',
],
'trend' => [
'show_agents' => false,
],
'widgets' => [
'in',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/tools/scheduled-reports" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Weekly Overview Report\",
\"customEmails\": [
\"[email protected]\"
],
\"reportType\": \"overview\",
\"exportType\": \"xlsx\",
\"frequency\": \"weekly\",
\"includeToday\": true,
\"time\": \"09:00:00\",
\"monday\": true,
\"tuesday\": false,
\"wednesday\": false,
\"thursday\": false,
\"friday\": false,
\"saturday\": false,
\"sunday\": false,
\"timeOfMonth\": \"not_applicable\",
\"dayOfMonth\": 1,
\"options\": {
\"model\": \"Joe Blogs\",
\"model_type\": \"Agent\",
\"model_com\": \"Important Contact\",
\"model_type_com\": \"Contact Group\",
\"label\": [
\"porro\"
],
\"exclude_cc\": false,
\"exclude_cc_com\": false,
\"exclusive\": false,
\"search\": \"important email subject\",
\"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
},
\"interactions\": [],
\"sla\": {
\"initialTTRGoal\": \"02:00:00\",
\"overallTTRGoal\": \"02:00:00\",
\"overallTTCGoal\": \"02:00:00\"
},
\"trend\": {
\"show_agents\": false
},
\"widgets\": [
\"in\"
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"company_id": 1,
"name": "Weekly Overview Report",
"custom_email": "[email protected]",
"report_type": "overview",
"export_type": "xlsx",
"frequency": "weekly",
"include_today": true,
"hide_filters": false,
"time": {
"hour": 9,
"minute": 0,
"second": 0
},
"monday": true,
"tuesday": false,
"wednesday": false,
"thursday": false,
"friday": false,
"saturday": false,
"sunday": false,
"time_of_month": "not_applicable",
"day_of_month": null,
"options": {
"modelSelected": "Joe Blogs",
"modelSelectedType": "Agent",
"modelFull": {
"icon": "building",
"id": null,
"model_type": "Internal",
"name": "My Company",
"value": "My Company"
},
"excludeCc": false,
"modelSelectedCom": "Important Contact",
"modelSelectedTypeCom": "Contact Group",
"modelComFull": {
"icon": "globe-americas",
"id": null,
"model_type": "Anybody",
"name": "Anybody",
"value": "Anybody"
},
"excludeCcCom": false,
"exclusively": false,
"search": "important email subject",
"label": [
"porro"
],
"labelsAndOr": "AND",
"dealStage": null,
"dealOwner": null,
"dealName": "",
"dealValueFrom": null,
"dealValueTo": null,
"nudges": "0",
"touches": "0",
"lastTouchDate": null,
"threadType": "inbound,outbound,internal",
"threadStatus": "internal,await-customer,closed,await-agent",
"hasReplies": "hasReplies,hasForwards,hasNoRepliesOrForwards",
"classification": "first,reply,reply-all,forward",
"messageType": "inbound,outbound,internal",
"periodType": "Months",
"periods": 12,
"repliesOver": 15,
"closedOver": 0,
"messageRepliesOver": 15,
"noReplyFor": 15,
"interactions": [],
"sla": {
"direction": "desc",
"init_ttr_goal": "02:00:00",
"overall_ttr_goal": "02:00:00",
"overall_ttc_goal": "02:00:00",
"page": 1,
"perPage": 100,
"sortBy": "threads.total"
},
"overview": {
"direction": "desc",
"page": 1,
"perPage": 100,
"sortBy": "threads.total"
},
"comparative": {
"direction": "desc",
"page": 1,
"perPage": 100
},
"trend": {
"page": 1,
"perPage": 15,
"show_agents": true
}
},
"widgets": null,
"id": 2,
"relative_time": "109h:10m",
"upcoming_recipients": "[email protected]",
"days_of_week": "Monday",
"report_class": "PDF",
"friendly_name": "Weekly Overview Report",
"page_route": "https://portal.timetoreply.com/reports/overview"
}
Received response:
Request failed with error:
Scheduled Reports - Show Show a scheduled report
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/scheduled-reports/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/tools/scheduled-reports/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/tools/scheduled-reports/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,
"company_id": 1,
"report_type": "comparative",
"export_type": "xlsx",
"frequency": "monthly",
"include_today": true,
"time": {
"hour": 19,
"minute": 33,
"second": 14
},
"monday": false,
"tuesday": false,
"wednesday": false,
"thursday": false,
"friday": false,
"saturday": false,
"sunday": false,
"time_of_month": "end",
"day_of_month": null,
"options": {
"modelFull": {
"icon": "building",
"id": null,
"model_type": "Internal",
"name": "My Company",
"value": "My Company"
},
"excludeCc": false,
"modelComFull": {
"icon": "globe-americas",
"id": null,
"model_type": "Anybody",
"name": "Anybody",
"value": "Anybody"
},
"excludeCcCom": false,
"exclusively": false,
"search": "",
"label": [],
"labelsAndOr": "AND",
"dealStage": null,
"dealOwner": null,
"dealName": "",
"dealValueFrom": null,
"dealValueTo": null,
"nudges": "0",
"touches": "0",
"lastTouchDate": null,
"threadType": "inbound,outbound,internal",
"threadStatus": "internal,await-customer,closed,await-agent",
"hasReplies": "hasReplies,hasNoRepliesOrForwards,hasForwards",
"classification": "first,reply,reply-all,forward,follow-up",
"messageType": "inbound,outbound,internal",
"periodType": "Months",
"periods": 12,
"repliesOver": 0,
"closedOver": 0,
"messageRepliesOver": 0,
"noReplyFor": 0,
"interactions": [],
"sla": {
"direction": "desc",
"init_ttr_goal": "02:00:00",
"overall_ttr_goal": "02:00:00",
"overall_ttc_goal": "02:00:00",
"page": 1,
"perPage": 100,
"sortBy": "threads.total"
},
"overview": {
"direction": "desc",
"page": 1,
"perPage": 100,
"sortBy": "threads.total"
},
"comparative": {
"direction": "desc",
"page": 1,
"perPage": 100
},
"trend": {
"page": 1,
"perPage": 15,
"show_agents": true
},
"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"
}
},
"name": "Test Scheduled Report",
"custom_email": null,
"hide_filters": false,
"widgets": null,
"days_of_week": "",
"report_class": "PDF",
"friendly_name": "Test Scheduled Report",
"page_route": "https://portal.timetoreply.com/reports/comparative"
}
Received response:
Request failed with error:
Scheduled Reports - Update Update a scheduled report
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/scheduled-reports/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Weekly Overview Report",
"customEmails": [
"[email protected]"
],
"reportType": "overview",
"exportType": "xlsx",
"frequency": "weekly",
"includeToday": true,
"time": "09:00:00",
"monday": true,
"tuesday": false,
"wednesday": false,
"thursday": false,
"friday": false,
"saturday": false,
"sunday": false,
"timeOfMonth": "not_applicable",
"dayOfMonth": 1,
"options": {
"model": "Joe Blogs",
"model_type": "Agent",
"model_com": "Important Contact",
"model_type_com": "Contact Group",
"label": [
"eos"
],
"exclude_cc": false,
"exclude_cc_com": false,
"exclusive": false,
"search": "important email subject",
"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
},
"interactions": [],
"sla": {
"initialTTRGoal": "02:00:00",
"overallTTRGoal": "02:00:00",
"overallTTCGoal": "02:00:00"
}
};
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/tools/scheduled-reports/1',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Weekly Overview Report',
'customEmails' => [
'[email protected]',
],
'reportType' => 'overview',
'exportType' => 'xlsx',
'frequency' => 'weekly',
'includeToday' => true,
'time' => '09:00:00',
'monday' => true,
'tuesday' => false,
'wednesday' => false,
'thursday' => false,
'friday' => false,
'saturday' => false,
'sunday' => false,
'timeOfMonth' => 'not_applicable',
'dayOfMonth' => 1,
'options' => [
'model' => 'Joe Blogs',
'model_type' => 'Agent',
'model_com' => 'Important Contact',
'model_type_com' => 'Contact Group',
'label' => [
'eos',
],
'exclude_cc' => false,
'exclude_cc_com' => false,
'exclusive' => false,
'search' => 'important email subject',
'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,
],
'interactions' => [],
'sla' => [
'initialTTRGoal' => '02:00:00',
'overallTTRGoal' => '02:00:00',
'overallTTCGoal' => '02:00:00',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request PATCH \
"https://portal.timetoreply.com/api/tools/scheduled-reports/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Weekly Overview Report\",
\"customEmails\": [
\"[email protected]\"
],
\"reportType\": \"overview\",
\"exportType\": \"xlsx\",
\"frequency\": \"weekly\",
\"includeToday\": true,
\"time\": \"09:00:00\",
\"monday\": true,
\"tuesday\": false,
\"wednesday\": false,
\"thursday\": false,
\"friday\": false,
\"saturday\": false,
\"sunday\": false,
\"timeOfMonth\": \"not_applicable\",
\"dayOfMonth\": 1,
\"options\": {
\"model\": \"Joe Blogs\",
\"model_type\": \"Agent\",
\"model_com\": \"Important Contact\",
\"model_type_com\": \"Contact Group\",
\"label\": [
\"eos\"
],
\"exclude_cc\": false,
\"exclude_cc_com\": false,
\"exclusive\": false,
\"search\": \"important email subject\",
\"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
},
\"interactions\": [],
\"sla\": {
\"initialTTRGoal\": \"02:00:00\",
\"overallTTRGoal\": \"02:00:00\",
\"overallTTCGoal\": \"02:00:00\"
}
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"id": 1,
"company_id": 1,
"report_type": "overview",
"export_type": "xlsx",
"frequency": "weekly",
"include_today": true,
"time": {
"hour": 9,
"minute": 0,
"second": 0
},
"monday": true,
"tuesday": false,
"wednesday": false,
"thursday": false,
"friday": false,
"saturday": false,
"sunday": false,
"time_of_month": "not_applicable",
"day_of_month": null,
"options": {
"modelSelected": "Joe Blogs",
"modelSelectedType": "Agent",
"modelFull": {
"icon": "building",
"id": null,
"model_type": "Internal",
"name": "My Company",
"value": "My Company"
},
"excludeCc": false,
"modelSelectedCom": "Important Contact",
"modelSelectedTypeCom": "Contact Group",
"modelComFull": {
"icon": "globe-americas",
"id": null,
"model_type": "Anybody",
"name": "Anybody",
"value": "Anybody"
},
"excludeCcCom": false,
"exclusively": false,
"search": "important email subject",
"label": [
"eos"
],
"labelsAndOr": "AND",
"dealStage": null,
"dealOwner": null,
"dealName": "",
"dealValueFrom": null,
"dealValueTo": null,
"nudges": "0",
"touches": "0",
"lastTouchDate": null,
"threadType": "inbound,outbound,internal",
"threadStatus": "internal,await-customer,closed,await-agent",
"hasReplies": "hasReplies,hasForwards,hasNoRepliesOrForwards",
"classification": "first,reply,reply-all,forward",
"messageType": "inbound,outbound,internal",
"periodType": "Months",
"periods": 12,
"repliesOver": 15,
"closedOver": 0,
"messageRepliesOver": 15,
"noReplyFor": 15,
"interactions": [],
"sla": {
"direction": "desc",
"init_ttr_goal": "02:00:00",
"overall_ttr_goal": "02:00:00",
"overall_ttc_goal": "02:00:00",
"page": 1,
"perPage": 100,
"sortBy": "threads.total"
},
"overview": {
"direction": "desc",
"page": 1,
"perPage": 100,
"sortBy": "threads.total"
},
"comparative": {
"direction": "desc",
"page": 1,
"perPage": 100
},
"trend": {
"page": 1,
"perPage": 15,
"show_agents": true
}
},
"name": "Weekly Overview Report",
"custom_email": "[email protected]",
"hide_filters": false,
"widgets": null,
"relative_time": "109h:10m",
"upcoming_recipients": "[email protected]",
"days_of_week": "Monday",
"report_class": "PDF",
"friendly_name": "Weekly Overview Report",
"page_route": "https://portal.timetoreply.com/reports/overview"
}
Received response:
Request failed with error:
Scheduled Reports - Delete Delete a scheduled report
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/scheduled-reports/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/tools/scheduled-reports/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/tools/scheduled-reports/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
Example response (200):
{
"status": "Scheduled Report deleted successfully"
}
Received response:
Request failed with error:
Reports - List List all Reports
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/reports"
);
const params = {
"reportType": "overview",
"includeScheduled": "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/tools/reports',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'reportType' => 'overview',
'includeScheduled' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
--get "https://portal.timetoreply.com/api/tools/reports?reportType=overview&includeScheduled=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: []
[
{
"name": "Weekly Overview Report",
"id": 1,
"type": "Scheduled Report"
},
{
"name": "Weekly Overview Report",
"id": 2,
"type": "Scheduled Report"
}
]
Received response:
Request failed with error:
Reports - Store Save a Report
requires authentication
Example request:
const url = new URL(
"https://portal.timetoreply.com/api/tools/reports"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"reportType": "overview",
"reportName": "Overview Report For Sales Team With DEAL_CLOSED label",
"options": {
"model": "Joe Blogs",
"model_type": "Agent",
"model_com": "Important Contact",
"model_type_com": "Contact Group",
"label": [
"soluta"
],
"exclude_cc": false,
"exclude_cc_com": false,
"exclusive": false,
"search": "important email subject",
"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,
"init_ttr_goal": "02:00:00",
"overall_ttr_goal": "02:00:00",
"overall_ttc_goal": "02:00:00",
"show_agents": false
},
"widgets": [
"enim"
]
};
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/reports',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'reportType' => 'overview',
'reportName' => 'Overview Report For Sales Team With DEAL_CLOSED label',
'options' => [
'model' => 'Joe Blogs',
'model_type' => 'Agent',
'model_com' => 'Important Contact',
'model_type_com' => 'Contact Group',
'label' => [
'soluta',
],
'exclude_cc' => false,
'exclude_cc_com' => false,
'exclusive' => false,
'search' => 'important email subject',
'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,
'init_ttr_goal' => '02:00:00',
'overall_ttr_goal' => '02:00:00',
'overall_ttc_goal' => '02:00:00',
'show_agents' => false,
],
'widgets' => [
'enim',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
"https://portal.timetoreply.com/api/tools/reports" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"reportType\": \"overview\",
\"reportName\": \"Overview Report For Sales Team With DEAL_CLOSED label\",
\"options\": {
\"model\": \"Joe Blogs\",
\"model_type\": \"Agent\",
\"model_com\": \"Important Contact\",
\"model_type_com\": \"Contact Group\",
\"label\": [
\"soluta\"
],
\"exclude_cc\": false,
\"exclude_cc_com\": false,
\"exclusive\": false,
\"search\": \"important email subject\",
\"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,
\"init_ttr_goal\": \"02:00:00\",
\"overall_ttr_goal\": \"02:00:00\",
\"overall_ttc_goal\": \"02:00:00\",
\"show_agents\": false
},
\"widgets\": [
\"enim\"
]
}"
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
tracking-events: []
{
"name": "Overview Report For Sales Team With DEAL_CLOSED label",
"company_id": 1,
"filters": {
"modelSelected": "Joe Blogs",
"modelSelectedType": "Agent",
"modelFull": {
"icon": "building",
"id": null,
"model_type": "Internal",
"name": "My Company",
"value": "My Company"
},
"excludeCc": false,
"modelSelectedCom": "Important Contact",
"modelSelectedTypeCom": "Contact Group",
"modelComFull": {
"icon": "globe-americas",
"id": null,
"model_type": "Anybody",
"name": "Anybody",
"value": "Anybody"
},
"excludeCcCom": false,
"exclusively": false,
"search": "important email subject",
"label": [
"soluta"
],
"labelsAndOr": "AND",
"dealStage": null,
"dealOwner": null,
"dealName": "",
"dealValueFrom": null,
"dealValueTo": null,
"nudges": "0",
"touches": "0",
"lastTouchDate": null,
"threadType": "inbound,outbound,internal",
"threadStatus": "internal,await-customer,closed,await-agent",
"hasReplies": "hasReplies,hasForwards,hasNoRepliesOrForwards",
"classification": "first,reply,reply-all,forward",
"messageType": "inbound,outbound,internal",
"periodType": "Months",
"periods": 12,
"repliesOver": 15,
"closedOver": 0,
"messageRepliesOver": 15,
"noReplyFor": 15,
"interactions": [],
"sla": {
"direction": "desc",
"init_ttr_goal": "02:00:00",
"overall_ttr_goal": "02:00:00",
"overall_ttc_goal": "02:00:00",
"page": 1,
"perPage": 100,
"sortBy": "threads.total"
},
"overview": {
"direction": "desc",
"page": 1,
"perPage": 100,
"sortBy": "threads.total"
},
"comparative": {
"direction": "desc",
"page": 1,
"perPage": 100
},
"trend": {
"page": 1,
"perPage": 15,
"show_agents": true
}
},
"type": "overview",
"widgets": null,
"updated_at": "2023-02-01 19:49:08",
"created_at": "2023-02-01 19:49:08",
"id": 2
}
Received response:
Request failed with error:
Reports - Share Share a Report
requires authentication