API Reference

Send invites from your own software

A small REST API to trigger a review invite the moment a job, appointment, or order is done — from your CRM, booking system, Zapier, Make, or custom code.

Requirements

The integration API is available on the Growth plan. To get started, sign in to your dashboard, open Settings → Integrations, and generate an API key. Your raw key is shown only once — store it securely.

All requests go to the base URL https://www.snappyratings.com over HTTPS. Requests and responses are JSON.

Authentication

Authenticate every request with your API key as a bearer token in the Authorization header:

Authorization: Bearer sk_live_your_api_key_here

Keys are stored only as a one-way hash — we can never show a key again after it's generated. You can regenerate or revoke a key at any time from Settings → Integrations; the old key stops working immediately.

Verify a key

GET/api/v1/ping

Confirms your key is valid and whether the integration is enabled for the account. Sends nothing and uses no credits — handy while setting things up.

Example

curl https://www.snappyratings.com/api/v1/ping \
  -H "Authorization: Bearer sk_live_your_api_key_here"

Response

{
  "success": true,
  "business": "Acme Dental",
  "plan": "growth",
  "accountActive": true,
  "integrationEnabled": true
}

Send an invite

POST/api/v1/invite

Sends one review invite to a single customer by email or phone. The message, tracked review link, follow-up handling, and reporting all match what the dashboard sends. Each successful send counts against your monthly credits and skips excluded and unsubscribed/opted-out contacts.

Body parameters

FieldTypeDescription
emailstringRequired* Customer email address. Provide either email or phone — not both.
phonestringRequired* Customer phone in E.164 (e.g. +15551234567). Sends by SMS.
namestringOptional Customer name.
messagestringOptional Custom message text; falls back to your saved invite message.
locationSlugstringOptional Target a specific location's review link (multi-location accounts).

Example (email)

curl -X POST https://www.snappyratings.com/api/v1/invite \
  -H "Authorization: Bearer sk_live_your_api_key_here" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: appt-90210" \
  -d '{ "email": "customer@example.com" }'

Example (SMS)

curl -X POST https://www.snappyratings.com/api/v1/invite \
  -H "Authorization: Bearer sk_live_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{ "phone": "+15551234567" }'

Response

{ "success": true, "channel": "email" }

Idempotency

Include an Idempotency-Key header with a unique value (for example, your internal appointment or order id) so a retried request can never send a second invite. If the same key is reused, the API responds { "success": true, "duplicate": true } without sending again. The key is released if the send fails, so genuine retries still work.

Rate limits

Each API key is limited to 120 requests per minute. Over the limit returns 429. Monthly send volume is governed by your plan's email and SMS credits.

Errors

Errors return a non-2xx status with a JSON body of the shape { "success": false, "error": "..." }.

StatusMeaning
400Invalid request body (e.g. missing or malformed email/phone).
401Missing or invalid API key.
403Account isn't on the Growth plan, or the subscription/trial isn't active.
422The invite couldn't be sent (e.g. monthly quota reached, recipient excluded, unsubscribed, or opted out).
429Rate limit exceeded.
500Server error — safe to retry with the same Idempotency-Key.

Webhooks

Growth accounts can also receive outbound event notifications. Set a webhook URL in Settings → Integrations and we'll POST a signed JSON payload to your HTTPS endpoint for events such as invite_sent, qr_scan, email_opened, sms_clicked, and private_feedback_received.

Each request includes an X-SnappyRatings-Signature: sha256=... header — an HMAC-SHA256 of the raw body using your webhook signing secret — so you can verify authenticity. Payloads look like:

{
  "event": "invite_sent",
  "data": { "type": "email", "contact": "customer@example.com" },
  "timestamp": "2026-08-01T14:03:00.000Z"
}
Note: webhooks are best-effort notifications (single attempt, 8s timeout), not a guaranteed delivery channel. Use the /api/v1/invite response as your source of truth for sends.

No-code (Zapier / Make)

You don't need to write code. In Zapier or Make, add a Webhooks → POST action pointed at https://www.snappyratings.com/api/v1/invite, set the Authorization header to Bearer YOUR_API_KEY, and send a JSON body with the customer's email or phone. Trigger it from whatever event marks a job done in your other tools.

Questions? Contact us and we'll help you get connected.