Welcome to the documentation for the Pulse API. Here you will be able to find all of our available resources and how to use them. To use our API, all endpoints require a token that can be created when you login to Pulse.
This documentation aims to provide all the information you need to work with our API.
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 API tokens within Pulse when logged in. Click on your name in the bottom left, then click API Tokens, give your token a name and then click Save. Your token will only be shown that one time, so make sure to copy it there and then. Tokens can be revoked at any time.
This endpoint will show details of the company that the api token is for.
$client = new \GuzzleHttp\Client();
$url = 'https://pulsereviews.io/api/company';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body)); {
"data": {
"name": "Richards Ltd",
"locations": []
}
}
Endpoints for managing Google locations on Pulse
This endpoint will list all Google locations tied to the user.
$client = new \GuzzleHttp\Client();
$url = 'https://pulsereviews.io/api/locations/google';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body)); {
"data": [
{
"id": "49770069",
"name": "Rose Ltd",
"googleRating": 3.1,
"preciseGoogleRating": 3.0757,
"reviewsCount": 58,
"site": "ross.org",
"address": "73 Adam Harbours\nMartinhaven\nB10 9JS",
"regularHours": {
"MONDAY": {
"open": "8:00",
"close": "17:00"
},
"TUESDAY": {
"open": "8:00",
"close": "17:00"
},
"WEDNESDAY": {
"open": "8:00",
"close": "21:00"
},
"THURSDAY": {
"open": "8:00",
"close": "21:00"
},
"FRIDAY": {
"open": "8:00",
"close": "21:00"
},
"SATURDAY": {
"open": "8:00",
"close": "17:00"
},
"SUNDAY": {
"open": "10:00",
"close": "16:00"
}
},
"specialHours": {
"2024-12-25": {
"status": "closed",
"open": null,
"close": null
},
"2024-12-24": {
"status": "open",
"open": "10:00",
"close": "15:00"
}
}
},
{
"id": "23055011",
"name": "Richards Ltd",
"googleRating": 3.1,
"preciseGoogleRating": 3.0931,
"reviewsCount": 193,
"site": "rogers.com",
"address": "4 Kennedy Points\nLake Alan\nOX12 8PJ",
"regularHours": {
"MONDAY": {
"open": "8:00",
"close": "17:00"
},
"TUESDAY": {
"open": "8:00",
"close": "17:00"
},
"WEDNESDAY": {
"open": "8:00",
"close": "21:00"
},
"THURSDAY": {
"open": "8:00",
"close": "21:00"
},
"FRIDAY": {
"open": "8:00",
"close": "21:00"
},
"SATURDAY": {
"open": "8:00",
"close": "17:00"
},
"SUNDAY": {
"open": "10:00",
"close": "16:00"
}
},
"specialHours": {
"2024-12-25": {
"status": "closed",
"open": null,
"close": null
},
"2024-12-24": {
"status": "open",
"open": "10:00",
"close": "15:00"
}
}
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
This endpoint will show a specific Google location, based on Google ID.
$client = new \GuzzleHttp\Client();
$url = 'https://pulsereviews.io/api/locations/google/749845872867289688';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body)); {
"data": {
"id": "93467480",
"name": "James Ltd",
"googleRating": 3.9,
"preciseGoogleRating": 3.9439,
"reviewsCount": 83,
"site": "simpson.net",
"address": "Studio 50h\nTaylor Track\nImogenburgh\nDT7 3SY",
"regularHours": {
"MONDAY": {
"open": "8:00",
"close": "17:00"
},
"TUESDAY": {
"open": "8:00",
"close": "17:00"
},
"WEDNESDAY": {
"open": "8:00",
"close": "21:00"
},
"THURSDAY": {
"open": "8:00",
"close": "21:00"
},
"FRIDAY": {
"open": "8:00",
"close": "21:00"
},
"SATURDAY": {
"open": "8:00",
"close": "17:00"
},
"SUNDAY": {
"open": "10:00",
"close": "16:00"
}
},
"specialHours": {
"2024-12-25": {
"status": "closed",
"open": null,
"close": null
},
"2024-12-24": {
"status": "open",
"open": "10:00",
"close": "15:00"
}
}
}
}
This endpoint can be used to update a Google location. Currently, the Pulse API can only be used to update Regular and Special hours. This endpoint is subject to Google rate limits so make sure you allow for plenty of time for the update to complete.
$client = new \GuzzleHttp\Client();
$url = 'https://pulsereviews.io/api/locations/google/749845872867289688';
$response = $client->patch(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'applyChangesOn' => '2030-05-01 23:00:00',
'notes' => 'Changes Wednesday to open at 10am and close at 4pm.',
'validateOnly' => true,
'regularHours' => [
[
'day' => 'Monday',
'openTime' => '2000-09-28',
'closeTime' => '00:54',
],
'openTime' => '09:00',
'closeTime' => '17:00',
'day' => 'Monday',
],
'specialHours' => [
[
'date' => '2026-01-30',
'openTime' => '2014-07-01',
'closeTime' => '00:54',
],
'date' => '2024-12-24',
'openTime' => '09:00',
'closeTime' => '17:00',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body)); {
"data": {
"id": null,
"payload": {
"title": "Clarke Ltd",
"profile": {
"description": "Nihil repudiandae ut eum est. Provident nam aliquam eos quasi omnis. Non et inventore tempora placeat dolore."
},
"phoneNumbers": {
"primaryPhone": "0011 553 2729",
"addititionalPhones": []
},
"websiteUrl": "clark.org",
"storefrontAddress": {
"postalCode": "ML11 9BQ",
"locality": "Staceymouth",
"addressLines": [
"46 Harley Villages",
"",
"",
"",
""
],
"regionCode": "GB"
},
"regularHours": {
"periods": [
{
"openDay": "MONDAY",
"closeDay": "MONDAY",
"openTime": {
"hours": 8,
"minutes": 0
},
"closeTime": {
"hours": 18,
"minutes": 0
}
},
{
"openDay": "TUESDAY",
"closeDay": "TUESDAY",
"openTime": {
"hours": 8,
"minutes": 0
},
"closeTime": {
"hours": 18,
"minutes": 0
}
},
{
"openDay": "WEDNESDAY",
"closeDay": "WEDNESDAY",
"openTime": {
"hours": 8,
"minutes": 0
},
"closeTime": {
"hours": 18,
"minutes": 0
}
},
{
"openDay": "THURSDAY",
"closeDay": "THURSDAY",
"openTime": {
"hours": 8,
"minutes": 0
},
"closeTime": {
"hours": 18,
"minutes": 0
}
},
{
"openDay": "FRIDAY",
"closeDay": "FRIDAY",
"openTime": {
"hours": 8,
"minutes": 0
},
"closeTime": {
"hours": 18,
"minutes": 0
}
}
]
},
"specialHours": {
"specialHourPeriods": [
{
"closed": true,
"endDate": {
"year": 2024,
"month": 12,
"day": 25
},
"openTime": {
"hours": null,
"minutes": null
},
"closeTime": {
"hours": null,
"minutes": null
},
"startDate": {
"year": 2024,
"month": 12,
"day": 25
}
},
{
"closed": false,
"endDate": {
"year": 2024,
"month": 12,
"day": 24
},
"openTime": {
"hours": 10,
"minutes": 0
},
"closeTime": {
"hours": 15,
"minutes": 0
},
"startDate": {
"year": 2024,
"month": 12,
"day": 24
}
}
]
}
},
"process_at": "2026-02-26T00:54:56.000000Z",
"notes": "Pariatur et laboriosam alias maiores. Optio fugiat quo blanditiis architecto optio. Consectetur quidem commodi deserunt labore dolorem aut.",
"validateOnly": true
}
}
This endpoint will list all updates for the specified Google location.
$client = new \GuzzleHttp\Client();
$url = 'https://pulsereviews.io/api/locations/google/749845872867289688/updates';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body)); {
"data": {
"id": null,
"payload": {
"title": "Roberts Ltd",
"profile": {
"description": "Magni omnis quod repellat animi voluptas tempore omnis. Corporis soluta aliquam temporibus cumque. Sit fugiat est consectetur."
},
"phoneNumbers": {
"primaryPhone": "(0834) 1771350",
"addititionalPhones": []
},
"websiteUrl": "adams.com",
"storefrontAddress": {
"postalCode": "NG9 3FL",
"locality": "Knightmouth",
"addressLines": [
"229 Morgan Way",
"",
"",
"",
""
],
"regionCode": "GB"
},
"regularHours": {
"periods": [
{
"openDay": "MONDAY",
"closeDay": "MONDAY",
"openTime": {
"hours": 8,
"minutes": 0
},
"closeTime": {
"hours": 18,
"minutes": 0
}
},
{
"openDay": "TUESDAY",
"closeDay": "TUESDAY",
"openTime": {
"hours": 8,
"minutes": 0
},
"closeTime": {
"hours": 18,
"minutes": 0
}
},
{
"openDay": "WEDNESDAY",
"closeDay": "WEDNESDAY",
"openTime": {
"hours": 8,
"minutes": 0
},
"closeTime": {
"hours": 18,
"minutes": 0
}
},
{
"openDay": "THURSDAY",
"closeDay": "THURSDAY",
"openTime": {
"hours": 8,
"minutes": 0
},
"closeTime": {
"hours": 18,
"minutes": 0
}
},
{
"openDay": "FRIDAY",
"closeDay": "FRIDAY",
"openTime": {
"hours": 8,
"minutes": 0
},
"closeTime": {
"hours": 18,
"minutes": 0
}
}
]
},
"specialHours": {
"specialHourPeriods": [
{
"closed": true,
"endDate": {
"year": 2024,
"month": 12,
"day": 25
},
"openTime": {
"hours": null,
"minutes": null
},
"closeTime": {
"hours": null,
"minutes": null
},
"startDate": {
"year": 2024,
"month": 12,
"day": 25
}
},
{
"closed": false,
"endDate": {
"year": 2024,
"month": 12,
"day": 24
},
"openTime": {
"hours": 10,
"minutes": 0
},
"closeTime": {
"hours": 15,
"minutes": 0
},
"startDate": {
"year": 2024,
"month": 12,
"day": 24
}
}
]
}
},
"process_at": "2026-02-10T00:54:56.000000Z",
"notes": "Quia sed et debitis. Non possimus et eveniet consequatur quia. Rerum possimus accusantium ipsum nobis sit.",
"validateOnly": false
}
}
This endpoint will show a specific update for the specified Google location.
$client = new \GuzzleHttp\Client();
$url = 'https://pulsereviews.io/api/locations/google/749845872867289688/updates/23';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body)); {
"data": {
"id": null,
"payload": {
"title": "Reynolds Ltd",
"profile": {
"description": "Quia et voluptatem non non nesciunt quod doloremque. Consequuntur rerum dolor laudantium nihil. Sit nobis minus et voluptate."
},
"phoneNumbers": {
"primaryPhone": "+44(0)7861 32055",
"addititionalPhones": []
},
"websiteUrl": "phillips.com",
"storefrontAddress": {
"postalCode": "W1G 9PZ",
"locality": "Karenview",
"addressLines": [
"Flat 53p\nPatel Ports",
"",
"",
"",
""
],
"regionCode": "GB"
},
"regularHours": {
"periods": [
{
"openDay": "MONDAY",
"closeDay": "MONDAY",
"openTime": {
"hours": 8,
"minutes": 0
},
"closeTime": {
"hours": 18,
"minutes": 0
}
},
{
"openDay": "TUESDAY",
"closeDay": "TUESDAY",
"openTime": {
"hours": 8,
"minutes": 0
},
"closeTime": {
"hours": 18,
"minutes": 0
}
},
{
"openDay": "WEDNESDAY",
"closeDay": "WEDNESDAY",
"openTime": {
"hours": 8,
"minutes": 0
},
"closeTime": {
"hours": 18,
"minutes": 0
}
},
{
"openDay": "THURSDAY",
"closeDay": "THURSDAY",
"openTime": {
"hours": 8,
"minutes": 0
},
"closeTime": {
"hours": 18,
"minutes": 0
}
},
{
"openDay": "FRIDAY",
"closeDay": "FRIDAY",
"openTime": {
"hours": 8,
"minutes": 0
},
"closeTime": {
"hours": 18,
"minutes": 0
}
}
]
},
"specialHours": {
"specialHourPeriods": [
{
"closed": true,
"endDate": {
"year": 2024,
"month": 12,
"day": 25
},
"openTime": {
"hours": null,
"minutes": null
},
"closeTime": {
"hours": null,
"minutes": null
},
"startDate": {
"year": 2024,
"month": 12,
"day": 25
}
},
{
"closed": false,
"endDate": {
"year": 2024,
"month": 12,
"day": 24
},
"openTime": {
"hours": 10,
"minutes": 0
},
"closeTime": {
"hours": 15,
"minutes": 0
},
"startDate": {
"year": 2024,
"month": 12,
"day": 24
}
}
]
}
},
"process_at": "2026-02-16T00:54:56.000000Z",
"notes": "Quos impedit dolore vel nulla mollitia in quis. Deleniti aut omnis alias. Alias minima tempore sed occaecati et quasi eos.",
"validateOnly": true
}
}
This endpoint will delete a specific update for the specified Google location.
$client = new \GuzzleHttp\Client();
$url = 'https://pulsereviews.io/api/locations/google/749845872867289688/updates/23';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body)); [Empty response]
This endpoint will allow you to quickly check that you can authenticate to the API.
$client = new \GuzzleHttp\Client();
$url = 'https://pulsereviews.io/api/health';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body)); {
"status": "ok"
}