NAV
bash javascript php python

Info

Welcome to the Wavo Platform API reference.

Introduction

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.

Authentication

User authentication is achieved through a Bearer token used in request header.

The user should generate an access token through the Wavo app, third-party integration settings.

This token authenticates the user and applies authorization logic to the API requests, fetching the appropriate data.

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 -X GET \
    -G "https://app.wavo.co/api/v1/campaigns?client_id=ah83445df46as5432mga" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://app.wavo.co/api/v1/campaigns"
);

let params = {
    "client_id": "ah83445df46as5432mga",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

fetch(url, {
    method: "GET",
    headers: headers,
})
    .then(response => response.json())
    .then(json => console.log(json));

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://app.wavo.co/api/v1/campaigns',
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => 'Bearer {token}',
        ],
        '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 = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):

{
    "data": [
        {
            "id": "3ry94qv27857gmxj1k85",
            "name": "Ullrich, Mante and Brakus 3",
            "timezone": "US\/Mountain",
            "status": "DRAFT",
            "created_at": 1574328257,
            "client": {
                "id": "xkrdlm37w6r2w8enp6zq",
                "name": "Ullrich, Mante and Brakus",
                "created_at": 1574328257
            }
        },
        {
            "id": "pz45y1relxolx6oqjv2d",
            "name": "McLaughlin-Satterfield 12",
            "timezone": "US\/Mountain",
            "status": "DRAFT",
            "created_at": 1574328257,
            "client": {
                "id": "vl8re092o9v7g745jmpk",
                "name": "McLaughlin-Satterfield",
                "created_at": 1574328257
            }
        }
    ]
}

HTTP Request

GET api/v1/campaigns

Query Parameters

Parameter Status Description
client_id optional string The id of a client.

Create a new campaign


Requires authentication Create a new campaign for a client.

Example request:

curl -X POST \
    "https://app.wavo.co/api/v1/campaigns" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}" \
    -d '{"name":"nostrum","client_id":"4a83445df46as5432mga","timezone":"US\/Mountain"}'
const url = new URL(
    "https://app.wavo.co/api/v1/campaigns"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

let body = {
    "name": "nostrum",
    "client_id": "4a83445df46as5432mga",
    "timezone": "US\/Mountain"
}

fetch(url, {
    method: "POST",
    headers: headers,
    body: body
})
    .then(response => response.json())
    .then(json => console.log(json));

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://app.wavo.co/api/v1/campaigns',
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => 'Bearer {token}',
        ],
        'json' => [
            'name' => 'nostrum',
            '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": "nostrum",
    "client_id": "4a83445df46as5432mga",
    "timezone": "US\/Mountain"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {token}'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):

{
    "data": {
        "id": "y4gvzro07rzl2eq9dwjk",
        "name": "Wiegand-Bosco 13",
        "timezone": "US\/Mountain",
        "status": "DRAFT",
        "created_at": 1574328257,
        "client": {
            "id": "l26qer1ygrr5gdxm459p",
            "name": "Wiegand-Bosco",
            "created_at": 1574328257
        }
    }
}

HTTP Request

POST api/v1/campaigns

Body Parameters

Parameter Type Status Description
name string required The campaign name.
client_id string required The id of the client.
timezone string required The timezone that the campaign's schedule should use.

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 -X GET \
    -G "https://app.wavo.co/api/v1/clients" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://app.wavo.co/api/v1/clients"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

fetch(url, {
    method: "GET",
    headers: headers,
})
    .then(response => response.json())
    .then(json => console.log(json));

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://app.wavo.co/api/v1/clients',
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => 'Bearer {token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://app.wavo.co/api/v1/clients'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):

{
    "data": [
        {
            "id": "xv6jqlk4wez1w53dm1p2",
            "name": "Dare Inc",
            "created_at": 1574328256
        },
        {
            "id": "nk68rdmpwv1kwz05291y",
            "name": "Keeling LLC",
            "created_at": 1574328257
        }
    ]
}

HTTP Request

GET api/v1/clients

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 -X POST \
    "https://app.wavo.co/api/v1/contacts" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}" \
    -d '{"campaign_id":"fkjtf4390kfgu8903nsk","email":"sit","first_name":"et","last_name":"illo","company":"id","industry":"est","website":"rerum","title":"libero","phone":"sed","address":"aut","city":"vel","state":"sed","country":"debitis"}'
const url = new URL(
    "https://app.wavo.co/api/v1/contacts"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

let body = {
    "campaign_id": "fkjtf4390kfgu8903nsk",
    "email": "sit",
    "first_name": "et",
    "last_name": "illo",
    "company": "id",
    "industry": "est",
    "website": "rerum",
    "title": "libero",
    "phone": "sed",
    "address": "aut",
    "city": "vel",
    "state": "sed",
    "country": "debitis"
}

fetch(url, {
    method: "POST",
    headers: headers,
    body: body
})
    .then(response => response.json())
    .then(json => console.log(json));

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://app.wavo.co/api/v1/contacts',
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => 'Bearer {token}',
        ],
        'json' => [
            'campaign_id' => 'fkjtf4390kfgu8903nsk',
            'email' => 'sit',
            'first_name' => 'et',
            'last_name' => 'illo',
            'company' => 'id',
            'industry' => 'est',
            'website' => 'rerum',
            'title' => 'libero',
            'phone' => 'sed',
            'address' => 'aut',
            'city' => 'vel',
            'state' => 'sed',
            'country' => 'debitis',
        ],
    ]
);
$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": "sit",
    "first_name": "et",
    "last_name": "illo",
    "company": "id",
    "industry": "est",
    "website": "rerum",
    "title": "libero",
    "phone": "sed",
    "address": "aut",
    "city": "vel",
    "state": "sed",
    "country": "debitis"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {token}'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):

{
    "data": {
        "id": "1m4ylwo8kq4r1e30pjvnx5r3g",
        "email": "aditya.kohler@example.org",
        "first_name": "Marco",
        "last_name": "Legros",
        "company": "Crooks and Sons",
        "industry": "Accounting",
        "website": "stamm.net",
        "title": "Mr.",
        "phone": "+1.562.861.7766",
        "address": "8887 Neva Drives Suite 003",
        "city": "Tessieberg",
        "state": "Florida",
        "country": "US",
        "custom_merge_fields": {
            "fav color": "fuchsia",
            "sport": "climbing",
            "os": "Windows NT 5.2"
        },
        "timezone": "US\/Mountain",
        "status": "OK",
        "created_at": 1574328257,
        "campaign": {
            "id": "krgd61w5lpvl824px30y",
            "name": "Lynch-Wunsch 5",
            "timezone": "US\/Mountain",
            "status": "DRAFT",
            "created_at": 1574328257,
            "client": {
                "id": "de6vm8y2o1v8ok5n0l91",
                "name": "Lynch-Wunsch",
                "created_at": 1574328257
            }
        }
    }
}

HTTP Request

POST api/v1/contacts

Body Parameters

Parameter Type Status Description
campaign_id string required The id of the campaign.
email string required The email address of the contact.
first_name string optional The first name of the contact.
last_name string optional The last name of contact.
company string optional The company of the contact.
industry string optional The industry of the contact.
website string optional The website of the contact.
title string optional The job title of the contact.
phone string optional The phone of the contact.
address string optional The address of the contact.
city string optional The city of the contact.
state string optional The state of the contact.
country string optional The country of the contact.

Display a contact


Requires authentication Find a contact by id and display its details.

Example request:

curl -X GET \
    -G "https://app.wavo.co/api/v1/contacts/fd1sd4834df6d854qw9a" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://app.wavo.co/api/v1/contacts/fd1sd4834df6d854qw9a"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

fetch(url, {
    method: "GET",
    headers: headers,
})
    .then(response => response.json())
    .then(json => console.log(json));

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://app.wavo.co/api/v1/contacts/fd1sd4834df6d854qw9a',
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => 'Bearer {token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://app.wavo.co/api/v1/contacts/fd1sd4834df6d854qw9a'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()

Example response (201):

{
    "data": {
        "id": "j4v71px5nqx5rex089lyrkw3o",
        "email": "holden07@example.com",
        "first_name": "Verona",
        "last_name": "Mohr",
        "company": "Rohan-Marquardt",
        "industry": "Research",
        "website": "wuckert.com",
        "title": "Prof.",
        "phone": "1-975-470-5819 x2916",
        "address": "6588 Ernestina Mountain Suite 608",
        "city": "Gusikowskiberg",
        "state": "South Carolina",
        "country": "US",
        "custom_merge_fields": {
            "fav color": "navy",
            "sport": "hiking",
            "os": "Windows 98"
        },
        "timezone": "US\/Mountain",
        "status": "OK",
        "created_at": 1574328257,
        "campaign": {
            "id": "xgd5km1w71j783ejz640",
            "name": "Keebler-Koepp 12",
            "timezone": "US\/Mountain",
            "status": "DRAFT",
            "created_at": 1574328257,
            "client": {
                "id": "drnyj32mol6nol7xq4e6",
                "name": "Keebler-Koepp",
                "created_at": 1574328257
            }
        }
    }
}

HTTP Request

GET api/v1/contacts/{contact_id}

URL Parameters

Parameter Status Description
contact_id required The id of the contact.