Unified send-review-request: creates audience row(s) and queues an Email and/or SMS review request for a campaign, branching on whether email and/or phone is supplied. Serves both production and test sends via the is_test flag. (Canonical 2026-06 rename of test-review-request, which remains a deprecated alias to the same handler.)
Auth: Account — authentication, ACCOUNT-scope group. If not owned by the caller it returns 403 ("You are not authorized to send a review request for this campaign"). Store must have an active plan (400 otherwise). Each requested channel must be enabled with a valid template. Missing review-site URLs in the landing page / email template surface as a 400 listing the missing sites. A non-test send (is_test=false) also increments total_audience and schedules a follow-up email if the email channel has a follow-up template.
Rate limit: No rate limit.
Request
- Body:
| Field | Type | Required | Notes |
|---|---|---|---|
campaign_id | integer | yes | Must be an existing campaign inside your own account tree. |
customer_name | string | yes | max 255; trimmed. |
email | string | conditional | required_without:phone; nullable, email:rfc,dns, max 255. Drives the Email send. |
phone | string | conditional | required_without:email; nullable, min 7, max 20. Drives the SMS send. |
is_test | boolean | no | nullable. When true, tags every downstream row as test and skips follow-up emails; does not increment total_audience. Defaults false. |
keywords | object | no | nullable map; each key max 100 chars, values strings. Empty/null values skipped. |
At least one of email or phone is required.
Response — { data. } envelope. data is { status: "success", message: <which channels sent> }. Message is one of "Email and SMS review requests sent successfully", "Email review request sent successfully", or "SMS review request sent successfully". Returns 400 ("Failed to send review request") if nothing was created, or 400 with a channel/template/review-site error if a requested channel is unusable.
data.status(string) —"success".data.message(string) — reflects which channel(s) were queued.
Errors: 422 on validation failure.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
