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": "Turner 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": "88788351",
"name": "Gray Ltd",
"googleRating": 3.4,
"preciseGoogleRating": 3.3887,
"reviewsCount": 136,
"site": "richardson.org",
"address": "Studio 18\nMoore Manor\nEast Carole\nPE25 2RA",
"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": "46781831",
"name": "Cooper Ltd",
"googleRating": 4,
"preciseGoogleRating": 4.0406,
"reviewsCount": 142,
"site": "cooper.com",
"address": "Studio 91r\nAva Summit\nWalshburgh\nW1G 9PN",
"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": "25132288",
"name": "Edwards Ltd",
"googleRating": 3.9,
"preciseGoogleRating": 3.8903,
"reviewsCount": 52,
"site": "kelly.co.uk",
"address": "507 Rose Extension\nRossburgh\nOX11 8JJ",
"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' => 'Thursday',
'openTime' => '2002-08-22',
'closeTime' => '03:04',
],
'openTime' => '09:00',
'closeTime' => '17:00',
'day' => 'Monday',
],
'specialHours' => [
[
'date' => '2025-12-01',
'openTime' => '2000-02-23',
'closeTime' => '03:04',
],
'date' => '2024-12-24',
'openTime' => '09:00',
'closeTime' => '17:00',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body)); {
"data": {
"id": null,
"payload": {
"title": "Saunders Ltd",
"profile": {
"description": "Et voluptatibus doloremque consequatur. Consequatur quas amet cupiditate. Est amet saepe commodi laudantium fugiat quo sit."
},
"phoneNumbers": {
"primaryPhone": "0021 1216712",
"addititionalPhones": []
},
"websiteUrl": "saunders.com",
"storefrontAddress": {
"postalCode": "HP1 9HT",
"locality": "Cameronstad",
"addressLines": [
"99 Charles Neck",
"",
"",
"",
""
],
"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": "2025-12-09T03:04:07.000000Z",
"notes": "Autem voluptate vitae dolor itaque velit nemo totam. Ipsa mollitia aut odit numquam dolorum voluptas porro. Omnis et unde odio cupiditate iure quas.",
"validateOnly": false
}
}
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": "Phillips Ltd",
"profile": {
"description": "Omnis perspiciatis quibusdam dolore autem dolorem consequatur voluptas. Mollitia ducimus quo qui nisi eum nihil quae rerum. Non non expedita accusamus neque voluptatibus."
},
"phoneNumbers": {
"primaryPhone": "+44(0)9161 930293",
"addititionalPhones": []
},
"websiteUrl": "lloyd.com",
"storefrontAddress": {
"postalCode": "L38 9EB",
"locality": "Reeceshire",
"addressLines": [
"69 Ellis Glen",
"",
"",
"",
""
],
"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": "2025-12-23T03:04:07.000000Z",
"notes": "Sit alias placeat quia vitae. Non doloremque iusto eos est provident. Iusto quibusdam officia dolor dolorem.",
"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": "Moore Ltd",
"profile": {
"description": "Fugit laudantium voluptas asperiores aut eius. Consectetur atque iusto autem et. Delectus earum dolorem animi veritatis aut repudiandae."
},
"phoneNumbers": {
"primaryPhone": "00826 03566",
"addititionalPhones": []
},
"websiteUrl": "johnson.co.uk",
"storefrontAddress": {
"postalCode": "DN40 3PT",
"locality": "Aaronchester",
"addressLines": [
"29 Simpson Terrace",
"",
"",
"",
""
],
"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": "2025-12-30T03:04:07.000000Z",
"notes": "Aut libero aut voluptas dolorem. Aperiam molestias aut vel sit reiciendis ut. Ut voluptates id natus repellat.",
"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"
}