Get the manager-invite address for a site
Overview
For sites that authorize posting by manager invite (Yelp, TripAdvisor, Expedia, Booking.com, DoorDash and others), get the address the business owner needs to add as a manager on their listing, and check whether they've done it yet.
Use this after the site's review URL is set. Give the returned address to the owner (or let them see it on the connection page); once they've added it as a manager, call again to confirm the status has changed to connected.
You'll need the store_review_site_id. The address (identity_address) is created once the owner has said who responds to reviews and which locations the connection covers, on the connection page (connect_page_url from List a location's review sites). Until then it's null, and step shows where they are.
Returns the address to invite, the current connection status, and whether posting is enabled. Pending until the owner completes the invite on the review site.
Prerequisites
- A bearer token, or the invite
hashfrom a connection link. See Authentication. - The connection's
store_review_site_id, from List a location's review sites.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/store-review-site/{id}/connect
Authentication
Partner or Account token
- The connection must be on a location inside your own account tree. A Partner token reaches any location under the partner; an Account token only its own account's locations. Otherwise
422. - Or, with no token: send the invite
hash(thetokenfrom Send the business owner a connection link). The connection must be on the location the hash is for.
Rate limit
30 requests per minute, counted per client IP address. See Rate limits.
Request parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer | Yes | The connection's id (store_review_site_id). |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
hash | string | No | The invite hash from a connection link. Use it instead of a token. |
Request payload
With a token:
{}Without a token:
{
"hash": "5oogfx"
}Response body
The payload is inside data.
| Field | Type | Description |
|---|---|---|
identity_address | string or null | The address the owner adds as a manager on the site. null until it's created (see Overview). |
step | string | Where the owner is on the connection page: identity (who responds), locations, invite (add the address as a manager) or connected. |
handle_by | string or null | The SAU code of the location that handles this connection when it covers several locations, or null. |
group_locations | array of objects | The locations this connection covers. Empty when it covers only this one. |
group_locations[].store_id | integer | The location's id. |
group_locations[].saucode | string | The location's SAU code. |
group_locations[].name | string | The location's name. |
group_locations[].is_current | boolean | true for the location of this connection. |
publisher_key | string | The site's domain, e.g. yelp.com. |
publisher_account_id | string or null | The id of the site account created for this connection, or null. |
connection_status | string | Connected, Awaiting or Disconnected. |
is_connected | integer | 1 when connected, otherwise 0. |
lock_color | string | Status colour: green (connected), orange (awaiting) or gray. |
sendto_scrapper | string | Y when review collection is on, N when it's off. |
publisher_url | string or null | The site's review URL for the location. |
auth_type | string or null | How the site connects, e.g. cookie or credential. See List supported review sites. |
scraping_enabled | boolean | Whether reviews can be collected from this site. |
posting_enabled | boolean | Whether responses can be posted to this site. |
is_premium | boolean | true when adding a manager on this site needs a paid business plan on the site. |
last_scraped_at | string or null | When reviews were last collected (ISO 8601), or null. |
disconnect_reason | string or null | Why the site isn't connected, in plain language, or null. |
is_valid_credential | boolean or null | Whether the site login is valid, as last reported, or null when unknown. |
is_valid_cookie | boolean or null | Whether the site session is valid, as last reported, or null when unknown. |
url_status | string or null | The status of the site URL as last reported, or null. |
credential_status | string or null | The status of the site login as last reported, or null. |
cookie_status | string or null | The status of the site session as last reported, or null. |
last_response_posted_at | string or null | When a response was last posted to the site, or null. |
status_synced_at | string or null | When this status was last refreshed (ISO 8601), or null. |
client_confirmed_at | string or null | When the owner confirmed on the connection page that they added the manager (ISO 8601), or null. |
disconnect_source | string or null | The event that disconnected the site, or null. |
error_code | string or null | The connection problem's code, e.g. E-003, or null. |
photo_reapply_pending | boolean | true after a new responder photo is submitted, until the site accepts it. |
rd_responder_first_name | string or null | First name of the person who responds to reviews, as saved on the connection page. |
rd_responder_last_name | string or null | Last name of that person. |
rd_responder_photo_url | string or null | URL of that person's photo, or null. |
source | string | How this status was worked out, e.g. rd_get_info (refreshed from the site), rd_provisioned (address just created), needs_provisioning or awaiting_locations (earlier steps not done yet). |
Response payload
{
"data": {
"identity_address": "[email protected]",
"step": "invite",
"handle_by": null,
"group_locations": [],
"publisher_key": "yelp.com",
"publisher_account_id": "acct_8812",
"connection_status": "Awaiting",
"is_connected": 0,
"lock_color": "orange",
"sendto_scrapper": "Y",
"publisher_url": "https://www.yelp.com/biz/en-fuego-cantina-and-grill-del-mar",
"auth_type": "cookie",
"scraping_enabled": true,
"posting_enabled": true,
"is_premium": false,
"last_scraped_at": null,
"disconnect_reason": "Invite the business manager alias to finish connecting.",
"is_valid_credential": null,
"is_valid_cookie": null,
"url_status": null,
"credential_status": null,
"cookie_status": null,
"last_response_posted_at": null,
"status_synced_at": "2026-06-22T09:53:28+00:00",
"client_confirmed_at": null,
"disconnect_source": null,
"error_code": null,
"photo_reapply_pending": false,
"rd_responder_first_name": "Jane",
"rd_responder_last_name": "Smith",
"rd_responder_photo_url": null,
"source": "rd_get_info"
}
}Examples
Success payload
See Response payload.
Error payload
400 The site couldn't be connected
{
"message": "No selected location has a saucode to provision.",
"status": "error",
"errors": {
"connect": [
"No selected location has a saucode to provision."
]
}
}422 Connection outside your tree
{
"message": "The selected store review site id does not belong to your company hierarchy.",
"errors": {
"store_review_site_id": [
"The selected store review site id does not belong to your company hierarchy."
]
}
}422 Invalid hash
{
"message": "Invalid or expired token.",
"errors": {
"hash": [
"Invalid or expired token."
]
}
}429 Too many requests
{
"message": "Too Many Attempts."
}| Status | Meaning |
|---|---|
200 | The connection status, with the address once it exists. |
400 | The site couldn't be connected; message says why. |
401 | No token and no hash, or the token is expired or invalid. |
422 | The connection doesn't exist or is outside your tree, or the hash is invalid or for another location. |
429 | Rate limit exceeded. |
500 | Unexpected server error. |
Example request
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/store-review-site/8782/connect" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{}'Updated 17 days ago
