API reference · Core resources
A workspace is one veterinary clinic in Vetnio. It scopes every clinical resource; a user can belong to several workspaces with a different role in each.
Guides:Data modelAuthentication
A workspace the authenticated user belongs to, with the user's role in it.
idstringrequiredIdentifier of the workspace (veterinary clinic), generated by Vetnio as three lowercase words joined by hyphens. Pass it as the workspaceId path parameter of every workspace-scoped endpoint.
namestringrequiredDisplay name of the clinic, as set by its admins. An empty string if no name was ever set.
roleenumrequiredThe authenticated user's own membership role in this workspace. Roles are cumulative and decide which endpoints the user may call:
member — clinician access: consultations, recordings, notes, patients and VetsGPT.admin — everything a member can do, plus member management, billing, workspace settings and the workspace data-export endpoints.superadmin — everything an admin can do, plus deleting the workspace and changing other superadmins' roles. The creator of a workspace starts as its superadmin, and a workspace always keeps at least one.phoneCallIntegrationEnabledbooleanoptionalWhether the clinic receives phone calls into Vetnio through a telephony integration. Use it to show phone-call features only for clinics that have them. Always present in practice.
revenueRecoveryEnabledbooleanoptionalWhether revenue recovery (suggestions for billable items missed in a consultation) is enabled for the clinic. Use it to show those features only where they are switched on. Always present in practice.
{
"id": "furunculotic-loud-chihuahua",
"name": "Riverside Animal Clinic",
"role": "admin",
"phoneCallIntegrationEnabled": false,
"revenueRecoveryEnabled": false
}POST/workspaces
Creates a new workspace (veterinary clinic) from a name and country code, and makes the caller its superadmin. Before responding it also records the caller's acceptance of Vetnio's Terms of Service, Privacy Policy and Data Processing Agreement, creates the workspace's default note templates and a billing customer, and may link the clinic to an organization that matches the caller's email domain or lists the clinic on its roster. Failures in those follow-up steps are logged and do not fail the request. The free trial does not start here; it starts with the workspace's first consultation or first VetsGPT conversation. Not idempotent: every successful call creates another workspace. A user may normally create only one workspace (accounts enabled for multi-clinic administration can create up to 200); beyond that the request fails with a generic 500 error. Accepts a session or a personal API key.
AcceptsPersonal key
namestringrequiredDisplay name of the clinic, shown in the workspace switcher, on invoices and on PDF letterheads. Not checked for uniqueness or length; an empty string is accepted.
countryCodestringrequiredTwo-letter ISO 3166-1 alpha-2 country code of the clinic, for example se, de or us (matched case-insensitively). It sets regional defaults such as the audio retention policy (12 months for Germany, Austria and Switzerland) and becomes the billing address country. Stored as sent and not validated, so send a real code.
idstringrequiredIdentifier of the newly created workspace. Use it as workspaceId in subsequent workspace-scoped calls, for example to create consultations.
curl -X POST "https://vetnio.com/api/v2/workspaces" \
-H "Authorization: Bearer $VETNIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Riverside Animal Clinic",
"countryCode": "se"
}'{
"id": "appreciable-cardboard-monkey"
}GET/workspaces
Returns every workspace (veterinary clinic) the authenticated user is a direct member of, with their role in each. Use it to find the workspaceId for workspace-scoped endpoints and to decide which of them the user may call. The list is not paginated and not sorted; sort client-side if needed. Organization admins can also open their organization's clinics without being members, but those clinics are not listed here. Accepts a session or a personal API key; organization and workspace keys get 403.
AcceptsPersonal key
workspacesarray of objectsrequiredWorkspaces where the user is a direct member, in no guaranteed order. Clinics the user can only reach as an organization admin, locked clinics, clinics being deleted or merged, and clinics blocked by an IP allowlist for the caller's address are not included.
idstringrequiredIdentifier of the workspace (veterinary clinic), generated by Vetnio as three lowercase words joined by hyphens. Pass it as the workspaceId path parameter of every workspace-scoped endpoint.
namestringrequiredDisplay name of the clinic, as set by its admins. An empty string if no name was ever set.
roleenumrequiredThe authenticated user's own membership role in this workspace. Roles are cumulative and decide which endpoints the user may call:
member — clinician access: consultations, recordings, notes, patients and VetsGPT.admin — everything a member can do, plus member management, billing, workspace settings and the workspace data-export endpoints.superadmin — everything an admin can do, plus deleting the workspace and changing other superadmins' roles. The creator of a workspace starts as its superadmin, and a workspace always keeps at least one.phoneCallIntegrationEnabledbooleanoptionalWhether the clinic receives phone calls into Vetnio through a telephony integration. Use it to show phone-call features only for clinics that have them. Always present in practice.
revenueRecoveryEnabledbooleanoptionalWhether revenue recovery (suggestions for billable items missed in a consultation) is enabled for the clinic. Use it to show those features only where they are switched on. Always present in practice.
curl "https://vetnio.com/api/v2/workspaces" \
-H "Authorization: Bearer $VETNIO_API_KEY"{
"workspaces": [
{
"id": "demo-north-clinic",
"name": "DEMO North Clinic",
"role": "admin",
"phoneCallIntegrationEnabled": false,
"revenueRecoveryEnabled": false
},
{
"id": "demo-central-clinic",
"name": "DEMO Central Clinic",
"role": "admin",
"phoneCallIntegrationEnabled": false,
"revenueRecoveryEnabled": false
},
{
"id": "demo-south-clinic",
"name": "DEMO South Clinic",
"role": "admin",
"phoneCallIntegrationEnabled": false,
"revenueRecoveryEnabled": false
}
]
}