API reference · Data export
Guides:Export clinical data
Presigned download URLs for a consultation's retained artifacts: audio recording, transcription, clinical note, structured JSON document, owner communication, and referral letter. Each URL is time-limited; fields are null when the corresponding artifact does not exist.
structuredDocumentstringrequirednullablePresigned GET URL for the separately stored structured JSON document, or null if none exists. The payload matches the JSON template used to generate it; it is not the rendered clinical note.
communicationstringrequirednullablePresigned GET URL for the owner communication in its stored format, or null if none exists.
referralstringrequirednullablePresigned GET URL for the referral letter in its stored format, or null if none exists.
consultationIdstringrequiredThe consultation these artifacts belong to.
workspaceIdstringrequiredThe workspace that owns the consultation.
externalIdstringrequirednullableExternal ID from an integrated system, or null if the consultation is not linked to one.
expiresInSecondsnumberrequiredHow long each presigned download URL remains valid, in seconds.
expiresAtstringrequiredISO-8601 timestamp at which the download URLs expire. Provided for convenience so clients can display a countdown without computing it themselves.
audioRecordingstringrequirednullablePresigned GET URL for the full consultation audio: every uploaded recording joined into one 16 kHz mono WAV file, silence included. null if no audio exists (for example a text-only consultation, or audio removed by the clinic's audio-retention policy). Creator-only playback settings do not apply to authorized admin exports.
transcriptionstringrequirednullablePresigned GET URL for the full transcript as a UTF-8 plain-text file (the same text as GET .../transcription), or null if nothing has been transcribed yet.
clinicalNotestringrequirednullablePresigned GET URL for the stored clinical note (HTML, or JSON for structured notes), or null if no note has been saved yet.
{
"structuredDocument": null,
"communication": "https://storage.example.com/records/demo-north-clinic/communication/dfd6e768-51dd-5fcb-a786-c6dffe511d5f?X-Amz-Expires=3600&X-Amz-Signature=…",
"referral": "https://storage.example.com/records/demo-north-clinic/referral/dfd6e768-51dd-5fcb-a786-c6dffe511d5f?X-Amz-Expires=3600&X-Amz-Signature=…",
"consultationId": "dfd6e768-51dd-5fcb-a786-c6dffe511d5f",
"workspaceId": "demo-north-clinic",
"externalId": null,
"expiresInSeconds": 3600,
"expiresAt": "2026-10-04T17:07:21.142Z",
"audioRecording": "https://storage.example.com/fullRecordings/demo-north-clinic/dfd6e768-51dd-5fcb-a786-c6dffe511d5f?X-Amz-Expires=3600&X-Amz-Signature=…",
"transcription": "https://storage.example.com/transcriptions/demo-north-clinic/dfd6e768-51dd-5fcb-a786-c6dffe511d5f?X-Amz-Expires=3600&X-Amz-Signature=…",
"clinicalNote": "https://storage.example.com/records/demo-north-clinic/clinical-note/dfd6e768-51dd-5fcb-a786-c6dffe511d5f?X-Amz-Expires=3600&X-Amz-Signature=…"
}GET/workspaces/{workspaceId}/consultations/{consultationId}/data-export
Returns presigned download URLs for the full audio recording, transcription, clinical note, structured JSON document, owner communication, and referral letter of a consultation. Each field is null when the underlying artifact does not yet exist (for example if the clinical note has not been generated). Creator-only playback settings do not apply to this authorized admin export.
Workspace admin only (direct workspace admins and organization admins); other members get 403. Archived or deleted consultations return 403 even though they appear in GET .../data-export/consultations. URLs are valid for 1 hour (expiresAt); call again for fresh ones. Read-only: nothing is generated or changed.
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.
structuredDocumentstringrequirednullablePresigned GET URL for the separately stored structured JSON document, or null if none exists. The payload matches the JSON template used to generate it; it is not the rendered clinical note.
communicationstringrequirednullablePresigned GET URL for the owner communication in its stored format, or null if none exists.
referralstringrequirednullablePresigned GET URL for the referral letter in its stored format, or null if none exists.
consultationIdstringrequiredThe consultation these artifacts belong to.
workspaceIdstringrequiredThe workspace that owns the consultation.
externalIdstringrequirednullableExternal ID from an integrated system, or null if the consultation is not linked to one.
expiresInSecondsnumberrequiredHow long each presigned download URL remains valid, in seconds.
expiresAtstringrequiredISO-8601 timestamp at which the download URLs expire. Provided for convenience so clients can display a countdown without computing it themselves.
audioRecordingstringrequirednullablePresigned GET URL for the full consultation audio: every uploaded recording joined into one 16 kHz mono WAV file, silence included. null if no audio exists (for example a text-only consultation, or audio removed by the clinic's audio-retention policy). Creator-only playback settings do not apply to authorized admin exports.
transcriptionstringrequirednullablePresigned GET URL for the full transcript as a UTF-8 plain-text file (the same text as GET .../transcription), or null if nothing has been transcribed yet.
clinicalNotestringrequirednullablePresigned GET URL for the stored clinical note (HTML, or JSON for structured notes), or null if no note has been saved yet.
curl "https://vetnio.com/api/v2/workspaces/demo-north-clinic/consultations/dfd6e768-51dd-5fcb-a786-c6dffe511d5f/data-export" \
-H "Authorization: Bearer $VETNIO_API_KEY"{
"structuredDocument": null,
"communication": "https://storage.example.com/records/demo-north-clinic/communication/dfd6e768-51dd-5fcb-a786-c6dffe511d5f?X-Amz-Expires=3600&X-Amz-Signature=…",
"referral": "https://storage.example.com/records/demo-north-clinic/referral/dfd6e768-51dd-5fcb-a786-c6dffe511d5f?X-Amz-Expires=3600&X-Amz-Signature=…",
"consultationId": "dfd6e768-51dd-5fcb-a786-c6dffe511d5f",
"workspaceId": "demo-north-clinic",
"externalId": null,
"expiresInSeconds": 3600,
"expiresAt": "2026-10-04T17:07:21.142Z",
"audioRecording": "https://storage.example.com/fullRecordings/demo-north-clinic/dfd6e768-51dd-5fcb-a786-c6dffe511d5f?X-Amz-Expires=3600&X-Amz-Signature=…",
"transcription": "https://storage.example.com/transcriptions/demo-north-clinic/dfd6e768-51dd-5fcb-a786-c6dffe511d5f?X-Amz-Expires=3600&X-Amz-Signature=…",
"clinicalNote": "https://storage.example.com/records/demo-north-clinic/clinical-note/dfd6e768-51dd-5fcb-a786-c6dffe511d5f?X-Amz-Expires=3600&X-Amz-Signature=…"
}GET/workspaces/{workspaceId}/data-export/consultations
Paginated list of all consultations in the workspace, regardless of creator, including archived consultations and consultations deleted in the Vetnio app (rows do not say which). Each row includes the selected clinical note template ID (clinicalNoteTemplateId, or null if none is selected) and presigned download URLs for the audio recording, transcription, clinical note, structured JSON document, owner communication, and referral letter (or null when the artifact does not exist). Workspace admin only.
Creator-only playback settings do not apply to this authorized admin export.
Optional createdAtFrom (inclusive) and createdAtBefore (exclusive) filter the consultation creation timestamp, not the last edit or recording time. Supply ISO-8601 timestamps with Z or an explicit offset. Filters apply before pagination and to the total count. Results are ordered by createdAt descending, then ID descending. Omit either bound for an open-ended range.
Pair with GET .../data-export for single-consultation export, or use this endpoint to build a bulk export UI. URLs expire after 1 hour; re-fetch the page if they go stale. Each row checks storage for six artifacts, so larger pages take noticeably longer.
AcceptsPersonal key
workspaceIdstringrequiredWorkspace to list consultations for.
pageintegeroptionalPage to return, starting at 1. Defaults to 1. Pages past the end return an empty consultations array.
Default 1 · ≥ 1 · ≤ 9007199254740991
pageSizeintegeroptionalConsultations per page, 1 to 50. Defaults to 10. Capped at 50 because each row includes presigned download URLs for six artifacts.
Default 10 · ≥ 1 · ≤ 50
searchQuerystringoptionalCase-insensitive substring filter matched against the consultation name, the plain text of its clinical note, its externalId, and the linked patient's name or identifier. Surrounding whitespace is ignored; omit for no filter.
createdAtFromstring (date-time)optionalInclusive lower bound on the consultation creation timestamp (not last edit or recording time). ISO-8601 with Z or an explicit timezone offset. Omit for no lower bound.
matches `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$`
createdAtBeforestring (date-time)optionalExclusive upper bound on the consultation creation timestamp. ISO-8601 with Z or an explicit timezone offset. Must be later than createdAtFrom. Omit for no upper bound.
matches `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$`
consultationsarray of objectsrequiredConsultations on the current page, each with presigned download URLs for its artifacts.
structuredDocumentstringrequirednullablePresigned GET URL for the separately stored structured JSON document, or null if none exists. The payload matches the JSON template used to generate it; it is not the rendered clinical note.
communicationstringrequirednullablePresigned GET URL for the owner communication in its stored format, or null if none exists.
referralstringrequirednullablePresigned GET URL for the referral letter in its stored format, or null if none exists.
idstringrequiredConsultation ID (UUID).
namestringrequiredDisplay name of the consultation; may be an empty string.
creatorIdstringrequiredUser ID of the person who created the consultation.
createdAtstringrequiredWhen the consultation was created, as an ISO-8601 UTC timestamp. The createdAtFrom/createdAtBefore filters and the sort order use this value.
externalIdstringrequirednullableIdentifier of the matching visit in the clinic's practice-management system, or null if the consultation is not linked to one.
clinicalNoteTemplateIdstringrequirednullableID of the clinical note template selected for the consultation, or null if none is selected.
audioRecordingstringrequirednullablePresigned GET URL for the full consultation audio (all uploaded recordings joined into one 16 kHz mono WAV file), or null if no audio exists or it was removed by the clinic's audio-retention policy. Creator-only playback settings do not apply to authorized admin exports.
transcriptionstringrequirednullablePresigned GET URL for the full transcript as a UTF-8 plain-text file, or null if nothing has been transcribed yet.
clinicalNotestringrequirednullablePresigned GET URL for the stored clinical note (HTML, or JSON for structured notes), or null if no note has been saved yet.
countnumberrequiredTotal consultations matching the filters across all pages, including archived and deleted ones.
pagenumberrequiredCurrent page number (1-indexed).
pageSizenumberrequiredConsultations per page.
totalPagesnumberrequiredTotal pages given the current page size.
expiresInSecondsnumberrequiredHow long each presigned URL remains valid, in seconds.
expiresAtstringrequiredISO-8601 timestamp at which the presigned URLs in this response expire.
curl "https://vetnio.com/api/v2/workspaces/demo-north-clinic/data-export/consultations?page=1&pageSize=2&createdAtFrom=2026-09-01T00%3A00%3A00Z&createdAtBefore=2026-10-01T00%3A00%3A00Z" \
-H "Authorization: Bearer $VETNIO_API_KEY"{
"consultations": [
{
"structuredDocument": null,
"communication": "https://storage.example.com/records/demo-north-clinic/communication/ac4b9536-5ca9-5cf8-a612-d4660b314b22?X-Amz-Expires=3600&X-Amz-Signature=…",
"referral": "https://storage.example.com/records/demo-north-clinic/referral/ac4b9536-5ca9-5cf8-a612-d4660b314b22?X-Amz-Expires=3600&X-Amz-Signature=…",
"id": "ac4b9536-5ca9-5cf8-a612-d4660b314b22",
"name": "DEMO Pip - routine weight review",
"creatorId": "2aed2b6f-c9ca-559f-a22c-4c76861e4e07",
"createdAt": "2026-09-08T11:00:00.000Z",
"externalId": null,
"clinicalNoteTemplateId": "7ce0fa1b-777b-55f9-a58b-7fcabc410504",
"audioRecording": "https://storage.example.com/fullRecordings/demo-north-clinic/ac4b9536-5ca9-5cf8-a612-d4660b314b22?X-Amz-Expires=3600&X-Amz-Signature=…",
"transcription": "https://storage.example.com/transcriptions/demo-north-clinic/ac4b9536-5ca9-5cf8-a612-d4660b314b22?X-Amz-Expires=3600&X-Amz-Signature=…",
"clinicalNote": "https://storage.example.com/records/demo-north-clinic/clinical-note/ac4b9536-5ca9-5cf8-a612-d4660b314b22?X-Amz-Expires=3600&X-Amz-Signature=…"
},
{
"structuredDocument": null,
"communication": "https://storage.example.com/records/demo-north-clinic/communication/5291aa05-1700-53b2-a57d-a2803e4129ba?X-Amz-Expires=3600&X-Amz-Signature=…",
"referral": "https://storage.example.com/records/demo-north-clinic/referral/5291aa05-1700-53b2-a57d-a2803e4129ba?X-Amz-Expires=3600&X-Amz-Signature=…",
"id": "5291aa05-1700-53b2-a57d-a2803e4129ba",
"name": "DEMO Luna - ear check",
"creatorId": "09f50862-b169-5988-a089-838bb7b579a2",
"createdAt": "2026-09-08T10:00:00.000Z",
"externalId": null,
"clinicalNoteTemplateId": "7ce0fa1b-777b-55f9-a58b-7fcabc410504",
"audioRecording": "https://storage.example.com/fullRecordings/demo-north-clinic/5291aa05-1700-53b2-a57d-a2803e4129ba?X-Amz-Expires=3600&X-Amz-Signature=…",
"transcription": "https://storage.example.com/transcriptions/demo-north-clinic/5291aa05-1700-53b2-a57d-a2803e4129ba?X-Amz-Expires=3600&X-Amz-Signature=…",
"clinicalNote": "https://storage.example.com/records/demo-north-clinic/clinical-note/5291aa05-1700-53b2-a57d-a2803e4129ba?X-Amz-Expires=3600&X-Amz-Signature=…"
}
],
"count": 3,
"page": 1,
"pageSize": 2,
"totalPages": 2,
"expiresInSeconds": 3600,
"expiresAt": "2026-10-04T17:07:21.183Z"
}