REST API & Webhooks
Build custom integrations with the EmbedMyReviews API. Send contacts, trigger campaigns, and receive real-time webhook events. Full programmatic control for operators building custom solutions.
API documentation is fully white-labelled and hosted on your custom domain at app.yourdomain.com/docs/api -- your clients and developers never see EmbedMyReviews.
curl -X POST https://app.your-white-label.com/api/v1/request-reviews/campaigns/a1b2c3d4/invite \
-H "Authorization: Bearer your-api-token" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"first_name": "Sarah",
"last_name": "Johnson",
"send_after_hours": 0
}'Full API Access Included
Every EmbedMyReviews plan includes complete API access. No enterprise tier required, no per-request fees.
Reviews API
Retrieve reviews across all connected sources. Filter by rating, organization, location, or source.
Organizations API
Create, update, list, and delete organizations programmatically.
Send Invites API
Send review request invites via email, SMS, or WhatsApp through campaign endpoints.
Campaigns & Sources API
List campaigns, review sources, countries, and verify your API token.
Real-Time Webhooks
Receive instant notifications when events occur in EmbedMyReviews. Build reactive systems that respond to new reviews, campaign completions, and more.
review-created
Triggered when a new review is received from any connected source.
review-updated
Fired when an existing review is modified, such as a reply added or rating changed.
organization-created
Triggered when a new organization is created in the platform.
location-created
Triggered when a new location is added to an organization.
{
"webhook_event": "review-created",
"id": 142,
"organization_id": 1,
"location_id": 3,
"source_name": "google",
"author": "Sarah Johnson",
"rating": 5,
"message": "Outstanding service!",
"replied": false,
"published_on": "2026-01-15T10:30:00+00:00"
}What Agencies Build with the API
Custom integrations that go beyond out-of-the-box connectors. Build exactly what your clients need.
Custom Dashboards
Pull review data into your own reporting dashboards. Build unified views across multiple clients and data sources.
CRM Sync
Two-way sync between your CRM and EmbedMyReviews. Keep customer records updated with review status and history.
Slack/Teams Alerts
Post new reviews to Slack or Teams channels. Get instant team notifications for negative reviews requiring attention.
Custom Reports
Generate branded PDF reports for clients with review trends, response rates, and competitive benchmarks.
Billing Integration
Track client usage and automatically update billing systems. Bill clients based on reviews collected or messages sent.
White-Label Portals
Build fully custom client portals using the API. Complete design freedom while leveraging EMR's backend.
Code Examples
Get started quickly with examples in popular languages.
const response = await fetch(
'https://app.your-white-label.com/api/v1/request-reviews/campaigns/a1b2c3d4/invite',
{
method: 'POST',
headers: {
'Authorization': 'Bearer your-api-token',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
email: '[email protected]',
first_name: 'Sarah',
last_name: 'Johnson',
send_after_hours: 0,
}),
}
);
const result = await response.json();import requests
response = requests.post(
'https://app.your-white-label.com/api/v1/request-reviews/campaigns/a1b2c3d4/invite',
headers={
'Authorization': 'Bearer your-api-token',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
json={
'email': '[email protected]',
'first_name': 'Sarah',
'last_name': 'Johnson',
'send_after_hours': 0,
}
)
result = response.json()$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://app.your-white-label.com/api/v1/request-reviews/campaigns/a1b2c3d4/invite',
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiToken,
'Accept: application/json',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'email' => '[email protected]',
'first_name' => 'Sarah',
'last_name' => 'Johnson',
'send_after_hours' => 0,
]),
CURLOPT_RETURNTRANSFER => true,
]);
$response = curl_exec($ch);require 'net/http'
require 'json'
uri = URI('https://app.your-white-label.com/api/v1/request-reviews/campaigns/a1b2c3d4/invite')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer your-api-token'
request['Accept'] = 'application/json'
request['Content-Type'] = 'application/json'
request.body = {
email: '[email protected]',
first_name: 'Sarah',
last_name: 'Johnson',
send_after_hours: 0
}.to_json
response = http.request(request)Rate Limits
Generous limits designed for real agency workflows. Most agencies never hit them.
Need higher limits? Contact us—we accommodate high-volume agencies.
Security
Enterprise-grade security for API access and webhook delivery.
Bearer Token Authentication
API tokens scoped to specific permissions. Revoke compromised tokens from account settings.
Webhook Retries
Up to 10 retries over 5 minutes with exponential backoff. 30-second timeout per attempt.
TLS Encryption
All API traffic encrypted with TLS 1.3. We don't accept unencrypted requests.
Token Permissions
Scope tokens to specific permissions: reviews:read, organizations:create, request:create, and more.
Your providers. Wholesale rates.
The API creates contacts and triggers campaigns. Messages are sent via your own Twilio (SMS) or SMTP (email) accounts. You pay wholesale rates directly to your providers—no EMR markup on messaging costs.
Build custom integrations today.
Full API access included with every plan. No enterprise tier required, no per-request fees. Start building in minutes.
No credit card required. Explore the platform for 14 days.