Welcome to the ezyVet API Documentation Page!
The ezyVet API (API moving forward) is designed around a RESTful interface and utilizes OAuth 2.0 Client Credentials grant.
The API accepts URL params and JSON-formatted requests, and returns JSON-formatted responses.
Servers
https://api.ezyvet.comezyVet production environment
https://api.trial.ezyvet.comezyVet trial environment
Fetch an Appointment list
GET
/v1/appointment
Gets a list of appointments.
It's recommended to use the /v2/appointment endpoint.
Authorizations
bearerAuth
clientCredentials Flow
Token URL
"https://api.ezyvet.com/v1/oauth/access_token"Scopes:
"read-appointment"Read appointment resources
Parameters
Query Parameters
id
The ID number used by the system to uniquely identify an Appointment.
Type
string
recurrence_number
The number of the recurring appointment (if the appointment is recurring). E.g. 0 is the original, 1 is the first recurring appointment.
Type
string
active
If true, the Appointment is active and usable in ezyVet.
Type
boolean
created_at
The epoch time when the Appointment was created.
Type
string
modified_at
The epoch time when the Appointment was last modified.
Type
string
recurrence_interval
The interval between recurring appointments (in weeks).
Type
string
Default
0recurrence_end_time
The epoch time for when the recurrence ends (if the appointment is recurring).
Type
string
start_time
The epoch time for when the Appointment starts.
Type
string
duration
The duration of the Appointment in seconds.
Type
string
appointment_type_id
Refers to the ID of the AppointmentType of the Appointment.
Type
string
appointment_status_id
Refers to the ID of the AppointmentStatus of the Appointment.
Type
string
animal_id
Refers to the ID of the Animal.
Type
string
consult_id
Refers to the ID of the Consult.
Type
string
contact_id
Refers to the ID of the Contact.
Type
string
limit
Limits the number of results returned.
Type
string
Default
10page
Specifies the page number of the result.
Type
string
Default
1Responses
Successful response
application/json
JSON "meta": { "timestamp": "string", "items_page": "string", "items_page_total": "string", "items_page_size": "string", "items_total": "string" }, "items": [ { "appointment": { "id": "string", "recurrence_number": "string", "active": "string", "created_at": "string", "modified_at": "string", "recurrence_interval": "string", "recurrence_end_time": "string", "start_time": "string", "duration": "string", "details": { "appointment_type_id": "string", "appointment_status_id": "string", "description": "string", "animal_id": "string", "consult_id": "string", "contact_id": "string", "resource_list": [ "string" ] } } } ], "messages": [ ]
{
}
GET
/v1/appointment
Samples
Appointment Status
Manages the status of appointments (e.g., scheduled, completed, canceled).
Operations
Fetch a Appointment Status list
GET
/v1/appointmentstatus
Fetches a list containing AppointmentStatus(s). (up to 10)
Authorizations
bearerAuth
clientCredentials Flow
Token URL
"https://api.ezyvet.com/v1/oauth/access_token"Scopes:
"read-appointmentstatus"Read appointment status resources
Parameters
Query Parameters
id
The ID number used by the system to uniquely identify a AppointmentStatus.
Type
string
active
If true, the AppointmentStatus is active and usable in ezyVet.
Type
string
created_at
The epoch time when the AppointmentStatus was created.
Type
string
modified_at
The epoch time when the AppointmentStatus was last modified.
Type
string
name
The name of the AppointmentStatus.
Type
string
limit
Limits the number of items returned.
Type
string
Default
10page
Specifies the page number of the result.
Type
string
Default
1Responses
A list of appointment statuses
application/json
JSON "meta": { "timestamp": "string", "items_page": "string", "items_page_total": "string", "items_page_size": "string", "items_total": "string" }, "items": [ { "appointmentstatus": { "id": "string", "active": "string", "created_at": "string", "modified_at": "string", "name": "string" } } ], "messages": [ { } ]
{
}
GET
/v1/appointmentstatus
Samples
Fetch an AppointmentType list
GET
/v1/appointmenttype
Fetches a list containing AppointmentType(s). (up to 10)
Authorizations
bearerAuth
clientCredentials Flow
Token URL
"https://api.ezyvet.com/v1/oauth/access_token"Scopes:
"read-appointmenttype"Read appointment type resources
Parameters
Query Parameters
id
The ID number used by the system to uniquely identify an AppointmentType.
active
If true, the AppointmentType is active and usable in ezyVet.
Type
boolean
created_at
The epoch time when the AppointmentType was created.
modified_at
The epoch time when the AppointmentType was last modified.
name
The name of the AppointmentType.
Type
string
default_duration
The default duration of the Appointment (in minutes).
Default
30limit
Limits the number of results returned.
Default
10page
Specifies the page number of the result.
Default
1Responses
A list of AppointmentTypes
application/json
JSON "meta": { "timestamp": "string", "items_page": "string", "items_page_total": "string", "items_page_size": "string", "items_total": "string" }, "items": [ { "appointmenttype": { "id": "string", "active": "string", "created_at": "string", "modified_at": "string", "name": "string", "default_duration": "string" } } ], "messages": [ ]
{
}
GET
/v1/appointmenttype
Samples
Fetch a Resource list
GET
/v1/resource
Fetches a list containing Resource(s).
It's recommended to use the v2/resource endpoint.
Authorizations
bearerAuth
clientCredentials Flow
Token URL
"https://api.ezyvet.com/v1/oauth/access_token"Scopes:
"read-resource"Read resource resources
Parameters
Query Parameters
id
The ID number used by the system to uniquely identify a Resource.
Type
string
active
If true, the Resource is active and usable in ezyVet.
Type
string
created_at
The epoch time when the Resource was created.
Type
string
modified_at
The epoch time when the Resource was last modified.
Type
string
ownership_id
The ID of the Ownership Separation to which the Resource belongs.
Type
string
name
The name of the Resource.
Type
string
type
The type of the Resource: 'user' (default), 'facility'
Type
string
access
The level of the access the Resource has.
Type
string
Valid values
"None""On Calendar""Member"Responses
A list of resources.
application/json
JSON "meta": { "timestamp": "string", "items_page": "string", "items_page_total": "string", "items_page_size": "string", "items_total": "string" }, "items": [ { "resource": { "id": "string", "active": "string", "created_at": "string", "modified_at": "string", "name": "string", "type": "string", "access": "string", "ownership_id": "string" } } ], "messages": [ { } ]
{
}
GET
/v1/resource
Samples
Appointment V2
An updated version of appointment management with enhanced features and additional data fields.
Fetch an Appointment list (V2)
GET
/v2/appointment
Fetch a list of Appointment(s). (up to 200)
Authorizations
bearerAuth
clientCredentials Flow
Token URL
"https://api.ezyvet.com/v1/oauth/access_token"Scopes:
"read-appointment"Read appointment resources
Parameters
Query Parameters
id
The ID number used by the system to uniquely identify an Appointment.
Type
string
created_at
The epoch time when the Appointment was created.
Type
string
modified_at
The epoch time when the Appointment was last modified.
Type
string
active
If true, the Appointment is active and usable in ezyVet.
Type
boolean
start_at
The epoch time for when the Appointment starts.
Type
string
duration
The duration of the Appointment in seconds.
Type
string
type_id
Refers to the ID of the AppointmentType of the Appointment.
Type
string
status_id
Refers to the ID of the AppointmentStatus of the Appointment.
Type
string
animal_id
Refers to the ID of the Animal.
Type
string
consult_id
Refers to the ID of the Consult.
Type
string
contact_id
Refers to the ID of the Contact.
Type
string
sales_resource
ID of the SalesResource allocated to the Appointment.
Type
number
Responses
Successful response
application/json
JSON "meta": { "items_page": 0, "items_page_total": 0, "items_page_size": 0, "items_total": 0, "transaction_id": "string", "timestamp": 0 }, "items": [ { "appointment": { "id": 0, "uid": "string", "created_at": 0, "modified_at": 0, "active": true, "start_at": 0, "duration": 0, "type_id": 0, "type_uid": "string", "status_id": 0, "description": "string", "animal_id": 0, "animal_uid": "string", "consult_id": "string", "contact_id": 0, "contact_uid": "string", "sales_resource": 0, "event_group": 0, "destination_address": 0, "resources": [ { "id": 0 } ], "cancellation_reason": 0, "cancellation_reason_text": "string" } } ], "messages": [ ]
{
}
GET
/v2/appointment
Samples
Appointment Type V2
An updated version of appointment type management with additional options and refinements.
Operations
Fetches a list containing AppointmentTypes
GET
/v2/appointmenttype
Authorizations
bearerAuth
clientCredentials Flow
Token URL
"https://api.ezyvet.com/v1/oauth/access_token"Scopes:
"read-appointmenttype"Read appointment type resources
Parameters
Query Parameters
id
The ID number used by the system to uniquely identify an AppointmentType.
Type
number
uid
The ID number used by the system to uniquely identify an AppointmentType across all ezyVet sites.
Type
string
active
If true, the AppointmentType is active and usable in ezyVet.
Type
boolean
limit
Limits the number of results returned.
Type
number
Default
10page
Specifies the page number of the result.
Type
number
Default
1Responses
A list of AppointmentType(s)
application/json
JSON "meta": { "items_page": 0, "items_page_total": 0, "items_page_size": 0, "items_total": 0, "transaction_id": "string", "timestamp": 0 }, "items": [ { "appointmenttype": { "id": 0, "uid": "string", "active": true, "name": "string", "default_duration": 30 } } ], "messages": [ { } ]
{
}
GET
/v2/appointmenttype
Samples
Fetches a list of Resources
GET
/v2/resource
Fetches a list containing Resource(s).
Authorizations
bearerAuth
clientCredentials Flow
Token URL
"https://api.ezyvet.com/v1/oauth/access_token"Scopes:
"read-resource"Read resource resources
Parameters
Query Parameters
id
The ID number used by the system to uniquely identify an Resource.
Type
number
uid
The ID number used by the system to uniquely identify an Resource across all ezyVet sites.
Type
string
created_at
The epoch time when the Resource was created.
Type
number
modified_at
The epoch time when the Resource was last modified.
Type
number
active
If true, the Resource is active and usable in ezyVet.
Type
boolean
associated_type
The type of the Resource: 'user', 'facility'.
Type
string
associated_id
The ID number used by the system to uniquely identify a user.
Type
number
associated_uid
The ID number used by the system to uniquely identify a user across all ezyVet sites.
Type
string
access
The level of the access the Resource has. The value can be one of the following: 'None', 'On Calendar' or 'Member'.
Type
string
Valid values
"None""On Calendar""Member"ownership_uid
The ID of the Ownership Separation to which this Resource belongs across all ezyVet sites.
Type
string
ownership_id
The ID of the Ownership Separation to which this Resource belongs.
Type
number
Responses
A list of Resources.
application/json
JSON "meta": { "timestamp": "string", "items_page": "string", "items_page_total": "string", "items_page_size": "string", "items_total": "string" }, "items": [ { "resource": { "id": 0, "uid": "string", "created_at": 0, "modified_at": 0, "active": true, "name": "string", "associated_type": "string", "associated_id": 0, "associated_uid": "string", "access": "string", "ownership_uid": "string", "ownership_id": 0 } } ], "messages": [ { } ]
{
}
GET
/v2/resource
Samples
Deprecated
Get bookable appointment slots (Deprecated)
GET
/ezycab/availability
Deprecated. Use
/v4/calendar/availabilityinstead. This endpoint is scheduled to be sunset on 12 April 2027 — migrate before then to avoid service disruption. See the deprecation notice for the full schedule. Responses includeDeprecatedandSunsetheaders.
Gets bookable appointment slots | Rate limit : 300 calls/minute
Authorizations
bearerAuth
clientCredentials Flow
Token URL
"https://api.ezyvet.com/v1/oauth/access_token"Scopes:
"read-appointment"Read appointment resources
Parameters
Query Parameters
resources[]*
- The UID(s) of the resource(s) to return availability for.
- This parameter can be added multiple times to request more than one resource.
- A minimum of 1 and a maximum of 5 resources may be requested per call.
- Each resource UID must be unique.
Type
Requiredstring
Example
"resource_Tr4l0W5LbTs7aTGSuzi5n"dates[]*
- The date(s) to return availability for, in ISO 8601 format (YYYY-MM-DD).
- This parameter can be added multiple times to request more than one date.
- A minimum of 1 and a maximum of 7 dates may be requested per call.
- Each date must be unique.
- A date must not be in the past and must be no more than 6 months in the future.
Type
Requiredstring
Example
"2024-06-09"duration*
- The duration of the appointment slots (in minutes).
- Default minimum value is 10 but can be reduced to 5 with additional filtering (See Availability guide).
- Maximum value is 360.
- Increments in 5 minutes.
Refer to the availability guide for more information.
Type
Requirednumber
Example
15filter[slots.available][eq]
Filtering by whether the appointment slots are available or not.
Type
boolean
Example
truefilter[slots.appointmentType.id][in]
- Filtering by appointment type using the UID.
- Can provide multiple UIDs separated by commas.
- Required when duration is set to 5 minutes (a 5-minute duration is only permitted alongside an appointment type filter).
Type
string
Example
"appointmentType_0C0qtekyEL2A0XDUUSbDz"Responses
OK
application/json
JSON "data": [ { "id": "resourceAvailability_xOjIwMjMtMDktMjcfgf", "type": "resourceAvailability", "attributes": { "date": "2024-06-09", "timezone": "Pacific/Auckland", "slots": [ { "start": "2024-06-30T00:00:00.000+12:00", "duration": 15, "available": true, "relationships": { "appointmentType": { "data": [ { "type": "appointmentType", "id": "appointmentType_hslifhr56n5j5jiudfh" } ] } } } ] }, "relationships": { "site": { "id": "site_HIrgCIDevelopmentSite", "type": "site" }, "resource": { "id": "resource_06LfqGFlTXo249hhmPZfk", "type": "resource" } } } ]
{
}
GET
/ezycab/availability
Samples
Appointment Booking
Creates appointment bookings, with their associated consultation and billing triggers.
Create a new appointment booking
POST
/v4/calendar/booking
Creates an appointment with associated consultation and billing triggers in the ezyVet system.
Authorizations
bearerAuth
clientCredentials Flow
Token URL
"https://api.ezyvet.com/v1/oauth/access_token"Scopes:
"create-booking"Create booking resources
Request Body
application/json
JSON "startTime": "2025-07-14T09:30:00.000-04:00", "type": "appointmentType_98765", "durationMinutes": 30, "appointmentStatus": "unconfirmed", "description": "Routine check-up", "animal": "animal_f47ac10bassssdasda", "contact": "contact_f47ac10bxcxasdoaids", "provider": "resource_0L08Ggnl7UB5AhVOys3t1", "additionalResources": [ "resource_0L08Ggnl7UB5AhVOys3t1" ]
{
}
Responses
Successful booking creation
application/json
JSON "id": "bookingRequest_123", "appointment": "appointment_asdf"
{
}
POST
/v4/calendar/booking
Samples
Shelter Animal Booking
Manages bookings or records for shelter animals within the clinic.
Operations
Fetch a Specific Shelter Animal Booking
GET
/v2/shelteranimalbooking/{id}
Fetches a specific Shelter Animal Booking specified by its id.
Authorizations
bearerAuth
clientCredentials Flow
Token URL
"https://api.ezyvet.com/v1/oauth/access_token"Scopes:
"read-shelteranimalbooking"Read shelter animal booking resources
Parameters
Path Parameters
id*
The ID number used by the system to uniquely identify a Shelter Animal Booking.
Type
Requirednumber
Responses
A single shelter animal booking
application/json
JSON "meta": { "timestamp": "string", "items_page": "string", "items_page_total": "string", "items_page_size": "string", "items_total": "string" }, "items": [ { "shelteranimalbooking": { "id": 0, "created_at": 0, "modified_at": 0, "active": true, "animal_id": 0, "start_time": 0, "end_time": 0, "consult_id": 0, "status": "string", "shelter_resource_place_id": 0, "contact_id": 0, "shelter_resource_id": 0, "shelter_resource_name": "string", "shelter_resource_ownership_id": 0, "comment": "string" } } ], "messages": [ ]
{
}
GET
/v2/shelteranimalbooking/{id}
Samples
Planning Guides
Planning guide sync endpoints designed for integrations that maintain a local copy of resource availability windows.
Deprecated
Fetch a planning guide list (V2.1) (Deprecated)
GET
/ezycab/v2.1/planning-guides
Deprecated. Use
/v2.1/calendar/planning-guidesinstead. This endpoint is scheduled to be sunset on 12 April 2027 — migrate before then to avoid service disruption. See the deprecation notice for the full schedule. Responses includeDeprecatedandSunsetheaders.
Fetches a list of planning guides (scheduling blocks that define when a resource is available for bookings). Planning guides have appointmentdata_calendartype = 'Guide'.
This endpoint is designed for integrations that maintain a local copy of planning guide availability windows.
Recommended sync pattern
- Initial backfill: Record the current UTC timestamp before you start. Bound your window with
filter[start_at][gte]andfilter[start_at][lte]. Omitfilter[active][eq]to receive both active and inactive guides in a single pass. - Incremental polling: Use
filter[modified_at][gte]with the timestamp recorded at the start of the backfill (not the highestmodified_atseen in responses). This ensures records modified mid-backfill are not missed. Advance the cursor to the previous poll's start time on each subsequent poll.
Pagination
Pass meta.nextToken from the previous response as the nextToken query parameter to fetch the next page. When nextToken is absent or null there are no more pages.
Authentication
Requires the read-appointment JWT scope.
Authorizations
bearerAuth
clientCredentials Flow
Token URL
"https://api.ezyvet.com/v1/oauth/access_token"Scopes:
"read-appointment"Read appointment resources
Parameters
Query Parameters
filter[id][in]
Comma-separated list of planning guide IDs. Use for targeted batch re-fetches.
Type
array
Example
"2048""2049"filter[modified_at][gte]
ISO 8601 datetime (inclusive). Returns only guides modified at or after this timestamp. Use as the anchor for incremental polling.
Type
string
Example
"2026-01-15T08:30:00Z"Format
"date-time"filter[start_at][gte]
ISO 8601 datetime (inclusive). Returns only guides starting at or after this time. Combine with filter[start_at][lte] to define a calendar window for backfill.
Type
string
Example
"2026-01-01T00:00:00Z"Format
"date-time"filter[start_at][lte]
ISO 8601 datetime (inclusive). Returns only guides starting at or before this time.
Type
string
Example
"2026-04-01T00:00:00Z"Format
"date-time"filter[active][eq]
Filter by active status.
true: active guides onlyfalse: inactive guides only- Omitted: all guides regardless of status
Type
boolean
Example
truefilter[resources.uid][in]
Comma-separated list of resource UIDs. Returns guides assigned to any of the specified resources (vets, nurses, rooms, etc.).
Type
array
Example
"resource_iHmhFtUJBmDYB5m8rMTI0""resource_hvy20slsY9M8886UigeIF"pageSize
Number of guides to return per page. Defaults to 1000, maximum 5000.
Type
integer
Example
1000Minimum
1Maximum
5000Default
1000nextToken
Pagination cursor returned in meta.nextToken from a previous response. Omit on the first request.
Type
string
Example
"AB3e7Z2i9FJu0j7hLExLp"Responses
Successful response with planning guide list
application/json
JSON "meta": { "nextToken": "AB3e7Z2i9FJu0j7hLExLp" }, "data": [ { "id": 2048, "uid": "appointment_uJMYy7DC3CT9MsPB0r3HU", "created_at": 1307498299, "modified_at": 1765395429, "active": true, "start_at": 1307491200, "duration": 28800, "type_id": 8, "type_uid": "appointmentType_jemy7oGJjj0BExij6D3xk", "description": "", "resources": [ { "id": 36, "uid": "resource_dC7T87I3VNJbcttDAeeID", "name": "Dr Smith", "type": "user" } ], "recurrence": { "repeat_interval": 604800, "repeat_end_at": null } }, { "id": 2049, "uid": "appointment_vKNZz8ED4DU0HtQC1s4IV", "created_at": 1307498300, "modified_at": 1765395430, "active": true, "start_at": 1307577600, "duration": 10800, "type_id": 7, "type_uid": "appointmentType_kfnz8pHKkt1CFpjk7E4yl", "description": "", "resources": [ { "id": 36, "uid": "resource_dC7T87I3VNJbcttDAeeID", "name": "Dr Smith", "type": "user" } ], "recurrence": null } ]
{
}
GET
/ezycab/v2.1/planning-guides