Reputation API
Send visits in so surveys go out automatically, and read responses and scores out for reporting. Base URL: https://reputation.doctorrebrand.com
Authentication
Send Authorization: Bearer <credential> with either:
- An organization key (
rpk_…) from Reputation → Settings → Connect your systems. Best for a booking system or Zapier: it belongs to the organization, not a person. - A personal access token from API tokens. It acts on the organization currently selected for that person — the same one the MCP tools use.
Errors are { "error": { "code": "…", "message": "…" } } with a 4xx or 5xx status.
POST /api/v1/visits
Report a visit; a survey is scheduled using the organization's timing settings. Idempotent on externalId, so a retried webhook never surveys anyone twice. Needs email or phone. People who unsubscribed or were surveyed recently are skipped, and the response says why.
externalId | Your appointment ID. Strongly recommended. |
firstName, lastName | Used in the greeting. |
email | Email address. |
phone | Mobile number (texting must be enabled for the account). |
smsConsent | true only if the person agreed to texts. |
visitAt | ISO 8601, e.g. 2026-09-25T10:30:00-04:00. Defaults to now. |
location, provider | Matched by name to the locations and providers set up in Reputation. |
survey | Survey id. Defaults to the organization's default survey. |
sendNow | true to skip the delay and send at the next sending window. |
curl -X POST https://reputation.doctorrebrand.com/api/v1/visits \
-H "Authorization: Bearer rpk_…" -H "Content-Type: application/json" \
-d '{"externalId":"appt-48213","firstName":"Jane","email":"jane@example.com"}'
201 {"invitationId":"…","status":"scheduled","scheduledFor":"2026-09-25T16:30:00.000Z"}status is scheduled, duplicate (200, same externalId seen before), or skipped with a reason.
GET /api/v1/responses
Newest first. Returns scores, comments and ids — never contact details. Page with before=<next>.
since, before | ISO 8601 timestamps. |
segment | promoter, passive or detractor. |
followup | open — only responses still waiting on a follow-up. |
limit | 1–500 (default 500). |
{"data":[{"id":"…","score":9,"segment":"promoter","comment":"…","followup_status":null,"created_at":"…"}],"next":null}GET /api/v1/summary
The numbers on the Reputation overview for a period.
days | 7, 30, 90 or 365 (default 90). |
{"days":90,"nps":62,"averageScore":8.9,"responses":41,"surveysSent":120,"responseRatePercent":34,
"sentiment":{"happy":29,"neutral":8,"unhappy":4},"waitingOnFollowUp":2,"reviewClicks":17,"weekly":[…]}From Claude or ChatGPT
The MCP server wraps these as reputation_summary, reputation_responses and reputation_send_survey.