Build on top. Without begging for a CSV.
Read and write to the chart, the schedule, the inbox, the till. Webhooks for the moment things change. SDKs in the languages your team already uses.
The API the rest of the website is built on.
Every object, both directions
Patients, owners, appointments, charts, invoices, payments, messages, inventory, recall queues. Versioned endpoints; predictable shapes; cursor-paginated.
Events the moment they fire
60+ events — chart.signed, payment.captured, appointment.booked, message.received. Signed payloads, automatic retries, 30-day replay.
OAuth + scoped tokens
OAuth 2.0 with per-integration scopes. Service tokens for trusted backends. Rotate keys without redeploying. Every call attributed in the audit log.
TS and Python, typed
First-party SDKs for TypeScript and Python — typed end-to-end, autocomplete on every field. Anything we miss, the OpenAPI spec covers.
A real test environment
Seeded with a realistic clinic — patients, appointments, history, owners. No charges hit real cards. Reset to a clean slate from the dashboard.
PHI-safe by default
API access is covered by the same BAA as the product. Every call is in the audit log. No customer data is used to train shared models.
The API the rest of Vetch runs on.
The same endpoints your integrations call are the endpoints the Vetch web app, the mobile app, and the front-desk screen call. There is no second-class API.
- Versioned endpoints · 12-month deprecation window before any breaking change
- 99.9% uptime target · status page + RSS for incidents · public post-mortems
- Cursor pagination + idempotency keys on every write
- Audit log captures the calling key, IP, and human (if OAuth) for every request
- OpenAPI spec published; SDKs regenerated nightly from the same source
Honest answers.
An API that earns the rest of your stack.
Read the docs, claim a sandbox key, and ship the integration this week.