Send a review request
Send a contact a “please review us” SMS or email right away, using the review link and message templates from your Reviews settings. A real message is sent; SMS usage is charged to the wallet.
POST
https://api.centerfy.ai/webhooks/inbound/review-requests Headers
| Header | Required | Value | Description |
|---|---|---|---|
x-api-key | Yes | your sub-account API key (cfy_…) | Authenticates the request; or use Authorization: Bearer <key>. |
Body parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
contact_id | string (uuid) | Yes | — | Contact in this sub-account to send to. |
channel | string | Yes | — | One of sms, email. |
Request body
{
"contact_id": "3f1c2a9e-7b4d-4c8a-9e2f-1a2b3c4d5e6f",
"channel": "sms"
}Example
curl -X POST "https://api.centerfy.ai/webhooks/inbound/review-requests" \
-H "x-api-key: $CENTERFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contact_id": "3f1c2a9e-7b4d-4c8a-9e2f-1a2b3c4d5e6f",
"channel": "sms"
}' import { CenterfyClient } from "@centerfy/sdk";
const centerfy = new CenterfyClient({ apiKey: process.env.CENTERFY_API_KEY! });
const result = await centerfy.reviewRequests.send({
"contact_id": "3f1c2a9e-7b4d-4c8a-9e2f-1a2b3c4d5e6f",
"channel": "sms"
});
console.log(result); centerfy reviewRequests send '{"contact_id":"3f1c2a9e-7b4d-4c8a-9e2f-1a2b3c4d5e6f","channel":"sms"}' MCP tool: centerfy_review_requests_send (see MCP server)
Response
{
"status": "success",
"review_request": {
"id": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
"contact_id": "3f1c2a9e-7b4d-4c8a-9e2f-1a2b3c4d5e6f",
"contact_name": "Jamie Rivera",
"channel": "sms",
"status": "sent",
"message_content": "Hi Jamie, thanks for choosing Example Plumbing! We'd love your feedback — it only takes a minute: https://reviews.example.com/write",
"review_link": "https://reviews.example.com/write",
"error_message": null,
"sent_by": "8c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
"created_at": "2026-10-06T10:00:00.000Z"
},
"channel": "sms",
"contact_id": "3f1c2a9e-7b4d-4c8a-9e2f-1a2b3c4d5e6f"
}Errors
400— if contact_id is not a UUID, no review link is configured, or the contact has no phone/email or has unsubscribed from that channel.402— with review_request if the wallet balance is too low.502— with review_request (status failed) if the message could not be sent.404— if the contact is not in this sub-account.
Notes
Returns 201. The review link is your custom link from Reviews settings, else the preferred (or any) connected platform’s review page. Every attempt is logged in review requests.