consultations

Get consultation details

Returns the status of one consultation: name, uploaded audio duration, transcription state and document-generation flags. This is the endpoint to poll while waiting for work to finish: after POST .../transcriptions/start, poll until transcriptionStatus is completed or failed; after requesting a clinical note, poll until isGeneratingClinicalNote is false.

Any member of the workspace can read any consultation in it, including consultations created by colleagues and archived consultations. Returns 404 if the consultation does not exist in this workspace. Fields such as externalId, template IDs and the linked patient are not included here; they are returned by GET .../consultations.

get/workspaces/{workspaceId}/consultations/{consultationId}

Request

  • Base URL
    https://vetnio.com/api/v2
  • URL
    https://vetnio.com/api/v2/workspaces/{workspaceId}/consultations/{consultationId}
  • Auth
    HTTP bearer

Path parameters

workspaceIdstring required

Identifier 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.

Example:furunculotic-loud-chihuahua
consultationIdstring required

Identifier of the consultation (UUID), as returned when it was created or by GET /workspaces/{workspaceId}/consultations. It must belong to the clinic in workspaceId.

Example:a1b2c3d4-e5f6-7890-abcd-ef1234567890

Response

Consultation status fields.

idstring required

Consultation ID (UUID), generated by Vetnio when the consultation is created.

namestring required

Display name of the consultation. Free text set at creation or via PATCH .../consultations/{consultationId}; may be an empty string.

createdAtstring required

When the consultation was created, as an ISO-8601 UTC timestamp.

recordingDurationInMillisecondsnumber required

Total length of all audio uploaded to the consultation, in milliseconds, including silence. Vetnio's audio processor updates it shortly after each upload; it is 0 until the first upload has been processed.

recordingDurationInMillisecondsExcludingSilencenumber nullable required

Same as recordingDurationInMilliseconds, but with silent stretches (quieter than -40 dB) removed. 0 until the first upload has been processed.

isGeneratingClinicalNoteboolean required

true while Vetnio is generating the clinical note for this consultation; set back to false when generation ends. Poll it to detect when a requested note is ready.

isGeneratingCommunicationboolean required

true while Vetnio is generating the owner communication (the client-facing summary) for this consultation; set back to false when generation ends.

isReadyForGenerationboolean required

true when document generation can start: no uploaded recording is still waiting for transcription, and the consultation has transcript text, a text partial transcription or an analyzed uploaded file. Recordings that failed permanently do not block readiness. Always false for archived consultations.

clinicalNoteJsonTemplateIdstring nullable required

ID of the JSON (structured document) template bound to this consultation's clinical note, or null if none is bound. Set automatically when the selected clinical note template is linked to a JSON template; fetch that template's schema to render a structured note.

linkEntryIdinteger nullable required

ID of the journal entry this consultation was exported to in the Link practice-management system, or null if it has not been exported to Link. Only used by clinics with the Link integration.

linkJournalIdinteger nullable required

ID of the Link journal (the animal's journal) that holds linkEntryId, or null. Combine with linkEntryId to build a deep link into Link.

transcriptionStatus'idle' | 'processing' | 'completed' | 'failed' required

Overall state of audio transcription for the consultation. Poll this after POST .../transcriptions/start; stop polling on completed or failed.

  • idle — no audio recording has been uploaded yet (text added as a partial transcription does not change this).
  • processing — at least one uploaded recording is not transcribed yet. This includes recordings uploaded before transcription was started: the status does not advance until POST .../transcriptions/start (or a transcript wait) runs.
  • completed — every uploaded recording has been transcribed (recordings shorter than one second count as transcribed with no text).
  • failed — nothing is pending, but at least one recording failed permanently; see transcriptionFailureReason. Text from the other recordings is still in the transcript.
transcriptionFailureReason'unreadable_recording' | 'processing_failed' | 'transcription_failed' nullable required

Why a recording failed permanently, when transcriptionStatus is failed; otherwise null.

  • unreadable_recording — the uploaded file is empty or is not decodable audio.
  • processing_failed — audio processing kept failing and the retries are used up.
  • transcription_failed — the speech-to-text providers rejected the audio.

Example response

{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "name": "Bella - annual checkup",
  "createdAt": "2026-09-14T08:30:00.000Z",
  "recordingDurationInMilliseconds": 754000,
  "recordingDurationInMillisecondsExcludingSilence": 612400,
  "isReadyForGeneration": true,
  "transcriptionStatus": "completed"
}

Changes

No recorded changes to this operation across all 1 revision of this API.