---
title: "Export a workspace's meeting templates"
method: GET
path: "/workspaces/{workspaceId}/data-export/meeting-templates"
tags: ["data-export", "customer-content"]
---

# Export a workspace's meeting templates

`GET /workspaces/{workspaceId}/data-export/meeting-templates`

## Request

- Base URL: `https://vetnio.com/api/v2`
- URL: `https://vetnio.com/api/v2/workspaces/{workspaceId}/data-export/meeting-templates`
- Auth: HTTP bearer

Lists customer-owned templates for export, one page at a time, with metadata and a short-lived download link for each stored body. Pages are ordered by ascending template ID: pass `nextCursor` back as `cursor` until it is `null`. Download links expire after one hour (`expiresAt`); request the page again for fresh links. Vetnio's read-only default catalog templates are excluded; workspace-owned copies, including managed ones, are included. Read-only. Covers the workspace's meeting and HR templates, with their imported instructions where present. Requires admin rights in the workspace (workspace admin or superadmin, or an admin of an organization the clinic belongs to). Accepts a browser session or a personal API key; organization and workspace API keys (`sk_org_…`, `sk_ws_…`) get 403.

## Path parameters

- `workspaceId` string, required: Identifier of the workspace (clinic) to export. The caller must be an admin of it, directly or as an admin of its organization.

## Query parameters

- `cursor` string: Pagination cursor: the `nextCursor` value from the previous page. Omit for the first page, and keep the same owner and template category while paging. Items with an ID greater than the cursor are returned.
- `limit` integer: Maximum number of templates per page, 1-50.

## Response `200`

Successful response

- object: One page of the workspace's meeting templates with download links.
  - `nextCursor` string, nullable, required: Pass this value as `cursor` to fetch the next page. `null` when this is the last page.
  - `expiresInSeconds` number, required: Lifetime of every `contentUrl` on this page, in seconds.
  - `expiresAt` string, date-time, required: When the `contentUrl` links on this page stop working (ISO-8601 UTC). Download before then. Expiry does not affect the stored content.
  - `items` object[], required: Meeting templates on this page, ordered by ascending ID.
    - `id` string, required: Meeting template ID.
    - `workspaceId` string, required: ID of the workspace (clinic) that owns the template.
    - `name` string, required: Template name shown in the app.
    - `creatorId` string, required: User ID (UUID) of the person who created the template.
    - `createdAt` string, date-time, required: When the template was created (ISO-8601 UTC).
    - `artifact` object, nullable, required: A downloadable stored body of a template: a short-lived link plus its storage metadata.
      - `contentUrl` string, required: Signed HTTPS URL that downloads the stored body without further authentication. It expires at the page's `expiresAt` (one hour); fetch the page again for a fresh link. Treat it as a secret.
      - `currentVersionId` string, nullable, required: The downloaded version. Null means storage supplied no immutable version ID, including the legacy null version, so the URL follows the current object.
      - `contentType` string, nullable, required: Media type of the stored body as recorded by storage, for example `text/html` or `application/json`, or null if none was recorded.
      - `size` number, nullable, required: Size of the stored body in bytes, or null if unknown.
      - `lastModified` string, date-time, nullable, required: When the current body was last written (ISO-8601 UTC), or null if unknown.
    - `instructionsArtifact` object, nullable, required: A downloadable stored body of a template: a short-lived link plus its storage metadata.
      - `contentUrl` string, required: Signed HTTPS URL that downloads the stored body without further authentication. It expires at the page's `expiresAt` (one hour); fetch the page again for a fresh link. Treat it as a secret.
      - `currentVersionId` string, nullable, required: The downloaded version. Null means storage supplied no immutable version ID, including the legacy null version, so the URL follows the current object.
      - `contentType` string, nullable, required: Media type of the stored body as recorded by storage, for example `text/html` or `application/json`, or null if none was recorded.
      - `size` number, nullable, required: Size of the stored body in bytes, or null if unknown.
      - `lastModified` string, date-time, nullable, required: When the current body was last written (ISO-8601 UTC), or null if unknown.

## Other responses

- `400`: Invalid input data
- `401`: Authorization not provided
- `403`: Insufficient access
- `404`: Not found
- `500`: Internal server error

---

[API](https://skmtc.dev/vetnio/apis/vetnio-api.md) - [All operations](https://skmtc.dev/vetnio/apis/vetnio-api/llms.txt) - [OpenAPI document](https://skmtc.dev/vetnio/apis/vetnio-api/revisions/d004afd5617d?raw)
