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:

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.

externalIdYour appointment ID. Strongly recommended.
firstName, lastNameUsed in the greeting.
emailEmail address.
phoneMobile number (texting must be enabled for the account).
smsConsenttrue only if the person agreed to texts.
visitAtISO 8601, e.g. 2026-09-25T10:30:00-04:00. Defaults to now.
location, providerMatched by name to the locations and providers set up in Reputation.
surveySurvey id. Defaults to the organization's default survey.
sendNowtrue 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, beforeISO 8601 timestamps.
segmentpromoter, passive or detractor.
followupopen — only responses still waiting on a follow-up.
limit1–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.

days7, 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.