Introduction

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.

Authenticating requests

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.

Company

Show

GET
https://pulsereviews.io
/api/company
requires authentication

This endpoint will show details of the company that the api token is for.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
$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));
Example response:
{
    "data": {
        "name": "Thomas Ltd",
        "locations": []
    }
}
{
    "message": "Unauthenticated"
}
{
    "message": "This action is unauthorized."
}

Google Locations

Endpoints for managing Google locations on Pulse

List

GET
https://pulsereviews.io
/api/locations/google
requires authentication

This endpoint will list all Google locations tied to the user.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
$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));
Example response:
{
    "data": [
        {
            "id": "63656681",
            "name": "Chapman Ltd",
            "googleRating": 4.9,
            "preciseGoogleRating": 4.8858,
            "reviewsCount": 188,
            "site": "adams.co.uk",
            "address": "972 Wright Glen\nSouth Tinaton\nST14 5JJ",
            "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": "13856158",
            "name": "Lloyd Ltd",
            "googleRating": 3.8,
            "preciseGoogleRating": 3.843,
            "reviewsCount": 51,
            "site": "reid.net",
            "address": "Flat 57c\nSophie Plain\nSouth Millieside\nSW15 4AF",
            "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
    }
}
{
    "message": "Unauthenticated"
}

Show

GET
https://pulsereviews.io
/api/locations/google/{googleLocation_google_id}
requires authentication

This endpoint will show a specific Google location, based on Google ID.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

googleLocation_google_id
The Google ID of the Location you want to show.
required
Example:
749845872867289688
Example request:
$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));
Example response:
{
    "data": {
        "id": "7938433",
        "name": "Thompson Ltd",
        "googleRating": 3.2,
        "preciseGoogleRating": 3.1782,
        "reviewsCount": 149,
        "site": "hughes.com",
        "address": "Flat 90\nSaunders Flats\nMiketon\nMK17 9QX",
        "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"
            }
        }
    }
}
{
    "message": "Unauthenticated"
}
{
    "message": "This action is unauthorized."
}

Update

PATCH
https://pulsereviews.io
/api/locations/google/{googleLocation_google_id}
requires authentication

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.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

googleLocation_google_id
The Google ID of the Location you want to update.
required
Example:
749845872867289688

Body Parameters

Example request:
$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' => 'Tuesday',
                    'openTime' => '2009-05-14',
                    'closeTime' => '09:06',
                ],
                'openTime' => '09:00',
                'closeTime' => '17:00',
                'day' => 'Monday',
            ],
            'specialHours' => [
                [
                    'date' => '2025-10-31',
                    'openTime' => '2004-06-21',
                    'closeTime' => '09:06',
                ],
                'date' => '2024-12-24',
                'openTime' => '09:00',
                'closeTime' => '17:00',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response:
{
    "data": {
        "id": null,
        "payload": {
            "title": "Rose Ltd",
            "profile": {
                "description": "Placeat voluptatem eum illum ab. Velit rem ea et provident quia sapiente aspernatur eligendi. Similique explicabo aut repudiandae aut."
            },
            "phoneNumbers": {
                "primaryPhone": "(00665) 11394",
                "addititionalPhones": []
            },
            "websiteUrl": "wood.com",
            "storefrontAddress": {
                "postalCode": "M34 2JG",
                "locality": "East Vicky",
                "addressLines": [
                    "Studio 64v\nMarshall Vista",
                    "",
                    "",
                    "",
                    ""
                ],
                "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-11-28T09:06:09.000000Z",
        "notes": "Voluptas ea quia deserunt est sunt numquam. Est velit commodi nam voluptas et magni. Vitae nobis tempora exercitationem.",
        "validateOnly": false
    }
}
{
    "message": "Unauthenticated"
}
{
    "message": "This action is unauthorized."
}

List Updates

GET
https://pulsereviews.io
/api/locations/google/{googleLocation_google_id}/updates
requires authentication

This endpoint will list all updates for the specified Google location.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

googleLocation_google_id
The Google ID of the location you want to list updates for
required
Example:
749845872867289688
Example request:
$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));
Example response:
{
    "data": {
        "id": null,
        "payload": {
            "title": "Holmes Ltd",
            "profile": {
                "description": "Hic quia rerum voluptatum at rem. Ut sed quaerat dolor exercitationem necessitatibus. Eius consequatur dolorem error culpa eos."
            },
            "phoneNumbers": {
                "primaryPhone": "+44(0)408495511",
                "addititionalPhones": []
            },
            "websiteUrl": "palmer.biz",
            "storefrontAddress": {
                "postalCode": "IP7 5SS",
                "locality": "West Quentin",
                "addressLines": [
                    "566 Aiden 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": "2025-11-05T09:06:09.000000Z",
        "notes": "Ullam ex iste velit veritatis. Iusto minima et accusamus velit. Assumenda iusto et aperiam veniam adipisci est quia.",
        "validateOnly": false
    }
}
{
    "message": "Unauthenticated"
}

Show Update

GET
https://pulsereviews.io
/api/locations/google/{googleLocation_google_id}/updates/{pendingGoogleLocationUpdate_id}
requires authentication

This endpoint will show a specific update for the specified Google location.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

googleLocation_google_id
The Google ID of the location attached to the update you want to show.
required
Example:
749845872867289688
pendingGoogleLocationUpdate_id
The ID of the update you want to show.
required
Example:
23
Example request:
$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));
Example response:
{
    "data": {
        "id": null,
        "payload": {
            "title": "Murphy Ltd",
            "profile": {
                "description": "Magnam corrupti nemo hic. Accusamus nulla debitis nulla consequatur vero molestiae delectus. Eius quaerat cumque recusandae dolores dolorem a."
            },
            "phoneNumbers": {
                "primaryPhone": "+44(0)061945309",
                "addititionalPhones": []
            },
            "websiteUrl": "cox.org",
            "storefrontAddress": {
                "postalCode": "PL1 4EH",
                "locality": "Lake Caitlin",
                "addressLines": [
                    "Flat 46y\nJade Rest",
                    "",
                    "",
                    "",
                    ""
                ],
                "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-11-14T09:06:09.000000Z",
        "notes": "Quia asperiores dolor perferendis. Iste facilis velit repellat incidunt error odio. Voluptatem blanditiis aut sunt incidunt adipisci sit molestias cum.",
        "validateOnly": false
    }
}
{
    "message": "Unauthenticated"
}

Delete Update

DELETE
https://pulsereviews.io
/api/locations/google/{googleLocation_google_id}/updates/{pendingGoogleLocationUpdate_id}
requires authentication

This endpoint will delete a specific update for the specified Google location.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

googleLocation_google_id
The Google ID for the location attached to the update you want to delete.
required
Example:
749845872867289688
pendingGoogleLocationUpdate_id
The ID of the update you want to delete.
required
Example:
23
Example request:
$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));
Example response:
[Empty response]
{
    "message": "Unauthenticated"
}

Health

Check

GET
https://pulsereviews.io
/api/health
requires authentication

This endpoint will allow you to quickly check that you can authenticate to the API.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
$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));
Example response:
{
    "status": "ok"
}
{
    "message": "Unauthenticated"
}