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/v1/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": "Thomas 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/v1/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": "65256199",
"name": "Harrison Ltd",
"googleRating": 3.2,
"preciseGoogleRating": 3.2366,
"reviewsCount": 152,
"site": "baker.com",
"address": "41 Wilson Keys\nDuncanhaven\nOL12 7TX",
"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": "6140039",
"name": "Richards Ltd",
"googleRating": 4.6,
"preciseGoogleRating": 4.5843,
"reviewsCount": 171,
"site": "brown.com",
"address": "Flat 90z\nAva Road\nEast Keith\nFK2 8DB",
"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/v1/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": "94733922",
"name": "Khan Ltd",
"googleRating": 3.9,
"preciseGoogleRating": 3.8581,
"reviewsCount": 162,
"site": "morris.biz",
"address": "47 Collins Burgs\nHollyborough\nG77 6DL",
"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/v1/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' => 'Friday',
'openTime' => '2010-01-23',
'closeTime' => '16:22',
],
'openTime' => '09:00',
'closeTime' => '17:00',
'day' => 'Monday',
],
'specialHours' => [
[
'date' => '2026-06-13',
'openTime' => '2000-06-28',
'closeTime' => '16:22',
],
'date' => '2024-12-24',
'openTime' => '09:00',
'closeTime' => '17:00',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body)); {
"data": {
"id": null,
"payload": {
"title": "Davis Ltd",
"profile": {
"description": "Dolor aperiam voluptate sit voluptatem. Nemo quos nam qui natus omnis eos itaque. Voluptatem placeat a sed quas tempora sit accusamus."
},
"phoneNumbers": {
"primaryPhone": "0349 245 9232",
"addititionalPhones": []
},
"websiteUrl": "fox.com",
"storefrontAddress": {
"postalCode": "W10 6DY",
"locality": "Quentinport",
"addressLines": [
"1 Cooper Hill",
"",
"",
"",
""
],
"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-07-04T16:22:51.000000Z",
"notes": "Nemo suscipit nostrum temporibus ex commodi ut. Rem quae eaque sint adipisci. Autem fuga ab qui.",
"validateOnly": false
}
}
Copy this location's regular and/or special opening hours to other locations in your company. Creates one pending update per target location; changes are applied according to each update's process_at.
$client = new \GuzzleHttp\Client();
$url = 'https://pulsereviews.io/api/v1/locations/google/749845872867289688/copy-hours';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'target_google_ids' => [
749845872867289689,
749845872867289690,
],
'hours_to_copy' => [
'regularHours',
'specialHours',
],
'apply_changes_on' => '2030-05-01 23:00:00',
'notes' => 'qui',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body)); {
"data": [
{
"id": null,
"payload": {
"title": "Edwards Ltd",
"profile": {
"description": "Consequatur iste rerum earum voluptas aperiam aut qui. Voluptas vel veniam velit. Odio deleniti ea porro quae ut."
},
"phoneNumbers": {
"primaryPhone": "+44(0)1035 88411",
"addititionalPhones": []
},
"websiteUrl": "watson.com",
"storefrontAddress": {
"postalCode": "CF48 2SR",
"locality": "Huntermouth",
"addressLines": [
"149 Wright Common",
"",
"",
"",
""
],
"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-07-09T16:22:51.000000Z",
"notes": "Sequi delectus hic tempore quibusdam eligendi. Minima qui praesentium modi et et ut. Accusamus culpa vel atque et sapiente.",
"validateOnly": true
},
{
"id": null,
"payload": {
"title": "King Ltd",
"profile": {
"description": "Ea vitae quibusdam omnis vel maiores nulla. Ut harum sed fuga libero est. Repudiandae quis quis earum reiciendis nihil vero omnis sapiente."
},
"phoneNumbers": {
"primaryPhone": "(0293) 4584776",
"addititionalPhones": []
},
"websiteUrl": "chapman.com",
"storefrontAddress": {
"postalCode": "YO32 9SX",
"locality": "New Charlotte",
"addressLines": [
"Flat 94x\nOliver Fords",
"",
"",
"",
""
],
"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-06-28T16:22:51.000000Z",
"notes": "Iusto corporis rerum voluptas rem eum sint quaerat. Doloribus corrupti aut esse illum. Porro minus veniam accusamus repellat dolorum.",
"validateOnly": true
}
]
}
This endpoint will list all updates for the specified Google location.
$client = new \GuzzleHttp\Client();
$url = 'https://pulsereviews.io/api/v1/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": "Moore Ltd",
"profile": {
"description": "Rerum vel mollitia ut. Assumenda harum non reiciendis numquam sit voluptas. Illo iusto delectus dolorum animi consectetur."
},
"phoneNumbers": {
"primaryPhone": "+44(0)1560 89623",
"addititionalPhones": []
},
"websiteUrl": "thompson.com",
"storefrontAddress": {
"postalCode": "CM22 6DR",
"locality": "West Mandy",
"addressLines": [
"Flat 83\nWard Land",
"",
"",
"",
""
],
"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-07-02T16:22:51.000000Z",
"notes": "Et magnam ut aut reprehenderit veniam dolores illo amet. Molestias quisquam in enim recusandae tempora autem quos. Delectus occaecati esse ipsam molestiae qui libero ab.",
"validateOnly": true
}
}
This endpoint will show a specific update for the specified Google location.
$client = new \GuzzleHttp\Client();
$url = 'https://pulsereviews.io/api/v1/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": "Khan Ltd",
"profile": {
"description": "Harum similique velit omnis aspernatur dolores. Labore provident sunt repellendus. Velit error laboriosam voluptatem omnis et corporis omnis."
},
"phoneNumbers": {
"primaryPhone": "06102352678",
"addititionalPhones": []
},
"websiteUrl": "richards.com",
"storefrontAddress": {
"postalCode": "G12 9BH",
"locality": "South Mikemouth",
"addressLines": [
"55 Rob Plains",
"",
"",
"",
""
],
"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-07-09T16:22:51.000000Z",
"notes": "Distinctio iusto tempore sequi laboriosam laudantium quis quae. Aut porro dolores mollitia pariatur maxime aut molestias est. Nulla sunt dolor ab sed aut.",
"validateOnly": true
}
}
This endpoint will delete a specific update for the specified Google location.
$client = new \GuzzleHttp\Client();
$url = 'https://pulsereviews.io/api/v1/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/v1/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"
}