API reference

Venues

The clinic's branches. 2 operations under /public/v1, with parameters, request bodies and example responses.

Paths are relative to the API host: https://sandbox-api.clivehealth.app for the sandbox, https://api.clivehealth.app for production. Send Authorization: Bearer <token> on every request (Getting started).

Operations

List venues

GET/public/v1/venues

Scope venues:readOperation listVenues

The clinic's active branches, ordered by updated_at then id.

Requires scope venues:read.

Parameters

listVenues parameters
NameInTypeDescription
limitqueryintegerPage size, 1 to 200. Default 50.
cursorquerystringOpaque cursor from the previous page's next_cursor.
updated_sincequerystring (date-time)ISO 8601 timestamp: only records updated at or after it. Lists are ordered by updated_at then id, so this plus cursor is a change feed.

Responses

200A page of venues.Returns VenuePage.

listVenues 200 response
FieldTypeDescription
datarequiredarray of Venue
idrequiredstring (uuid)
namerequiredstring
addressrequiredstring or null
phonerequiredstring or null
timezonerequiredstringIANA time zone, e.g. Asia/Kuala_Lumpur.
is_defaultrequiredbooleanThe clinic's main branch.
created_atrequiredstring (date-time)
updated_atrequiredstring (date-time)
next_cursorrequiredstring or nullPass as cursor to fetch the next page; null on the last page.
has_morerequiredboolean
Response 200JSON
{
  "data": [
    {
      "id": "c41f7a52-8d1e-4b2a-9f3c-6e5d4c3b2a10",
      "name": "Clive Clinic KL Sentral",
      "address": "1 Jalan Ampang, 50450 Kuala Lumpur",
      "phone": "+60123456789",
      "timezone": "Asia/Kuala_Lumpur",
      "is_default": true,
      "created_at": "2026-10-01T00:00:00.000Z",
      "updated_at": "2026-10-24T02:15:09.123Z"
    }
  ],
  "next_cursor": null,
  "has_more": false
}
listVenues error responses
StatusMeaning
400Malformed request or invalid cursor.
401Missing, invalid or expired access token, or the API client was revoked (INVALID_TOKEN).
403The token lacks the scope this operation needs (INSUFFICIENT_SCOPE).
422Validation failed (VALIDATION_ERROR).
429Per-client rate limit exceeded (RATE_LIMITED).
500Unexpected error (INTERNAL_ERROR).

Every error body is the error envelope; branch on its code.

Get a venue

GET/public/v1/venues/{id}

Scope venues:readOperation getVenue

Requires scope venues:read.

Parameters

getVenue parameters
NameInTypeDescription
idrequiredpathstring (uuid)

Responses

200The venue.Returns Venue.

getVenue 200 response
FieldTypeDescription
idrequiredstring (uuid)
namerequiredstring
addressrequiredstring or null
phonerequiredstring or null
timezonerequiredstringIANA time zone, e.g. Asia/Kuala_Lumpur.
is_defaultrequiredbooleanThe clinic's main branch.
created_atrequiredstring (date-time)
updated_atrequiredstring (date-time)
Response 200JSON
{
  "id": "c41f7a52-8d1e-4b2a-9f3c-6e5d4c3b2a10",
  "name": "Clive Clinic KL Sentral",
  "address": "1 Jalan Ampang, 50450 Kuala Lumpur",
  "phone": "+60123456789",
  "timezone": "Asia/Kuala_Lumpur",
  "is_default": true,
  "created_at": "2026-10-01T00:00:00.000Z",
  "updated_at": "2026-10-24T02:15:09.123Z"
}
getVenue error responses
StatusMeaning
400Malformed request or invalid cursor.
401Missing, invalid or expired access token, or the API client was revoked (INVALID_TOKEN).
403The token lacks the scope this operation needs (INSUFFICIENT_SCOPE).
404No such record in this clinic (NOT_FOUND).
422Validation failed (VALIDATION_ERROR).
429Per-client rate limit exceeded (RATE_LIMITED).
500Unexpected error (INTERNAL_ERROR).

Every error body is the error envelope; branch on its code.