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": "Smith 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": "25102868",
"name": "Carter Ltd",
"googleRating": 3.5,
"preciseGoogleRating": 3.5367,
"reviewsCount": 98,
"site": "morgan.info",
"address": "5 Davis Springs\nHillfort\nNR31 8NS",
"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": "37080962",
"name": "Roberts Ltd",
"googleRating": 4.4,
"preciseGoogleRating": 4.4402,
"reviewsCount": 55,
"site": "allen.com",
"address": "28 Ward Mountain\nKyleland\nWN3 6DQ",
"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": "40830965",
"name": "Ellis Ltd",
"googleRating": 4.9,
"preciseGoogleRating": 4.9343,
"reviewsCount": 79,
"site": "bennett.com",
"address": "Studio 75\nTurner Cliff\nTanyaburgh\nTN31 7BY",
"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' => 'Wednesday',
'openTime' => '2014-03-11',
'closeTime' => '14:58',
],
'openTime' => '09:00',
'closeTime' => '17:00',
'day' => 'Monday',
],
'specialHours' => [
[
'date' => '2026-05-04',
'openTime' => '2021-11-30',
'closeTime' => '14:58',
],
'date' => '2024-12-24',
'openTime' => '09:00',
'closeTime' => '17:00',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body)); {
"data": {
"id": null,
"payload": {
"title": "Matthews Ltd",
"profile": {
"description": "Quia eos autem labore ut sint quo consequatur. Qui earum consectetur eaque est esse. Non voluptates earum et odit."
},
"phoneNumbers": {
"primaryPhone": "0588 2435190",
"addititionalPhones": []
},
"websiteUrl": "williams.biz",
"storefrontAddress": {
"postalCode": "HR9 9AJ",
"locality": "Harveyton",
"addressLines": [
"65 Stewart Square",
"",
"",
"",
""
],
"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-05-14T14:58:09.000000Z",
"notes": "Non unde assumenda rerum. Ut nostrum aliquam et dignissimos fugiat soluta eius rerum. Porro inventore corrupti odit dolore id et voluptate.",
"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' => 'optio',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body)); {
"data": [
{
"id": null,
"payload": {
"title": "Lewis Ltd",
"profile": {
"description": "Expedita accusamus voluptates quisquam eligendi cupiditate esse. Dolores id perspiciatis nisi eum eligendi non. Et facilis natus corrupti et molestiae."
},
"phoneNumbers": {
"primaryPhone": "0978 629 3414",
"addititionalPhones": []
},
"websiteUrl": "james.com",
"storefrontAddress": {
"postalCode": "B63 4JQ",
"locality": "East Suzanneburgh",
"addressLines": [
"718 Theo River",
"",
"",
"",
""
],
"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-05-08T14:58:09.000000Z",
"notes": "Sed in voluptates non ut mollitia maiores beatae. Vitae quis esse illum qui aliquid natus dolores asperiores. Quaerat distinctio aliquid eveniet voluptatem.",
"validateOnly": false
},
{
"id": null,
"payload": {
"title": "Thompson Ltd",
"profile": {
"description": "Quod quod est atque vero. Libero et perspiciatis quam est labore. Ut eligendi rerum possimus dolorem."
},
"phoneNumbers": {
"primaryPhone": "(0431) 628 4094",
"addititionalPhones": []
},
"websiteUrl": "campbell.com",
"storefrontAddress": {
"postalCode": "NG18 3AZ",
"locality": "Allentown",
"addressLines": [
"Flat 86\nMiller Manors",
"",
"",
"",
""
],
"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-01T14:58:09.000000Z",
"notes": "Ad laudantium est error sit vero. Sed et a ea aut ratione. Reiciendis esse maiores enim.",
"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": "Reid Ltd",
"profile": {
"description": "Qui quasi quis ea et voluptatem voluptatem voluptas. Quia voluptates qui ratione ipsam nesciunt. Cupiditate at minus dicta."
},
"phoneNumbers": {
"primaryPhone": "0226 2516346",
"addititionalPhones": []
},
"websiteUrl": "hughes.com",
"storefrontAddress": {
"postalCode": "SE26 6JG",
"locality": "East Laura",
"addressLines": [
"7 Jodie Crest",
"",
"",
"",
""
],
"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-05-25T14:58:09.000000Z",
"notes": "Et in quae qui ullam repudiandae voluptatem. Officiis odit exercitationem corrupti dolorem similique odit unde ducimus. Qui delectus ut ea libero autem.",
"validateOnly": false
}
}
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": "Roberts Ltd",
"profile": {
"description": "Mollitia tempore perspiciatis ut recusandae voluptatum eveniet officiis. Facilis quia consequatur consequatur quia et dolores. Et omnis vitae autem et qui officiis aut."
},
"phoneNumbers": {
"primaryPhone": "0248 3279719",
"addititionalPhones": []
},
"websiteUrl": "scott.com",
"storefrontAddress": {
"postalCode": "DE11 0SD",
"locality": "New Daniel",
"addressLines": [
"Flat 29\nJason Mill",
"",
"",
"",
""
],
"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-05-23T14:58:09.000000Z",
"notes": "Sit possimus velit reprehenderit placeat aspernatur quia. Commodi porro tempore sapiente est quis error eius. Alias et id a deleniti inventore nam beatae repudiandae.",
"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"
}