API reference · Integrations
Endpoints for clinics that use VetManager: status, patient search, creating or recovering the visit for a consultation, and clinical-note export.
Guides:Work with Link and Vettigo
POST/workspaces/{workspaceId}/consultations/{consultationId}/vetmanager/export
Adds the supplied note to the consultation's VetManager visit as a new AI note ("AI-anteckning"). The consultation must be linked to a visit, either by opening Vetnio from that visit or through the create-visit endpoint. Exporting the same text again replays the first result; edited text adds another note.
Errors: 400 when the consultation is not linked or the note is empty; 401 when the caller must sign in to VetManager again; 403 when the visit's access belongs to another visit; 404 when the visit no longer exists; 409 when the visit is locked.
AcceptsPersonal key
workspaceIdstringrequiredIdentifier of the clinic (workspace), as returned by GET /workspaces. The key's user must be a member of the clinic, or an admin of the organization it belongs to.
consultationIdstringrequiredIdentifier of the consultation (UUID), as returned when it was created or by GET /workspaces/{workspaceId}/consultations. It must belong to the clinic in workspaceId.
clinicalNotestringrequiredThe note to write: HTML, plain text, or a structured note serialised as a JSON object. It is converted to plain text and must not be empty.
statusenumrequiredAlways ok on success.
vetmanagerEventIdnumberrequirednullableId of the AI note created in VetManager, or null when VetManager did not return one.
curl -X POST "https://vetnio.com/api/v2/workspaces/furunculotic-loud-chihuahua/consultations/a1b2c3d4-e5f6-7890-abcd-ef1234567890/vetmanager/export" \
-H "Authorization: Bearer $VETNIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"clinicalNote": "<p><strong>Anamnes</strong><br>Hälta vänster bak sedan två veckor.</p>"
}'{
"status": "ok",
"vetmanagerEventId": 990001
}PUT/workspaces/{workspaceId}/consultations/{consultationId}/vetmanager/patient
Makes the VetManager animal from a patient search match a Vetnio patient (with its owner), reusing the patient when the animal was added before, and sets it as the consultation's patient. Replaces any earlier patient. The visit context then returns it as patientChoice, so export starts with that animal. Nothing is created in VetManager.
Errors: 401 when the caller has no linked VetManager account or must sign in again; 403 when the practice is not linked to this workspace or the caller may not use the patient; 409 when the patient changed while it was being added.
AcceptsPersonal key
workspaceIdstringrequiredIdentifier of the clinic (workspace), as returned by GET /workspaces. The key's user must be a member of the clinic, or an admin of the organization it belongs to.
consultationIdstringrequiredIdentifier of the consultation (UUID), as returned when it was created or by GET /workspaces/{workspaceId}/consultations. It must belong to the clinic in workspaceId.
matchobjectrequiredA match from the patient search, as returned (its patientId may be left out).
contactIdintegerrequiredVetManager client (owner) id.
> 0 · ≤ 9007199254740991
animalIdintegerrequiredVetManager animal id.
> 0 · ≤ 9007199254740991
animalNamestringrequirednullableanimalName from the search match.
at most 200 characters
animalKindstringrequirednullableanimalKind from the search match.
at most 100 characters
ownerNamestringrequirednullableownerName from the search match.
at most 200 characters
customerNumberstringrequirednullablecustomerNumber from the search match.
at most 100 characters
patientIdstringrequiredThe Vetnio patient now linked to the consultation.
namestringrequirednullablePatient name.
speciesstringrequirednullablePatient species, when VetManager's animal kind could be mapped or kept.
curl -X PUT "https://vetnio.com/api/v2/workspaces/furunculotic-loud-chihuahua/consultations/a1b2c3d4-e5f6-7890-abcd-ef1234567890/vetmanager/patient" \
-H "Authorization: Bearer $VETNIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"match": {
"contactId": 5101,
"animalId": 8811,
"animalName": "string",
"animalKind": "string",
"ownerName": "string",
"customerNumber": "string"
}
}'{
"patientId": "c3d4e5f6-a7b8-4c9d-8e0f-1a2b3c4d5e6f",
"name": "Bella",
"species": "horse"
}POST/workspaces/{workspaceId}/consultations/{consultationId}/vetmanager/visit
Creates a visit for the selected owner and animal in VetManager (or adds the animal to an earlier visit) and links the consultation to it. It does not export the note: call the export endpoint next. A new visit charges the practice's basic fee. Safe to retry: when the visit context reports a pending creation with canRetry, resend the same selection to finish it without creating a duplicate.
Errors: 400 for an empty note or a selection VetManager rejects (for example an animal the owner does not own); 401 when the caller must sign in to VetManager again; 403 when the practice is not linked or not allowed to create visits; 409 when the account changed, the consultation is already linked, or another creation is in progress.
AcceptsPersonal key
workspaceIdstringrequiredIdentifier of the clinic (workspace), as returned by GET /workspaces. The key's user must be a member of the clinic, or an admin of the organization it belongs to.
consultationIdstringrequiredIdentifier of the consultation (UUID), as returned when it was created or by GET /workspaces/{workspaceId}/consultations. It must belong to the clinic in workspaceId.
practiceIdintegerrequiredVetManager practice id, as returned in practice.id by the visit context.
> 0 · ≤ 9007199254740991
identityKeystringrequiredOpaque key from the visit context. A request is rejected with 409 when the signed-in VetManager account or practice changed since it was issued.
at least 1 characters
clinicalNotestringrequiredThe note to write: HTML, plain text, or a structured note serialised as a JSON object. It is converted to plain text and must not be empty.
selectionobjectrequiredThe owner and animal the visit is for.
contactIdintegerrequiredVetManager client (owner) id.
> 0 · ≤ 9007199254740991
animalIdintegerrequiredVetManager animal id.
> 0 · ≤ 9007199254740991
assignmentIdintegeroptionalAdd the animal to this earlier visit (assignment) created through Vetnio for the same owner, without another basic fee. Omit to create a new visit, which charges the practice's basic fee.
> 0 · ≤ 9007199254740991
namestringoptionalOptional visit reason shown in VetManager.
Default · at most 254 characters
resonIdintegerrequiredVetManager visit reason ("reson") id: the record the note is written to.
> 0 · ≤ 9007199254740991
assignmentIdintegerrequirednullableVetManager visit (assignment) id; null for a recovered visit, which cannot take more animals.
> 0 · ≤ 9007199254740991
practiceIdintegerrequiredVetManager practice id, as returned in practice.id by the visit context.
> 0 · ≤ 9007199254740991
contactIdintegerrequiredVetManager client (owner) id.
> 0 · ≤ 9007199254740991
animalIdintegerrequiredVetManager animal id.
> 0 · ≤ 9007199254740991
clientBlockedbooleanrequiredtrue when VetManager flags the owner as blocked; show a warning.
returnUrlstringrequirednullableLink to the visit in VetManager, when known.
curl -X POST "https://vetnio.com/api/v2/workspaces/furunculotic-loud-chihuahua/consultations/a1b2c3d4-e5f6-7890-abcd-ef1234567890/vetmanager/visit" \
-H "Authorization: Bearer $VETNIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"practiceId": 4242,
"identityKey": "3f1e9c0b7a",
"clinicalNote": "<p><strong>Anamnes</strong><br>Hälta vänster bak sedan två veckor.</p>",
"selection": {
"contactId": 5101,
"animalId": 8811,
"assignmentId": 3100001,
"name": "Hälta"
}
}'{
"resonId": 2535050,
"assignmentId": 0,
"practiceId": 4242,
"contactId": 5101,
"animalId": 8811,
"clientBlocked": false,
"returnUrl": "https://vetmanager.se/vet_assignments/3100001/edit"
}GET/workspaces/{workspaceId}/consultations/{consultationId}/vetmanager/visit-context
Returns what the vet needs before exporting: whether the consultation is already linked to a VetManager visit, an unfinished visit creation to resume, earlier visits the animal can be added to, and the VetManager animal of the consultation's patient. Errors: 401 when the caller must sign in to VetManager again; 403 when the practice is not linked to this workspace; 404 when the consultation does not exist.
AcceptsPersonal key
workspaceIdstringrequiredIdentifier of the clinic (workspace), as returned by GET /workspaces. The key's user must be a member of the clinic, or an admin of the organization it belongs to.
consultationIdstringrequiredIdentifier of the consultation (UUID), as returned when it was created or by GET /workspaces/{workspaceId}/consultations. It must belong to the clinic in workspaceId.
identityKeystringrequiredOpaque key from the visit context. A request is rejected with 409 when the signed-in VetManager account or practice changed since it was issued.
at least 1 characters
practiceobjectrequiredThe VetManager practice of the signed-in account.
idintegerrequiredVetManager practice id, as returned in practice.id by the visit context.
> 0 · ≤ 9007199254740991
namestringrequiredPractice name.
linkedbooleanrequiredtrue when the consultation is already linked to a visit; export directly.
linkedVisitobjectrequirednullableThe linked visit when it was created through Vetnio, else null.
resonIdintegerrequiredVetManager visit reason ("reson") id: the record the note is written to.
> 0 · ≤ 9007199254740991
assignmentIdintegerrequirednullableVetManager visit (assignment) id; null for a recovered visit, which cannot take more animals.
> 0 · ≤ 9007199254740991
practiceIdintegerrequiredVetManager practice id, as returned in practice.id by the visit context.
> 0 · ≤ 9007199254740991
contactIdintegerrequiredVetManager client (owner) id.
> 0 · ≤ 9007199254740991
animalIdintegerrequiredVetManager animal id.
> 0 · ≤ 9007199254740991
clientBlockedbooleanrequiredtrue when VetManager flags the owner as blocked; show a warning.
returnUrlstringrequirednullableLink back to the linked visit in VetManager, when known.
pendingobjectrequirednullableAn earlier visit creation that did not finish, or null.
keystringrequiredKey of the unfinished creation; pass it as pendingKey to recovery.
selectionobjectrequiredThe owner and animal the visit is for.
contactIdintegerrequiredVetManager client (owner) id.
> 0 · ≤ 9007199254740991
animalIdintegerrequiredVetManager animal id.
> 0 · ≤ 9007199254740991
assignmentIdintegeroptionalAdd the animal to this earlier visit (assignment) created through Vetnio for the same owner, without another basic fee. Omit to create a new visit, which charges the practice's basic fee.
> 0 · ≤ 9007199254740991
namestringrequiredOptional visit reason shown in VetManager.
Default · at most 254 characters
canRetrybooleanrequiredtrue: resend this selection to the create-visit endpoint to finish safely. false: the retry window passed or another vet started it; use recovery instead.
visitsarray of objectsrequiredEarlier visits another animal of the same owner can be added to. Filter by contactId.
assignmentIdintegerrequiredPass as selection.assignmentId.
> 0 · ≤ 9007199254740991
contactIdintegerrequiredVetManager client (owner) id.
> 0 · ≤ 9007199254740991
namestringrequirednullableName of the Vetnio consultation that created it.
patientChoiceobjectrequirednullableOwner and animal of the consultation's patient when it was picked from VetManager; preselect it.
contactIdintegerrequiredVetManager client (owner) id.
> 0 · ≤ 9007199254740991
animalIdintegerrequiredVetManager animal id.
> 0 · ≤ 9007199254740991
animalNamestringrequirednullableAnimal name.
ownerNamestringrequirednullableOwner name as it was when the animal was picked.
curl "https://vetnio.com/api/v2/workspaces/furunculotic-loud-chihuahua/consultations/a1b2c3d4-e5f6-7890-abcd-ef1234567890/vetmanager/visit-context" \
-H "Authorization: Bearer $VETNIO_API_KEY"{
"identityKey": "3f1e9c0b7a",
"practice": {
"id": 4242,
"name": "Demogården"
},
"linked": false,
"linkedVisit": {
"resonId": 2535050,
"assignmentId": 0,
"practiceId": 4242,
"contactId": 5101,
"animalId": 8811,
"clientBlocked": false
},
"returnUrl": null,
"pending": {
"key": "vetnio-visit-6c1f",
"selection": {
"contactId": 5101,
"animalId": 8811,
"assignmentId": 3100001,
"name": "Hälta"
},
"canRetry": true
},
"visits": [
{
"assignmentId": 3100001,
"contactId": 5101,
"name": "Bella – Hälta"
}
],
"patientChoice": {
"contactId": 5101,
"animalId": 8811,
"animalName": "Bella",
"ownerName": "Anna Lindqvist"
}
}POST/workspaces/{workspaceId}/consultations/{consultationId}/vetmanager/visit/recovery
Links the consultation to the existing VetManager visit checked by the recovery preview, without creating anything in VetManager. Call the export endpoint next. Same errors as the preview, plus 400 for an empty note.
AcceptsPersonal key
workspaceIdstringrequiredIdentifier of the clinic (workspace), as returned by GET /workspaces. The key's user must be a member of the clinic, or an admin of the organization it belongs to.
consultationIdstringrequiredIdentifier of the consultation (UUID), as returned when it was created or by GET /workspaces/{workspaceId}/consultations. It must belong to the clinic in workspaceId.
practiceIdintegerrequiredVetManager practice id, as returned in practice.id by the visit context.
> 0 · ≤ 9007199254740991
identityKeystringrequiredOpaque key from the visit context. A request is rejected with 409 when the signed-in VetManager account or practice changed since it was issued.
at least 1 characters
resonIdintegerrequiredVetManager visit reason ("reson") id: the record the note is written to.
> 0 · ≤ 9007199254740991
pendingKeystringrequiredpending.key from the visit context.
at least 1 characters
clinicalNotestringrequiredThe note to write: HTML, plain text, or a structured note serialised as a JSON object. It is converted to plain text and must not be empty.
resonIdintegerrequiredVetManager visit reason ("reson") id: the record the note is written to.
> 0 · ≤ 9007199254740991
assignmentIdintegerrequirednullableVetManager visit (assignment) id; null for a recovered visit, which cannot take more animals.
> 0 · ≤ 9007199254740991
practiceIdintegerrequiredVetManager practice id, as returned in practice.id by the visit context.
> 0 · ≤ 9007199254740991
contactIdintegerrequiredVetManager client (owner) id.
> 0 · ≤ 9007199254740991
animalIdintegerrequiredVetManager animal id.
> 0 · ≤ 9007199254740991
clientBlockedbooleanrequiredtrue when VetManager flags the owner as blocked; show a warning.
returnUrlstringrequirednullableLink to the visit in VetManager, when known.
curl -X POST "https://vetnio.com/api/v2/workspaces/furunculotic-loud-chihuahua/consultations/a1b2c3d4-e5f6-7890-abcd-ef1234567890/vetmanager/visit/recovery" \
-H "Authorization: Bearer $VETNIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"practiceId": 4242,
"identityKey": "3f1e9c0b7a",
"resonId": 2535050,
"pendingKey": "vetnio-visit-6c1f",
"clinicalNote": "<p><strong>Anamnes</strong><br>Hälta vänster bak sedan två veckor.</p>"
}'{
"resonId": 2535050,
"assignmentId": 0,
"practiceId": 4242,
"contactId": 5101,
"animalId": 8811,
"clientBlocked": false,
"returnUrl": "https://vetmanager.se/vet_assignments/3100001/edit"
}POST/workspaces/{workspaceId}/consultations/{consultationId}/vetmanager/visit/recovery-preview
For a pending creation that can no longer be retried: checks that the VetManager visit with the given id belongs to the same owner, animal, account and practice, and returns it for confirmation. Changes nothing. The vet must have opened that visit from VetManager once so Vetnio holds its access.
Errors: 400 when the visit's owner or animal differ; 401 when the visit has not been opened from VetManager; 403 for another account or practice; 409 when the pending creation changed or the visit is locked.
AcceptsPersonal key
workspaceIdstringrequiredIdentifier of the clinic (workspace), as returned by GET /workspaces. The key's user must be a member of the clinic, or an admin of the organization it belongs to.
consultationIdstringrequiredIdentifier of the consultation (UUID), as returned when it was created or by GET /workspaces/{workspaceId}/consultations. It must belong to the clinic in workspaceId.
practiceIdintegerrequiredVetManager practice id, as returned in practice.id by the visit context.
> 0 · ≤ 9007199254740991
identityKeystringrequiredOpaque key from the visit context. A request is rejected with 409 when the signed-in VetManager account or practice changed since it was issued.
at least 1 characters
resonIdintegerrequiredVetManager visit reason ("reson") id: the record the note is written to.
> 0 · ≤ 9007199254740991
pendingKeystringrequiredpending.key from the visit context.
at least 1 characters
resonIdintegerrequiredVetManager visit reason ("reson") id: the record the note is written to.
> 0 · ≤ 9007199254740991
namestringrequiredVisit reason name in VetManager.
datestringrequirednullableVisit date (ISO 8601), when VetManager has one.
animalNamestringrequirednullableAnimal on the visit.
clientNamestringrequirednullableOwner on the visit.
curl -X POST "https://vetnio.com/api/v2/workspaces/furunculotic-loud-chihuahua/consultations/a1b2c3d4-e5f6-7890-abcd-ef1234567890/vetmanager/visit/recovery-preview" \
-H "Authorization: Bearer $VETNIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"practiceId": 4242,
"identityKey": "3f1e9c0b7a",
"resonId": 2535050,
"pendingKey": "vetnio-visit-6c1f"
}'{
"resonId": 2535050,
"name": "Hälta",
"date": "2026-10-26T09:30:00+01:00",
"animalName": "Bella",
"clientName": "Anna Lindqvist"
}GET/workspaces/{workspaceId}/vetmanager/patients
Searches the caller's VetManager practice by animal name and owner surname and returns animal and owner pairs. Read-only: nothing is created in Vetnio or VetManager.
Errors: 400 for a query shorter than 3 characters; 401 when the caller has no linked VetManager account or must sign in again; 403 when the practice is not linked to this workspace or VetManager has not enabled search for it.
AcceptsPersonal key
workspaceIdstringrequiredIdentifier of the Vetnio workspace (clinic). The caller must be a member. Patient and visit endpoints also require the workspace to be linked to the caller's VetManager practice.
querystringrequiredAnimal name or owner surname to search for in VetManager. 3 to 200 characters after trimming.
at least 3 characters · at most 200 characters
patientsarray of objectsrequiredAt most 20 matches, animal-name matches first.
contactIdintegerrequiredVetManager client (owner) id.
> 0 · ≤ 9007199254740991
animalIdintegerrequiredVetManager animal id.
> 0 · ≤ 9007199254740991
animalNamestringrequirednullableAnimal name, or null when VetManager has none.
animalKindstringrequirednullableAnimal kind as VetManager names it (Swedish).
ownerNamestringrequirednullableOwner name. null when the match came only from the animal search, which returns no owner names.
customerNumberstringrequirednullableThe practice's customer number for the owner, when known.
patientIdstringrequirednullableVetnio patient already created from this animal in the workspace, or null.
curl "https://vetnio.com/api/v2/workspaces/furunculotic-loud-chihuahua/vetmanager/patients?query=Bella" \
-H "Authorization: Bearer $VETNIO_API_KEY"{
"patients": [
{
"contactId": 5101,
"animalId": 8811,
"animalName": "Bella",
"animalKind": "Häst",
"ownerName": "Anna Lindqvist",
"customerNumber": "1042",
"patientId": null
}
]
}GET/workspaces/{workspaceId}/vetmanager/status
Returns whether the calling user has a VetManager account linked to Vetnio. The link is created when the user opens Vetnio from a VetManager visit and cannot be set up through the REST API. Use it to decide whether to offer VetManager export. Never fails: any problem is reported as connected: false.
AcceptsPersonal key
workspaceIdstringrequiredIdentifier of the Vetnio workspace (clinic). The caller must be a member. Patient and visit endpoints also require the workspace to be linked to the caller's VetManager practice.
connectedbooleanrequiredtrue when the calling user has a VetManager account linked to Vetnio, created the first time they open Vetnio from a VetManager visit. Also false when the status could not be determined.
curl "https://vetnio.com/api/v2/workspaces/furunculotic-loud-chihuahua/vetmanager/status" \
-H "Authorization: Bearer $VETNIO_API_KEY"{
"connected": true
}