For providers
Connect your own system to Ventcare
If you already run practice-management, diary or records software, it can talk to Ventcare directly. Create a key under Integrations in your provider dashboard, then read your bookings, mark visits as attended or completed, and receive a signed message the moment anything changes.
1. Authentication
Every request carries your key as a bearer token. Keys are shown once when created, reach only your own listing, and can be revoked at any time.
curl https://ventcare.org/api/public/v1/bookings \ -H "Authorization: Bearer vc_live_your_key"
2. Endpoints
GET
/api/public/v1/listingYour listing summary.
GET
/api/public/v1/servicesYour session types, prices and lengths.
GET
/api/public/v1/availabilityYour weekly hours and blocked periods.
GET
/api/public/v1/bookings?from=&to=&status=&limit=Your bookings. Client phone and email are included only once payment has cleared.
GET
/api/public/v1/bookings/{id}One booking.
POST
/api/public/v1/bookings/{id}/statusSet the visit status: {"status":"confirmed"|"completed"|"cancelled"|"pending"}.
Ventcare's own fee, payout and tax figures are never returned by the API.
3. Webhooks
Register an https endpoint in your dashboard and we will POST a JSON body for booking.created, booking.paid, booking.updated, booking.cancelled and booking.completed. Failed calls are retried with backoff and listed in your dashboard.
x-ventcare-event: booking.paid x-ventcare-timestamp: 1737400000 x-ventcare-signature: hex(hmac_sha256(secret, timestamp + "." + rawBody))
Recompute the signature over the raw body and compare it before trusting the payload. Reject anything with a timestamp older than five minutes.
4. Limits & errors
Up to 120 calls a minute per key. Errors return { error: { code, message } } with the matching HTTP status — 401 for an invalid key, 403 for a missing permission, 404 when the record is not yours, 429 when you are going too fast.