Send review-site connection-request invite
Overview
Emails a tokenized review-site connection invite for a store and echoes the connect URL + token so the UI can also show copy/resend. The response reflects the real dispatch outcome (sent / queued / skipped / failed).
Prerequisites
- A bearer token. Callable with Partner and Account tokens.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/store-review-site/send/request
Authentication
-
Requires a bearer token in the
Authorization: Bearer <bearer-token>header. -
Who can call it: Partner and Account tokens.
-
The store is targeted by
store_idORclient_location_id(resolved to a store id scoped to the caller's company). Both pass an ownership check, so the store must be in the auth user's hierarchy. -
A Partner can invite for any store under its tree. An Account only for its own account's stores.
Rate limit
- No rate limit.
Request body
- Body:
| Field | Type | Required | Description |
|---|---|---|---|
store_id | integer | required without client_location_id | Must be an existing location inside your own account tree. |
client_location_id | string | optional | Max 255; resolved to store_id; an ownership check. |
email | string (email) | yes | Validated email:rfc,dns — recipient of the invite. |
name | string | no | Max 120; NameNoAngleBrackets; recipient display name in the email. |
{
"store_id": 10,
"email": "[email protected]",
"name": "Jane Doe"
}Response
data.status(string) — alwayssuccesson the happy path.data.delivered(bool) — true when delivery status is sent or pending(queued).data.delivery_status(string) —sent|pending|skipped|failed.data.skip_reason(string|null) — e.g. template disabled / recipient suppressed.data.message(string) — human summary matching the delivery status.data.connect_url(string) — the store's connect-review-sites URL.data.token(string) — raw hashid of[store_id, 15]for copy/resend.data.recipient(string) — echoed email.
200 Success · 200
200{
"data": {
"status": "success",
"delivered": true,
"delivery_status": "sent",
"skip_reason": null,
"message": "Invitation email sent successfully.",
"connect_url": "https://app.example.com/connect-review-sites/<invite-token>",
"token": "<invite-token>",
"recipient": "[email protected]"
}
}422 Out-of-scope store_id · 422
store_id · 422{
"message": "The store ID is invalid for the authenticated user.",
"errors": {
"store_id": [
"The store ID is invalid for the authenticated user."
]
}
}422 Email fails DNS-MX lookup · 422
422{
"message": "The email field must be a valid email address.",
"errors": {
"email": [
"The email field must be a valid email address."
]
}
}Errors
| Status | Meaning |
|---|---|
401 | The bearer token is missing, expired or invalid |
422 | Out-of-scope store_id |
500 | Unexpected server error |
Example request
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/store-review-site/send/request" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"store_id": 10, "email": "[email protected]", "name": "Jane Doe"}'Updated 9 days ago
Did this page help you?
