A vet picks today's appointment in PawfectNotes, records the visit, and the finished note lands in the patient record in your practice management system. No copy and paste. It takes three API calls.
When a practice turns on PawfectNotes, your PIMS registers the practice's API key with PawfectNotes.
PIMS → PawfectNotesPawfectNotes pulls the day's appointments so the vet can select the visit before recording.
PawfectNotes → PIMSWhen the vet finishes the note, PawfectNotes writes it to the appointment, filling in the SOAP sections.
PawfectNotes → PIMSThe first call is an existing PawfectNotes endpoint that your PIMS calls. The other two are endpoints your PIMS builds so PawfectNotes can read appointments and write notes.
| Step | Called by | Method and path | Status |
|---|---|---|---|
| 1. Connect a practice | PIMS | PUTon PawfectNotes/v1/integration/PIMS | Existing |
| 2. Read appointments | PawfectNotes | GETon the PIMS/v1/appointments?date=YYYY-MM-DD | Proposed |
| 3. Write a note | PawfectNotes | POSTon the PIMS/v1/appointments/{appointmentId}/notes | Proposed |
| 3b. Update a note | PawfectNotes | PUTon the PIMS/v1/appointments/{appointmentId}/notes/{noteId} | Nice to have |
Paths and field names for steps 2 and 3 are suggestions. Use whatever shape fits your API.
Your PIMS sends this request when a practice turns on PawfectNotes. The API key must allow reading and writing that practice's data.
PUT https://api.pawfectnotes.com/v1/integration/PIMS
Content-Type: application/json
{
"serviceKey": "[SHARED SECRET FROM PAWFECTNOTES]",
"emailAddress": "vet@clinic.com",
"accountId": "[PRACTICE ID IN THE PIMS]",
"apiKey": "[READ/WRITE KEY FOR THIS PRACTICE]",
"apiURL": "https://[PIMS API BASE URL]"
}emailAddress is the vet's PawfectNotes login, which may differ from their PIMS email.PawfectNotes pulls the day's appointments so the vet can pick the visit before recording.
GET https://[PIMS API BASE URL]/v1/appointments?date=2026-10-16
Authorization: Bearer [API KEY][
{
"appointmentId": "a123",
"start": "2026-10-16T09:30:00Z",
"status": "checked_in",
"vet": { "id": "v1", "name": "Dr. Smith" },
"patient": {
"id": "p456",
"name": "Bella",
"species": "Canine",
"breed": "Labrador",
"dateOfBirth": "2019-04-02",
"sex": "FS",
"weightKg": 28.4
},
"client": { "id": "c789", "firstName": "Jane", "lastName": "Doe" }
}
]When the vet sends a finished note, PawfectNotes writes it to the appointment, ideally into the SOAP sections.
POST https://[PIMS API BASE URL]/v1/appointments/a123/notes
Authorization: Bearer [API KEY]
Content-Type: application/json
{
"patientId": "p456",
"vetId": "v1",
"subjective": "...",
"objective": "...",
"assessment": "...",
"plan": "..."
}{ "noteId": "n001" }Optional, to update a note after it's first written:
PUT https://[PIMS API BASE URL]/v1/appointments/a123/notes/n001PawfectNotes authenticates with the practice's API key as a Bearer token.
Your PIMS authenticates with the shared service key sent in the connect request.
Keys should be read/write for one practice only, and stored securely on each side.
Contact the PawfectNotes integration team to get the shared service key, or to talk through the shape of your PIMS endpoints.
Looking for the systems already connected? See all integrations.