ezyVet Contacts API
Contacts (clients / pet owners) and their details. (Confirmed CRUD.)
Contacts (clients / pet owners) and their details. (Confirmed CRUD.)
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/ezyvet-contacts-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: ezyVet Animals Contacts API
description: 'The ezyVet API is a RESTful interface to ezyVet, cloud-based veterinary practice information management software (PIMS). ezyVet was founded in New Zealand in 2006 and acquired by IDEXX Laboratories in June 2021, alongside IDEXX''s Cornerstone and Neo PIMS (the acquisition also included Vet Radar).
The full API spans roughly 216 endpoints across animals/patients, contacts/clients, appointments, consultations, invoices, products, and diagnostics. Access is partner-gated: a developer must apply for an integration and receive an approved partner_id plus client_id/client_secret, then obtain a bearer token via the OAuth 2.0 Client Credentials grant. Tokens have a 12-hour TTL.
GROUNDING NOTE: The OAuth token endpoint, the /v1/contact CRUD endpoints, the Standard Diagnostic Integration, and the base/rate-limit behavior below are confirmed from ezyVet''s public developer documentation (developers.ezyvet.com). The remaining resource paths (animal, appointment, consult, invoice, product, diagnostic, prescription, vaccination and their reference resources) are MODELED on ezyVet''s documented /v1/{resource} REST pattern and published resource categories - operationId or path names may differ from the exact ezyVet catalog. Consult the partner Postman collection for authoritative request/response shapes.'
version: '1.0'
contact:
name: ezyVet Developer Portal
url: https://developers.ezyvet.com/docs/v1/
x-ownership: ezyVet is owned by IDEXX Laboratories, Inc. (acquired June 2021).
servers:
- url: https://api.ezyvet.com
description: Production
- url: https://api.trial.ezyvet.com
description: Trial / sandbox
security:
- bearerAuth: []
tags:
- name: Contacts
description: Contacts (clients / pet owners) and their details. (Confirmed CRUD.)
paths:
/v1/contact:
get:
operationId: listContacts
tags:
- Contacts
summary: List contacts (clients)
description: Lists contacts - clients, businesses, vendors, and staff. (Confirmed.)
parameters:
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/Active'
responses:
'200':
$ref: '#/components/responses/ListResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimited'
post:
operationId: createContact
tags:
- Contacts
summary: Create a contact
description: Creates a new contact. (Confirmed.)
requestBody:
$ref: '#/components/requestBodies/GenericResource'
responses:
'200':
$ref: '#/components/responses/ItemResponse'
'422':
$ref: '#/components/responses/ValidationError'
/v1/contact/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getContact
tags:
- Contacts
summary: Retrieve a contact
responses:
'200':
$ref: '#/components/responses/ItemResponse'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updateContact
tags:
- Contacts
summary: Update a contact
description: Updates an existing contact. (Confirmed.)
requestBody:
$ref: '#/components/requestBodies/GenericResource'
responses:
'200':
$ref: '#/components/responses/ItemResponse'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteContact
tags:
- Contacts
summary: Delete a contact
description: Deletes a contact. (Confirmed.)
responses:
'200':
$ref: '#/components/responses/DeleteResponse'
'404':
$ref: '#/components/responses/NotFound'
/v1/address:
get:
operationId: listAddresses
tags:
- Contacts
summary: List addresses (reference)
description: Physical and postal addresses linked to contacts. (Modeled.)
responses:
'200':
$ref: '#/components/responses/ListResponse'
components:
schemas:
Error:
type: object
properties:
error:
type: string
messages:
type: array
items:
type: string
ListEnvelope:
type: object
description: ezyVet list responses return a meta object plus an items array whose elements wrap each resource under its type key. (Shape modeled.)
properties:
meta:
type: object
properties:
items:
type: object
properties:
total:
type: integer
limit:
type: integer
page:
type: integer
pages:
type: integer
items:
type: array
items:
type: object
additionalProperties: true
parameters:
Active:
name: active
in: query
required: false
description: Filter by active status where the resource supports it.
schema:
type: boolean
Page:
name: page
in: query
required: false
description: 1-based page number.
schema:
type: integer
default: 1
Limit:
name: limit
in: query
required: false
description: Number of records per page (pagination is envelope-based via the meta object).
schema:
type: integer
default: 10
maximum: 200
Id:
name: id
in: path
required: true
description: The numeric ID of the resource.
schema:
type: integer
responses:
Unauthorized:
description: Missing or invalid bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
ListResponse:
description: A paginated list envelope.
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnvelope'
NotFound:
description: Resource not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
ValidationError:
description: Request validation failed.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
DeleteResponse:
description: Deletion acknowledgement.
content:
application/json:
schema:
type: object
properties:
message:
type: string
ItemResponse:
description: A single resource envelope.
content:
application/json:
schema:
type: object
additionalProperties: true
RateLimited:
description: Rate limit exceeded. ezyVet throttles typically at 60 requests/minute per endpoint and 180 calls/minute per database per partner. Inspect the x-ratelimit-remaining and x-ratelimit-reset response headers.
headers:
x-ratelimit-remaining:
description: Requests remaining in the current window.
schema:
type: integer
x-ratelimit-reset:
description: Seconds until the window resets.
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
requestBodies:
GenericResource:
required: true
description: Resource payload. ezyVet write bodies are resource-specific; consult the partner Postman collection for exact field lists. (Modeled as a free-form object here.)
content:
application/json:
schema:
type: object
additionalProperties: true
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: Bearer access token from POST /v1/oauth/access_token (OAuth 2.0 Client Credentials). 12-hour TTL.