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.
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": "40692402",
"name": "Price Ltd",
"googleRating": 4,
"preciseGoogleRating": 4.0013,
"reviewsCount": 120,
"site": "marshall.com",
"address": "Flat 07\nPatricia Mills\nNew Jennifer\nBS8 4UR",
"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": "42792171",
"name": "Walker Ltd",
"googleRating": 3.8,
"preciseGoogleRating": 3.7733,
"reviewsCount": 166,
"site": "mitchell.com",
"address": "45 Harris Plain\nLisastad\nTN23 5PR",
"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": "69914221",
"name": "Johnson Ltd",
"googleRating": 3.3,
"preciseGoogleRating": 3.3252,
"reviewsCount": 95,
"site": "saunders.com",
"address": "14 Jacob Junction\nSouth Ava\nBS4 2BH",
"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' => 'Sunday',
'openTime' => '2017-11-02',
'closeTime' => '21:27',
],
'openTime' => '09:00',
'closeTime' => '17:00',
'day' => 'Monday',
],
'specialHours' => [
[
'date' => '2025-09-15',
'openTime' => '2016-09-17',
'closeTime' => '21:27',
],
'date' => '2024-12-24',
'openTime' => '09:00',
'closeTime' => '17:00',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
{
"data": {
"id": null,
"payload": {
"title": "Shaw Ltd",
"profile": {
"description": "Tenetur eligendi quae sed magni maiores. Inventore iure deleniti enim quo voluptate quasi est. Maxime voluptas facere suscipit quo doloremque."
},
"phoneNumbers": {
"primaryPhone": "+44(0)9338691277",
"addititionalPhones": []
},
"websiteUrl": "rose.com",
"storefrontAddress": {
"postalCode": "SL3 9LU",
"locality": "North Amelia",
"addressLines": [
"Flat 17\nEdwards Falls",
"",
"",
"",
""
],
"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-09-25T21:27:23.000000Z",
"notes": "Error sit distinctio soluta libero maxime. Praesentium suscipit cupiditate ipsum omnis tenetur. Accusantium distinctio voluptas facere rerum aut aliquid.",
"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": "Jones Ltd",
"profile": {
"description": "Eveniet voluptates alias ipsam labore placeat. Vero molestias praesentium rerum ea porro atque. Ducimus beatae sed eius nobis quo eligendi rem."
},
"phoneNumbers": {
"primaryPhone": "+44(0)0866 69549",
"addititionalPhones": []
},
"websiteUrl": "walker.org",
"storefrontAddress": {
"postalCode": "CA6 5YS",
"locality": "North Claire",
"addressLines": [
"6 Murray Haven",
"",
"",
"",
""
],
"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-10-15T21:27:23.000000Z",
"notes": "Consequatur incidunt quibusdam aspernatur quaerat omnis possimus eos ea. Quia et hic autem velit iure quia est et. Laboriosam et ea nesciunt deleniti.",
"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": "Anderson Ltd",
"profile": {
"description": "Similique amet veritatis officiis nulla. Similique quidem beatae reprehenderit voluptatem earum laboriosam. Culpa eum dolorum quibusdam aut aperiam earum nemo."
},
"phoneNumbers": {
"primaryPhone": "(04693) 000996",
"addititionalPhones": []
},
"websiteUrl": "reid.biz",
"storefrontAddress": {
"postalCode": "BT46 5NR",
"locality": "Port Samuelmouth",
"addressLines": [
"64 Cameron Springs",
"",
"",
"",
""
],
"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-09-27T21:27:23.000000Z",
"notes": "Provident aut perspiciatis quisquam iure nesciunt necessitatibus. Fugit aspernatur modi libero vitae harum perspiciatis. Aut dolorum nam et sit autem et sed placeat.",
"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"
}