Introduction
Wavo Platform API reference
The Wavo Platform provides a modern REST API.
Requests support standard HTTP methods (GET, POST, PUT, DELETE). The API responses are JSON objects using standard HTTP status codes.
Authenticating requests
Authenticate requests to this API's endpoints by sending an Authorization
header with the value "Bearer {ACCESS_TOKEN}"
.
All authenticated endpoints are marked with a requires authentication
badge in the documentation below.
You can retrieve your token by visiting your dashboard Settings, Third Party Integrations and Generate API token.
Campaigns
APIs for managing campaigns.
Display a listing of campaigns
requires authentication
Return all campaigns accessible by a user. If used by an agency with white-label dashboard subscription, an optional client_id parameter can be defined to return the campaigns of a specific client.
Example request:
curl --request GET \
--get "https://app.wavo.co/api/v1/campaigns?client_id=ah83445df46as5432mga" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://app.wavo.co/api/v1/campaigns"
);
const params = {
"client_id": "ah83445df46as5432mga",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.wavo.co/api/v1/campaigns',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'client_id' => 'ah83445df46as5432mga',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/campaigns'
params = {
'client_id': 'ah83445df46as5432mga',
}
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
{
"data": [
{
"id": "3q4gezj87m5gn65x9rpo",
"name": "Cremin LLC 13",
"timezone": "US/Mountain",
"status": "DRAFT",
"created_at": 1677779927,
"client": {
"id": "xvey7lp3gzxew408zr9n",
"name": "Cremin LLC",
"max_emails": 3,
"created_at": 1677779927
}
},
{
"id": "9zk26m1el250lpj8xvr3",
"name": "Brekke LLC 4",
"timezone": "US/Mountain",
"status": "DRAFT",
"created_at": 1677779927,
"client": {
"id": "dxj2z7kno39yo9lyv5qp",
"name": "Brekke LLC",
"max_emails": 3,
"created_at": 1677779927
}
}
]
}
Received response:
Request failed with error:
Create a new campaign
requires authentication
Create a new campaign for a client.
Example request:
curl --request POST \
"https://app.wavo.co/api/v1/campaigns" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"aut\",
\"client_id\": \"4a83445df46as5432mga\",
\"timezone\": \"US\\/Mountain\"
}"
const url = new URL(
"https://app.wavo.co/api/v1/campaigns"
);
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "aut",
"client_id": "4a83445df46as5432mga",
"timezone": "US\/Mountain"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://app.wavo.co/api/v1/campaigns',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'aut',
'client_id' => '4a83445df46as5432mga',
'timezone' => 'US/Mountain',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/campaigns'
payload = {
"name": "aut",
"client_id": "4a83445df46as5432mga",
"timezone": "US\/Mountain"
}
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (200):
{
"data": {
"id": "8rp5dxyqljmol4mv0goe",
"name": "Satterfield and Sons 11",
"timezone": "US/Mountain",
"status": "DRAFT",
"created_at": 1677779927,
"client": {
"id": "26mzne14wynrokl5djpq",
"name": "Satterfield and Sons",
"max_emails": 3,
"created_at": 1677779927
}
}
}
Received response:
Request failed with error:
Fetch the daily campaign stats of a campaign
requires authentication
Return all daily campaign stats of a campaign.
To limit results, a query parameter start
can be sent, so that the response contains only stats for days after a specific timestamp.
Example request:
curl --request GET \
--get "https://app.wavo.co/api/v1/campaigns/1/daily-stats?start=1662940800" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://app.wavo.co/api/v1/campaigns/1/daily-stats"
);
const params = {
"start": "1662940800",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.wavo.co/api/v1/campaigns/1/daily-stats',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'start' => '1662940800',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/campaigns/1/daily-stats'
params = {
'start': '1662940800',
}
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
{
"data": [
{
"day": "2022-09-12T00:00:00.000000Z",
"contacted": 11,
"replied": 1,
"autoreplied": 0,
"bounced": 4,
"positive": 1,
"neutral": 0,
"negative": 4,
"messages_clicked": 5,
"messages_opened": 0,
"messages_sent": 15
},
{
"day": "2022-09-13T00:00:00.000000Z",
"contacted": 15,
"replied": 3,
"autoreplied": 1,
"bounced": 2,
"positive": 2,
"neutral": 1,
"negative": 2,
"messages_clicked": 6,
"messages_opened": 0,
"messages_sent": 17
}
]
}
Received response:
Request failed with error:
Fetch the total stats of a campaign
requires authentication
Example request:
curl --request GET \
--get "https://app.wavo.co/api/v1/campaigns/1/stats" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://app.wavo.co/api/v1/campaigns/1/stats"
);
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.wavo.co/api/v1/campaigns/1/stats',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/campaigns/1/stats'
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": {
"contacted": 5,
"replied": 1,
"autoreplied": 0,
"bounced": 0,
"positive": 1,
"neutral": 0,
"negative": 0,
"messages_clicked": 0,
"messages_opened": 0,
"messages_sent": 5,
"campaign_steps": [
{
"number": 1,
"sent": 5,
"queued": 0,
"contacted": 5,
"replied": 1,
"positive": 1,
"bounced": 0,
"messages_clicked": 0,
"messages_opened": 0
},
{
"number": 2,
"sent": 0,
"queued": 4,
"contacted": 0,
"replied": 0,
"positive": 0,
"bounced": 0,
"messages_clicked": 0,
"messages_opened": 0
}
]
}
}
Received response:
Request failed with error:
Clients
APIs for managing clients.
Display a user's accessible clients
requires authentication
This will return an array of 1 or more clients (for users on white-label dashboard subscription).
Example request:
curl --request GET \
--get "https://app.wavo.co/api/v1/clients" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://app.wavo.co/api/v1/clients"
);
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.wavo.co/api/v1/clients',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/clients'
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": [
{
"id": "kn9x5qyro086w4z6pd37",
"name": "Roberts PLC",
"max_emails": 3,
"created_at": 1677779927
},
{
"id": "41z52kqnwjepoxplrv80",
"name": "Feeney LLC",
"max_emails": 3,
"created_at": 1677779927
}
]
}
Received response:
Request failed with error:
Create a new client
requires authentication
Add a new client to the user's agency
Example request:
curl --request POST \
"https://app.wavo.co/api/v1/clients" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Thompson LLC\",
\"max_emails\": 3
}"
const url = new URL(
"https://app.wavo.co/api/v1/clients"
);
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Thompson LLC",
"max_emails": 3
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://app.wavo.co/api/v1/clients',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Thompson LLC',
'max_emails' => 3,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/clients'
payload = {
"name": "Thompson LLC",
"max_emails": 3
}
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (201):
{
"data": {
"id": "l8re092o9qv7w745jmpk",
"name": "Thompson LLC",
"max_emails": 3,
"created_at": 1580411327
}
}
Received response:
Request failed with error:
Display a client's users
requires authentication
Show all active users of a client as well as pending user invitations, with their assigned roles.
Example request:
curl --request GET \
--get "https://app.wavo.co/api/v1/clients/a83445df46as5432mga/users" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://app.wavo.co/api/v1/clients/a83445df46as5432mga/users"
);
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.wavo.co/api/v1/clients/a83445df46as5432mga/users',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/clients/a83445df46as5432mga/users'
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": {
"users": [
{
"name": "Mike Jones",
"email": "mike@wavo.co",
"created_at": 1580412998,
"roles": [
"view_campaigns"
]
},
{
"name": "Bill Scott",
"email": "bill@wavo.co",
"created_at": 1580412998,
"roles": [
"view_campaigns",
"create_campaigns"
]
}
],
"invitations": [
{
"email": "mike1@wavo.co",
"created_at": 1580412998,
"roles": [
"create_campaigns",
"export_data",
"view_campaigns"
]
}
]
}
}
Received response:
Request failed with error:
Add a new client user
requires authentication
Add a new user to a client. Specify the user's email address and the roles he should have. Available roles are:
- view_campaigns
- create_campaigns
- export_campaigns
Example request:
curl --request POST \
"https://app.wavo.co/api/v1/clients/a83445df46as5432mga/users" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"mike@wavo.co\",
\"view_campaigns\": true,
\"create_campaigns\": true,
\"export_campaigns\": true
}"
const url = new URL(
"https://app.wavo.co/api/v1/clients/a83445df46as5432mga/users"
);
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "mike@wavo.co",
"view_campaigns": true,
"create_campaigns": true,
"export_campaigns": true
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://app.wavo.co/api/v1/clients/a83445df46as5432mga/users',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'email' => 'mike@wavo.co',
'view_campaigns' => true,
'create_campaigns' => true,
'export_campaigns' => true,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/clients/a83445df46as5432mga/users'
payload = {
"email": "mike@wavo.co",
"view_campaigns": true,
"create_campaigns": true,
"export_campaigns": true
}
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (200):
{
"message": "An invitation was sent to mike@wavo.co"
}
Received response:
Request failed with error:
Update a client user
requires authentication
Update a client user's roles. Can update roles of active users or user invitations. Available roles are:
- view_campaigns
- create_campaigns
- export_campaigns
Example request:
curl --request PUT \
"https://app.wavo.co/api/v1/clients/a83445df46as5432mga/users" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"mike@wavo.co\",
\"view_campaigns\": true,
\"create_campaigns\": true,
\"export_campaigns\": true
}"
const url = new URL(
"https://app.wavo.co/api/v1/clients/a83445df46as5432mga/users"
);
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "mike@wavo.co",
"view_campaigns": true,
"create_campaigns": true,
"export_campaigns": true
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->put(
'https://app.wavo.co/api/v1/clients/a83445df46as5432mga/users',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'email' => 'mike@wavo.co',
'view_campaigns' => true,
'create_campaigns' => true,
'export_campaigns' => true,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/clients/a83445df46as5432mga/users'
payload = {
"email": "mike@wavo.co",
"view_campaigns": true,
"create_campaigns": true,
"export_campaigns": true
}
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
Example response (200):
{
"message": "Success. Updated user roles."
}
Received response:
Request failed with error:
Delete a client user
requires authentication
Remove a user from a client.
Example request:
curl --request DELETE \
"https://app.wavo.co/api/v1/clients/a83445df46as5432mga/users?email=mike%40wavo.co" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"daugherty.elsie@example.org\"
}"
const url = new URL(
"https://app.wavo.co/api/v1/clients/a83445df46as5432mga/users"
);
const params = {
"email": "mike@wavo.co",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "daugherty.elsie@example.org"
};
fetch(url, {
method: "DELETE",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://app.wavo.co/api/v1/clients/a83445df46as5432mga/users',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'email' => 'mike@wavo.co',
],
'json' => [
'email' => 'daugherty.elsie@example.org',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/clients/a83445df46as5432mga/users'
payload = {
"email": "daugherty.elsie@example.org"
}
params = {
'email': 'mike@wavo.co',
}
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers, json=payload, params=params)
response.json()
Example response (204):
[Empty response]
Received response:
Request failed with error:
Contacts
APIs for managing contacts.
Create a new contact
requires authentication
A new contact can be attached to an existing campaign. As such the campaign_id is required
Example request:
curl --request POST \
"https://app.wavo.co/api/v1/contacts" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"campaign_id\": \"fkjtf4390kfgu8903nsk\",
\"email\": \"daugherty.elsie@example.org\",
\"first_name\": \"aut\",
\"last_name\": \"aut\",
\"company\": \"aut\",
\"industry\": \"aut\",
\"website\": \"aut\",
\"title\": \"aut\",
\"phone\": \"aut\",
\"address\": \"aut\",
\"city\": \"aut\",
\"state\": \"aut\",
\"country\": \"aut\",
\"custom_merge_fields[]\": [
\"aut\"
]
}"
const url = new URL(
"https://app.wavo.co/api/v1/contacts"
);
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"campaign_id": "fkjtf4390kfgu8903nsk",
"email": "daugherty.elsie@example.org",
"first_name": "aut",
"last_name": "aut",
"company": "aut",
"industry": "aut",
"website": "aut",
"title": "aut",
"phone": "aut",
"address": "aut",
"city": "aut",
"state": "aut",
"country": "aut",
"custom_merge_fields[]": [
"aut"
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://app.wavo.co/api/v1/contacts',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'campaign_id' => 'fkjtf4390kfgu8903nsk',
'email' => 'daugherty.elsie@example.org',
'first_name' => 'aut',
'last_name' => 'aut',
'company' => 'aut',
'industry' => 'aut',
'website' => 'aut',
'title' => 'aut',
'phone' => 'aut',
'address' => 'aut',
'city' => 'aut',
'state' => 'aut',
'country' => 'aut',
'custom_merge_fields[]' => [
'aut',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/contacts'
payload = {
"campaign_id": "fkjtf4390kfgu8903nsk",
"email": "daugherty.elsie@example.org",
"first_name": "aut",
"last_name": "aut",
"company": "aut",
"industry": "aut",
"website": "aut",
"title": "aut",
"phone": "aut",
"address": "aut",
"city": "aut",
"state": "aut",
"country": "aut",
"custom_merge_fields[]": [
"aut"
]
}
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (201):
{
"data": [
{
"id": "we52o4rv130mz1qxyzk8pmljd",
"email": "aditya.kohler@example.org",
"first_name": "Aditya",
"last_name": "Kohler",
"company": "Gerlach, Ziemann and Reilly",
"industry": "Nonprofit Organization Management",
"website": "kunde.com",
"title": "Ms.",
"phone": "219-959-5166",
"address": "41164 Osvaldo Row",
"city": "Baileyborough",
"state": "New Hampshire",
"country": "US",
"custom_merge_fields": {
"fav color": "purple",
"sport": "running",
"os": "Windows NT 5.0"
},
"timezone": "US/Mountain",
"status": "OK",
"interest": null,
"emails_sent": 0,
"completed_steps": 0,
"is_missing_data": false,
"is_suppressed": false,
"created_at": 1579888600,
"campaign": {
"id": "fkjtf4390kfgu8903nsk",
"name": "Grady-Runolfsson 16",
"timezone": "US/Mountain",
"status": "DRAFT",
"created_at": 1579888600,
"client": {
"id": "a83445df46as5432mga",
"name": "Grady-Runolfsson",
"created_at": 1579888600
}
}
}
]
}
Received response:
Request failed with error:
Display a contact
requires authentication
Find a contact by id and display its details.
Example request:
curl --request GET \
--get "https://app.wavo.co/api/v1/contacts/we52o4rv130mz1qxyzk8pmljd" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://app.wavo.co/api/v1/contacts/we52o4rv130mz1qxyzk8pmljd"
);
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.wavo.co/api/v1/contacts/we52o4rv130mz1qxyzk8pmljd',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/contacts/we52o4rv130mz1qxyzk8pmljd'
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": {
"id": "we52o4rv130mz1qxyzk8pmljd",
"email": "aditya.kohler@example.org",
"first_name": "Aditya",
"last_name": "Kohler",
"company": "Gerlach, Ziemann and Reilly",
"industry": "Nonprofit Organization Management",
"website": "kunde.com",
"title": "Ms.",
"phone": "219-959-5166",
"address": "41164 Osvaldo Row",
"city": "Baileyborough",
"state": "New Hampshire",
"country": "US",
"custom_merge_fields": {
"fav color": "purple",
"sport": "running",
"os": "Windows NT 5.0"
},
"timezone": "US/Mountain",
"status": "OK",
"interest": null,
"emails_sent": 0,
"completed_steps": 0,
"is_missing_data": false,
"is_suppressed": false,
"created_at": 1579888600,
"campaign": {
"id": "fkjtf4390kfgu8903nsk",
"name": "Grady-Runolfsson 16",
"timezone": "US/Mountain",
"status": "DRAFT",
"created_at": 1579888600,
"client": {
"id": "a83445df46as5432mga",
"name": "Grady-Runolfsson",
"created_at": 1579888600
}
}
}
}
Received response:
Request failed with error:
Update contact interest
requires authentication
Set a contact's interest to a value of POSITIVE, NEUTRAL, or NEGATIVE.
Example request:
curl --request PUT \
"https://app.wavo.co/api/v1/contact-interest" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"contact_id\": \"fkjtf4390kfgu8903nsk\",
\"interest\": \"POSITIVE\"
}"
const url = new URL(
"https://app.wavo.co/api/v1/contact-interest"
);
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"contact_id": "fkjtf4390kfgu8903nsk",
"interest": "POSITIVE"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->put(
'https://app.wavo.co/api/v1/contact-interest',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'contact_id' => 'fkjtf4390kfgu8903nsk',
'interest' => 'POSITIVE',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/contact-interest'
payload = {
"contact_id": "fkjtf4390kfgu8903nsk",
"interest": "POSITIVE"
}
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
Example response (200):
{
"message": "Interest updated."
}
Received response:
Request failed with error:
Remove contact interest
requires authentication
Set a contact's interest to UNMARKED.
Example request:
curl --request DELETE \
"https://app.wavo.co/api/v1/contact-interest" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"contact_id\": \"fkjtf4390kfgu8903nsk\"
}"
const url = new URL(
"https://app.wavo.co/api/v1/contact-interest"
);
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"contact_id": "fkjtf4390kfgu8903nsk"
};
fetch(url, {
method: "DELETE",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://app.wavo.co/api/v1/contact-interest',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'contact_id' => 'fkjtf4390kfgu8903nsk',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/contact-interest'
payload = {
"contact_id": "fkjtf4390kfgu8903nsk"
}
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers, json=payload)
response.json()
Example response (200):
{
"message": "Interest UNMARKED."
}
Received response:
Request failed with error:
Display a listing of contacts
requires authentication
Return all contacts of a campaign.
Example request:
curl --request GET \
--get "https://app.wavo.co/api/v1/campaigns/fkjtf4390kfgu8903nsk/contacts?status=replied&is_missing_data=0&is_suppressed=1&interest=positive&emails_sent=3&limit=2&offset=0" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://app.wavo.co/api/v1/campaigns/fkjtf4390kfgu8903nsk/contacts"
);
const params = {
"status": "replied",
"is_missing_data": "0",
"is_suppressed": "1",
"interest": "positive",
"emails_sent": "3",
"limit": "2",
"offset": "0",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.wavo.co/api/v1/campaigns/fkjtf4390kfgu8903nsk/contacts',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'status' => 'replied',
'is_missing_data' => '0',
'is_suppressed' => '1',
'interest' => 'positive',
'emails_sent' => '3',
'limit' => '2',
'offset' => '0',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/campaigns/fkjtf4390kfgu8903nsk/contacts'
params = {
'status': 'replied',
'is_missing_data': '0',
'is_suppressed': '1',
'interest': 'positive',
'emails_sent': '3',
'limit': '2',
'offset': '0',
}
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
{
"data": [
{
"id": "j5ropgvndm6l1v0z7lwe9481y",
"email": "corwin.velda@example.com",
"first_name": "Vincent",
"last_name": "Kemmer",
"company": "Hartmann, Lockman and Thompson",
"industry": "Luxury Goods & Jewelry",
"website": "mosciski.com",
"title": "Mr.",
"phone": "1-213-895-2923",
"address": "6166 Jakubowski Cliff Suite 605",
"city": "Port Reidville",
"state": "North Carolina",
"country": "US",
"custom_merge_fields": {
"fav color": "teal",
"sport": "tennis",
"os": "Windows NT 6.2"
},
"timezone": "US/Mountain",
"status": "OK",
"interest": null,
"emails_sent": 1,
"completed_steps": 1,
"is_missing_data": 1,
"is_suppressed": 0,
"created_at": 1579888424
},
{
"id": "ny4j2vd8k56248q1wzgeo9r3p",
"email": "mschowalter@example.com",
"first_name": "Jacquelyn",
"last_name": "Okuneva",
"company": "Armstrong, Ferry and Nolan",
"industry": "Design",
"website": "sanford.com",
"title": "Prof.",
"phone": "(828) 344-5044 x05539",
"address": "1971 Colten Ways",
"city": "Batzland",
"state": "Kansas",
"country": "US",
"custom_merge_fields": {
"fav color": "silver",
"sport": "tennis",
"os": "Windows 95"
},
"timezone": "US/Mountain",
"status": "REPLIED",
"interest": "POSITIVE",
"emails_sent": 2,
"completed_steps": 2,
"is_missing_data": 1,
"is_suppressed": 0,
"created_at": 1579888424
}
]
}
Received response:
Request failed with error:
Search for contacts
requires authentication
Find contacts of a specific email address.
Example request:
curl --request GET \
--get "https://app.wavo.co/api/v1/contacts?email=aditya.kohler%40example.org&client_id=a83445df46as5432mga&campaign_id=fkjtf4390kfgu8903nsk" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"daugherty.elsie@example.org\"
}"
const url = new URL(
"https://app.wavo.co/api/v1/contacts"
);
const params = {
"email": "aditya.kohler@example.org",
"client_id": "a83445df46as5432mga",
"campaign_id": "fkjtf4390kfgu8903nsk",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "daugherty.elsie@example.org"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.wavo.co/api/v1/contacts',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'email' => 'aditya.kohler@example.org',
'client_id' => 'a83445df46as5432mga',
'campaign_id' => 'fkjtf4390kfgu8903nsk',
],
'json' => [
'email' => 'daugherty.elsie@example.org',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/contacts'
payload = {
"email": "daugherty.elsie@example.org"
}
params = {
'email': 'aditya.kohler@example.org',
'client_id': 'a83445df46as5432mga',
'campaign_id': 'fkjtf4390kfgu8903nsk',
}
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()
Example response (200):
{
"data": [
{
"id": "we52o4rv130mz1qxyzk8pmljd",
"email": "aditya.kohler@example.org",
"first_name": "Aditya",
"last_name": "Kohler",
"company": "Gerlach, Ziemann and Reilly",
"industry": "Nonprofit Organization Management",
"website": "kunde.com",
"title": "Ms.",
"phone": "219-959-5166",
"address": "41164 Osvaldo Row",
"city": "Baileyborough",
"state": "New Hampshire",
"country": "US",
"custom_merge_fields": {
"fav color": "purple",
"sport": "running",
"os": "Windows NT 5.0"
},
"timezone": "US/Mountain",
"status": "OK",
"interest": null,
"emails_sent": 0,
"completed_steps": 0,
"is_missing_data": 0,
"is_suppressed": 0,
"created_at": 1579888600,
"campaign": {
"id": "fkjtf4390kfgu8903nsk",
"name": "Grady-Runolfsson 16",
"timezone": "US/Mountain",
"status": "DRAFT",
"created_at": 1579888600,
"client": {
"id": "a83445df46as5432mga",
"name": "Grady-Runolfsson",
"created_at": 1579888600
}
}
}
]
}
Received response:
Request failed with error:
Email Messages
APIs for managing email messages.
Display a listing of a campaign's replies.
requires authentication
Return all email message replies of a campaign.
Example request:
curl --request GET \
--get "https://app.wavo.co/api/v1/campaigns/fkjtf4390kfgu8903nsk/replies?limit=2&offset=0" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://app.wavo.co/api/v1/campaigns/fkjtf4390kfgu8903nsk/replies"
);
const params = {
"limit": "2",
"offset": "0",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.wavo.co/api/v1/campaigns/fkjtf4390kfgu8903nsk/replies',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'limit' => '2',
'offset' => '0',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/campaigns/fkjtf4390kfgu8903nsk/replies'
params = {
'limit': '2',
'offset': '0',
}
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
{
"data": [
{
"id": "2dpkq21yvjn4r530y56gzwlm3e08ox",
"thread_id": "l12zpqxdn36mwrog08e5mwrkj",
"contact_id": "83jm7zlgve0nlzq4d15orxywn",
"from_email": "john.jacksom@example.com",
"to_email": "corwin.velda@example.com",
"from_name": "John Jackson",
"to_name": "Corwin Velda",
"submitted_at": 1597066351,
"created_at": 1597066376,
"subject": "Re: Test message subject",
"snippet": "Short Message Body...",
"message_body": "Message body text...",
"message_raw": "Raw Message text with html tags..."
},
{
"id": "66lgem812pz0w7y6g9yoj3nr4kvqdx",
"thread_id": "rdle34wnjy94qj6m178p0gz5v",
"contact_id": "8j5orm17lnqgpkqvg9pk4z3ew",
"from_email": "ella.jones@example.com",
"to_email": "corwin.velda@example.com",
"from_name": "Ella Jones",
"to_name": "Corwin Velda",
"submitted_at": 1597066351,
"created_at": 1597066376,
"subject": "Re: Test message subject",
"snippet": "Short Message Body...",
"message_body": "Message body text...",
"message_raw": "Raw Message text with html tags..."
}
]
}
Received response:
Request failed with error:
Display a listing of a contact's replies.
requires authentication
Return all email message replies of a contact.
Example request:
curl --request GET \
--get "https://app.wavo.co/api/v1/contacts/83jm7zlgve0nlzq4d15orxywn/replies" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://app.wavo.co/api/v1/contacts/83jm7zlgve0nlzq4d15orxywn/replies"
);
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.wavo.co/api/v1/contacts/83jm7zlgve0nlzq4d15orxywn/replies',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/contacts/83jm7zlgve0nlzq4d15orxywn/replies'
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": [
{
"id": "2dpkq21yvjn4r530y56gzwlm3e08ox",
"thread_id": "l12zpqxdn36mwrog08e5mwrkj",
"contact_id": "83jm7zlgve0nlzq4d15orxywn",
"from_email": "john.jacksom@example.com",
"to_email": "corwin.velda@example.com",
"from_name": "John Jackson",
"to_name": "Corwin Velda",
"submitted_at": 1597066351,
"created_at": 1597066376,
"subject": "Re: Test message subject",
"snippet": "Short Message Body...",
"message_body": "Message body text...",
"message_raw": "Raw Message text with html tags..."
},
{
"id": "rgr8yd4lkzvp05dw29nxe1w62m3qoj",
"thread_id": "l12zpqxdn36mwrog08e5mwrkj",
"contact_id": "83jm7zlgve0nlzq4d15orxywn",
"from_email": "john.jacksom@example.com",
"to_email": "corwin.velda@example.com",
"from_name": "John Jackson",
"to_name": "Corwin Velda",
"submitted_at": 1597066499,
"created_at": 1597066528,
"subject": "Re: Test message subject",
"snippet": "Short Message Body...",
"message_body": "Message body text...",
"message_raw": "Raw Message text with html tags..."
}
]
}
Received response:
Request failed with error:
Display an email thread.
requires authentication
Return an email thread with all its messages.
Example request:
curl --request GET \
--get "https://app.wavo.co/api/v1/email-threads/rdle34wnjy94qj6m178p0gz5v" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://app.wavo.co/api/v1/email-threads/rdle34wnjy94qj6m178p0gz5v"
);
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.wavo.co/api/v1/email-threads/rdle34wnjy94qj6m178p0gz5v',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/email-threads/rdle34wnjy94qj6m178p0gz5v'
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": {
"id": "rdle34wnjy94qj6m178p0gz5v",
"campaign_id": "jxv8qkeml4ml1g69y3w5",
"contact_id": "8j5orm17lnqgpkqvg9pk4z3ew",
"email_messages": [
{
"id": "2dpkq21yvjn4r530y56gzwlm3e08ox",
"thread_id": "l12zpqxdn36mwrog08e5mwrkj",
"contact_id": "83jm7zlgve0nlzq4d15orxywn",
"from_email": "corwin.velda@example.com",
"to_email": "ella.jones@example.com",
"from_name": "Corwin Velda",
"to_name": "Ella Jones",
"submitted_at": 1597066219,
"created_at": 1597066208,
"subject": "Test message subject",
"snippet": "Short Message Body...",
"message_body": "Message body text...",
"message_raw": "Raw Message text with html tags..."
},
{
"id": "66lgem812pz0w7y6g9yoj3nr4kvqdx",
"thread_id": "rdle34wnjy94qj6m178p0gz5v",
"contact_id": "8j5orm17lnqgpkqvg9pk4z3ew",
"from_email": "ella.jones@example.com",
"to_email": "corwin.velda@example.com",
"from_name": "Ella Jones",
"to_name": "Corwin Velda",
"submitted_at": 1597066351,
"created_at": 1597066376,
"subject": "Re: Test message subject",
"snippet": "Short Message Body...",
"message_body": "Message body text...",
"message_raw": "Raw Message text with html tags..."
}
]
}
}
Received response:
Request failed with error:
Suppression
APIs for managing suppression list.
Add new email address to suppression list
requires authentication
This will add new email addresses to a client's suppression list. Any contacts matching these emails, will be set as unsubscribed.
Example request:
curl --request POST \
"https://app.wavo.co/api/v1/suppressions/emails" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"client_id\": \"a83445df46as5432mga\",
\"emails\": [
\"alicia.hammes@example.com\",
\"douglas.herman@example.com\"
]
}"
const url = new URL(
"https://app.wavo.co/api/v1/suppressions/emails"
);
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"client_id": "a83445df46as5432mga",
"emails": [
"alicia.hammes@example.com",
"douglas.herman@example.com"
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://app.wavo.co/api/v1/suppressions/emails',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'client_id' => 'a83445df46as5432mga',
'emails' => [
'alicia.hammes@example.com',
'douglas.herman@example.com',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/suppressions/emails'
payload = {
"client_id": "a83445df46as5432mga",
"emails": [
"alicia.hammes@example.com",
"douglas.herman@example.com"
]
}
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (201):
{
"data": [
"alicia.hammes@example.com",
"douglas.herman@example.com"
]
}
Received response:
Request failed with error:
Add new domain address to suppression list
requires authentication
This will add new domains to a client's suppression list. Any contacts matching these domains, will be set as unsubscribed.
Example request:
curl --request POST \
"https://app.wavo.co/api/v1/suppressions/domains" \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"client_id\": \"a83445df46as5432mga\",
\"domains\": [
\"domain1.com\",
\"domain2.com\"
]
}"
const url = new URL(
"https://app.wavo.co/api/v1/suppressions/domains"
);
const headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"client_id": "a83445df46as5432mga",
"domains": [
"domain1.com",
"domain2.com"
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://app.wavo.co/api/v1/suppressions/domains',
[
'headers' => [
'Authorization' => 'Bearer {token}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'client_id' => 'a83445df46as5432mga',
'domains' => [
'domain1.com',
'domain2.com',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://app.wavo.co/api/v1/suppressions/domains'
payload = {
"client_id": "a83445df46as5432mga",
"domains": [
"domain1.com",
"domain2.com"
]
}
headers = {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (201):
{
"data": [
"domain1.com",
"domain2.com"
]
}
Received response:
Request failed with error: