Build Amazing Veterinary Software with Vetspire API

The modern GraphQL API for veterinary practice management. Connect your applications to client records, patient data, appointments, billing, and more with type-safe, flexible queries that return exactly the data you need.

🚀 What makes Vetspire API special?

  • GraphQL-first: Fetch exactly what you need in a single request
  • Veterinary-focused: Purpose-built for animal healthcare workflows
  • Real-time: Support for subscriptions and live data updates
  • Type-safe: Complete TypeScript definitions and schema introspection

Built on the powerful GraphQL specification, our API gives you the flexibility to request precisely the data your application needs. Whether you're building a mobile app, web dashboard, or integrating with existing systems, Vetspire API adapts to your requirements.

🔒

Secure by Design

Enterprise-grade security with API key authentication and environment isolation.

📊

Rich Documentation

Interactive examples, comprehensive type definitions, and real-world use cases.

Developer Experience

Multiple environments, helpful error messages, and extensive tooling support.

Stay informed about API updates by subscribing to our developer announcement mailing list. We'll notify you about new features, breaking changes, and best practices.

Get Started

API Production Endpoint
https://api2.vetspire.com/graphql
API Testing Endpoint
https://api.staging.vetspire.com/graphql
API Sandbox Endpoint
https://api.sandbox.vetspire.com/graphql

Authentication

Every request made to our API Endpoint must include an Authorization header which includes your secret API Key. Your secret API Key enables read and write access to your entire organization's data, so keep it safe and secret! It should be treated equivalently to an administrator's password. Your API Key should never be shared in public spaces. You should take extra precaution to ensure that your API keys are never committed to your public git repositories.

On your administrator dashboard, you'll be able to generate API keys for both testing and production use. You can revoke old keys and generate new ones at any time.

For every request made to the API, you should include the API Key in the header of your HTTPS request under "Authorization". Any request made without a valid Authorization header will return a 403 error response. See an example using curl on the right. Furthermore, all API requests must be made over HTTPS.

Every GraphQL request is replied with by a valid JSON string that represents the data being fetched or any errors incurred in the fetching (e.g. if you are unauthorized to access the data being requested).

Getting Started with Your First Query

The easiest way to get started is by querying your organization information. This simple query will help you verify that your API key is working correctly and give you basic information about your Vetspire organization.

All you need to do is make a POST request to the API endpoint with your query and include your API key in the Authorization header.

Limits

We currently enforce a maximum query depth of 8. If you exceed this, you'll see the an error code query_depth_limit with a message: Query has depth of 9, which exceeds max depth of 8. This limit helps us ensure we can provide a reliable service to all API users.

If you run into this error, please split up your query into multiple smaller queries or reconsider whether you need all the information you requested.

Your First GraphQL Query
query GetOrganization {
org {
id
name
}
}
cURL Request
curl https://api.staging.vetspire.com/graphql \
-X POST \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "query GetOrganization { org { id name } }"}'
Example Response
{
"data": {
"org": {
"id": "1",
"name": "Your Clinic Name"
}
}
}

Exploring the API Reference

Our comprehensive API reference is organized by veterinary practice domains, making it easy to find the functionality you need. Use the sidebar navigation to explore different areas of the API.

🔍 Queries

Fetch data from your practice management system:

  • Client and patient information
  • Appointment schedules
  • Medical records and encounters
  • Billing and invoices
  • Inventory management

✏️ Mutations

Create, update, and manage practice data:

  • Schedule appointments
  • Update patient records
  • Process payments
  • Manage treatments
  • Handle communications

💡 Pro Tips for Navigation

  • Use the search (⌘K): Quickly find queries, mutations, or types
  • Organized by domain: Related operations are grouped together (e.g., Clinical, Billing)
  • Detailed descriptions: Each field includes context-aware descriptions
  • Type system: Explore object types, enums, and input objects in the sidebar

Understanding GraphQL Syntax

Each operation in our API follows GraphQL conventions. Here's how to read the reference documentation:

getClients(active: Boolean, limit: Int!): [Client]

getClients - The operation name

active: Boolean - Optional parameter (no exclamation mark)

limit: Int! - Required parameter (exclamation mark)

[Client] - Returns an array of Client objects

GraphQL Type Notation:

String - A text value

String! - A required text value

[String] - An array of text values

[String!]! - A required array of required text values