Skip to content
Docs menu

ContactFollowUp API

A RESTful HTTP API for everything in your practice — patients, deals, appointments, secure messages, payments. JSON in, JSON out.

Quickstart

Every request goes to https://app.contactfollowup.com/api and authenticates with a bearer token. Tokens are issued from the in-app service accounts settings and have the same role-based scope as a user.

List contacts
curl https://app.contactfollowup.com/api/contacts \
  -H "Authorization: Bearer hns_xxxxxxx.yyyyyyyyyyyyyyyy"

What you get

  • REST + JSON. Predictable URLs, JSON bodies, conventional status codes.
  • Bearer auth. Long-lived service-account tokens with role-scoped capabilities.
  • RBAC scopes. Capability checks on every endpoint — contacts.read, deals.write, audit.read.
  • Webhooks. HMAC-signed delivery for inbound mail, EHR sync, and lifecycle events.
  • Rate limits. Per-token and per-account, returned in standard response headers.
  • Audit log. Every create / update / delete writes an immutable audit row you can query.
  • OpenAPI 3.1. Machine-readable spec covers the most-used endpoints — generate clients with it.
  • HIPAA-aware. PHI columns are encrypted at rest; APIs surface fields per the same rules as the UI.

Conventions at a glance

TopicConvention
Base URLhttps://app.contactfollowup.com/api
AuthHeader Authorization: Bearer hns_…
Content typeapplication/json; charset=utf-8
IDscuid-style strings; never assume length
TimestampsISO 8601 UTC strings — e.g. 2026-05-18T14:00:00Z
MoneyCents as integers in amountCents fields. Always.
ErrorsJSON with { "error": "…", "issues"?: […] }
PaginationCursor where available, limit/offset elsewhere

Support

Found a bug or a gap? Open a thread from your account or write us at support@contactfollowup.com. PRs against the OpenAPI spec are welcome.