v2 · för utvecklare
Vetmanager API
Ger partners tillgång till veterinärpraktikernas djurägare, djur, artiklar, onlinebokning och journal i Vetmanager — alltid med praktikens uttryckliga godkännande och bara den åtkomst integrationen behöver.
Vilket API?
Två API:er med var sin inloggningsmodell. Välj efter hur er tjänst används.
Partner-API
En integration som arbetar i bakgrunden, till exempel en bokningstjänst, en synk av djurägarregistret eller en tjänst som skickar in journaltext. Ingen veterinär loggar in i er app via Vetmanager.
OAuth 2.0 Client Credentials + headern X-Practice-Token per praktik.
Scribe-API
En app som veterinären använder under besöket, till exempel AI-diktering. Veterinären startar appen från ett besök i Vetmanager, eller öppnar den direkt, och appen skriver tillbaka till journalen.
OAuth 2.0 Authorization Code (OIDC) — veterinären loggar in, tokenet binds till ett besök.
Kom igång: Partner-API
En integration som arbetar i bakgrunden, till exempel en bokningstjänst, en synk av djurägarregistret eller en tjänst som skickar in journaltext. Ingen veterinär loggar in i er app via Vetmanager.
-
1
Registrera er som partner
Ni accepterar partneravtalet, beskriver tjänsten och svarar på frågor om dataskydd, informationssäkerhet och AI-användning. Ansökan signeras med BankID eller FrejaEID.
-
2
Bli godkända
Vetmanager granskar ansökan. När den är godkänd får ni client_id och client_secret med de scopes ni ansökt om.
-
3
Praktiken aktiverar er
Varje praktik aktiverar er själv i Vetmanager och godkänner de scopes integrationen behöver. Utan det kommer ni inte åt praktiken, hur giltigt ert token än är.
-
4
Hämta ett access-token
Tokenet gäller i två timmar. Hämta ett nytt när det gått ut.
POST /oauth/token
-
5
Hämta praktikerna
Svaret har ett practice_token per praktik som aktiverat er. Det skickas som X-Practice-Token i allt som gäller den praktiken.
GET /api/v2/practices
-
6
Läs och skriv
Läs djurägare, djur, artiklar, personal, förbrukningar och fakturor med cursor-paginering och deltasynk på updated_at. Skapa besök med journaltext med POST /api/v2/resons.
GET /api/v2/clients · GET /api/v2/animals · POST /api/v2/resons
-
7
Boka
Med read:availability och write:bookings ser ni praktikens lediga onlinetider och kan boka dem. Djurägaren matchas på personnummer inom praktiken, eller skapas, och bokningen sköts sedan som en vanlig onlinebokning.
GET /api/v2/available_times · POST /api/v2/vet_visits
-
8
Koppla en växel
Växlar rapporterar samtal, så att receptionen ser vem som ringer (write:calls), och skriver anteckningar i djurägarens kontaktjournal (write:journal).
POST /api/v2/calls · POST /api/v2/animals/{id}/notes
Kom igång: Scribe-API
En app som veterinären använder under besöket, till exempel AI-diktering. Veterinären startar appen från ett besök i Vetmanager, eller öppnar den direkt, och appen skriver tillbaka till journalen.
-
1
Registrera er och bli godkända
Samma registrering och granskning som för partner-API:t. Ni anger era redirect-URI:er, och Vetmanager lägger upp den launch_url som knappen i besöket ska leda till.
-
2
Veterinären startar er app
En knapp i besöket skickar veterinären till er launch_url med reson och return_url. Starten gäller i tio minuter och bara för den veterinär som klickade.
-
3
Kör inloggningen
Standard Authorization Code mot /oauth/authorize med reson_id. Veterinären är redan inloggad, så det märks knappt. Tokenet som utfärdas är bundet till just det besöket.
GET /oauth/authorize
-
4
Hämta besöket
Djur, djurägare och ansvarig veterinär, som underlag för er app.
GET /api/v2/scribe/resons/{id}
-
5
Skriv tillbaka
Fyll på anamnes, status och hemråd, skapa AI-anteckningen och lägg till diagnoser och förbrukningar. Allt läggs till — inget som veterinären skrivit skrivs över.
PATCH /api/v2/scribe/resons/{id} · POST /api/v2/scribe/resons/{id}/events
Så hänger det ihop
Fält- och parameternamn är på engelska — det är själva API-kontraktet. Så här motsvarar de orden i Vetmanager. Vissa begrepp kan kännas märkliga, men Vetmanager är sprunget ur Horsemanager, ett system för hästgårdar.
- practice
- Praktiken — veterinärkliniken eller djursjukhuset som använder Vetmanager och har aktiverat er.
- client
- Djurägaren. Kan vara en privatperson eller ett företag.
- animal
- Djuret. animal_kind anger djurslaget, till exempel 13 häst, 51 hund och 52 katt. Se SJVs baslitor. Det kan förekomma att animal kallas horse.
- reson
- Besöksorsaken — ett djurs del av ett besök, med anamnes, status, hemråd och journalanteckningar.
- assignment
- Besöket. Ett besök kan ha flera djur och flera besöksorsaker.
- vet_visit
- Bokningen i kalendern, innan besöket har ägt rum.
- farm_admin_contact
- En person i praktikens personal. Det är den man bokar mot och anger som ansvarig.
- plant
- Anläggningen — platsen där praktiken tar emot.
Autentisering och behörighet
Tre saker måste stämma för att ett anrop ska gå igenom. Ett giltigt token räcker inte ensamt.
Partnern är godkänd och aktiv
Ett avstängt eller avslaget partnerkonto stoppas i varje anrop, oavsett token.
Tokenet har scopet
Scopen bestäms när ni godkänns, och begärs när tokenet hämtas.
Praktiken har godkänt scopet
Varje praktik godkänner själv vilka scopes ni får använda hos just den. Praktiken kan stänga av er när som helst.
Journaltext lämnas aldrig ut till en partner. Veterinärjournaler kan innehålla uppgifter som omfattas av tystnadsplikt. Ni kan skriva journal, och scribe-appar kan läsa det besök de är bundna till.
Konventioner
- Fel
- Alla fel är application/problem+json (RFC 9457). Grena på status och på code där den finns, aldrig på detail — det är en läsbar text på svenska som kan ändras.
- Listor
- Cursor-paginering med first/after och last/before. Svaret har page_info och färdiga länkar till nästa och föregående sida.
- Filter och sortering
- fält__operator=värde, till exempel updated_at__gte=2026-10-01T00:00:00+02:00. Sortera med ordering=-updated_at. Okänt fält eller okänd operator ger 400 i stället för att ignoreras.
- Idempotens
- Anrop som skapar något kräver headern Idempotency-Key. Samma nyckel och samma body inom 24 timmar ger det första svaret i stället för en dubblett.
- Tider
- ISO 8601 med offset, i svensk lokaltid (Europe/Stockholm).
- Ingen testkonsol
- Det finns ingen "try it out" mot produktion. Testa mot en praktik som har aktiverat er, i samråd med praktiken.
Endpoints
Listan läses direkt ur OpenAPI-specarna. Där finns parametrar, scheman och exempel för varje endpoint.
Partner-API
OpenAPI (YAML)| GET | /api/v2/practices | Lista praktikerna som har aktiverat er | |
| GET | /api/v2/clients | Lista djurägare | read:contacts |
| GET | /api/v2/clients/{id} | Hämta en djurägare | read:contacts |
| GET | /api/v2/animals | Lista djur | read:contacts |
| GET | /api/v2/animals/{id} | Hämta ett djur | read:contacts |
| GET | /api/v2/articles | Lista artiklar | read:articles |
| GET | /api/v2/articles/{id} | Hämta en artikel | read:articles |
| GET | /api/v2/farm_admin_contacts | Lista personal | read:calendar |
| GET | /api/v2/farm_admin_contacts/{id} | Hämta en person i personalen | read:calendar |
| POST | /api/v2/resons | Skapa ett besök med journaltext | write:journal |
| GET | /api/v2/available_times/first | Första lediga tid för ett djurslag, hos alla era praktiker | read:availability |
| GET | /api/v2/vet_visit_types | Besökstyper ni kan boka hos praktiken | read:availability |
| GET | /api/v2/plants | Praktikens aktiva anläggningar | read:availability |
| GET | /api/v2/available_times | Lediga tider för en besökstyp hos praktiken | read:availability |
| GET | /api/v2/vet_visits | Era egna bokningar hos praktiken | write:bookings |
| POST | /api/v2/vet_visits | Boka en tid | write:bookings |
| PATCH | /api/v2/vet_visits/{id} | Uppdatera anamnesen på en egen bokning | write:bookings |
| GET | /api/v2/consumptions | Lista förbrukningar | read:economy |
| GET | /api/v2/consumptions/{id} | Hämta en förbrukning | read:economy |
| GET | /api/v2/invoices | Lista fakturor | read:economy |
| GET | /api/v2/invoices/{id} | Hämta en faktura | read:economy |
| POST | /api/v2/calls | Rapportera ett samtal | write:calls |
| POST | /api/v2/animals/{id}/notes | Skriv en journalanteckning på ett djur | write:journal |
| GET | /api/v2/breeds | Lista raser | |
| GET | /api/v2/breeds/{id} | Hämta en ras | |
| GET | /api/v2/sales_statistics | Försäljningsstatistik för en period | read:economy read:contacts |
Scribe-API
OpenAPI (YAML)| POST | /api/v2/scribe/resons | Skapa en besöksorsak utan start från besöket | write:journal |
| GET | /api/v2/scribe/clients | Sök bland praktikens djurägare | write:journal |
| GET | /api/v2/scribe/clients/{id} | Hämta en djurägare (kräver read:contacts hos praktiken) | write:journal |
| GET | /api/v2/scribe/animals | Sök bland praktikens djur | write:journal |
| GET | /api/v2/scribe/animals/{id} | Hämta ett djur (kräver read:contacts hos praktiken) | write:journal |
| GET | /api/v2/scribe/resons/{id} | Hämta besöket med djur och djurägare | read:journal write:journal |
| PATCH | /api/v2/scribe/resons/{id} | Fyll på besökets kliniska fält | write:journal |
| POST | /api/v2/scribe/resons/{id}/events | Skapa AI-anteckningen på besöket | write:journal |
| POST | /api/v2/scribe/resons/{id}/diagnoses | Lägg till en diagnos på besöket | write:journal |
| POST | /api/v2/scribe/events/{event_id}/consumptions | Lägg till en förbrukning på AI-anteckningen | write:journal |
| GET | /api/v2/scribe/articles | Lista praktikens artiklar | read:articles |