vetsgpt
signed-url

Get a VetsGPT attachment upload URL

Issues a presigned URL for uploading one file to an existing chat the caller owns or can contribute to. Steps:

  1. Call this endpoint for each file.
  2. PUT the raw bytes to chatAttachmentUploadUrl within 24 hours, with the file's real Content-Type (for example image/jpeg or application/pdf).
  3. Pass the key in imageKeys or pdfKeys on the ask endpoint for the same chat.

VetsGPT can read images, PDFs, plain text, CSV, Word (.docx) and Excel files; other types are skipped without an error. No size limit is enforced on the upload (the web app caps PDFs at 50 MB), and at most 100,000 extracted characters per file are used.

post/workspaces/{workspaceId}/vetsgpt/chats/{chatId}/attachments/upload-url

Request

  • Base URL
    https://vetnio.com/api/v2
  • URL
    https://vetnio.com/api/v2/workspaces/{workspaceId}/vetsgpt/chats/{chatId}/attachments/upload-url
  • Auth
    HTTP bearer

Path parameters

workspaceIdstring required

Identifier of the workspace (clinic). The caller must be a member, and VetsGPT must be enabled for them in this workspace.

Example:furunculotic-loud-chihuahua
chatIdstring required

Identifier of a VetsGPT chat owned by or explicitly shared with the caller. Unshared chats behave as if they did not exist.

Example:3f9c2a71-5b8e-4d1a-9c47-0e6b2d8f1a53

Request body

filenamestring

Original file name. Shown to VetsGPT as the file's label and returned in the messages endpoint's data URIs. When omitted, the generated key is used instead.

Example request

{
  "filename": "bella_bloodwork_2026-10-01.pdf"
}

Response

A signed upload URL and attachment key.

chatAttachmentUploadUrlstring uri required

Presigned S3 URL, valid for 24 hours. PUT the raw file bytes to it with a Content-Type header matching the file (for example application/pdf or image/jpeg).

keystring required

Attachment key (chats/<workspaceId>/<chatId>/attachments/<uuid>). After the upload, pass it in imageKeys or pdfKeys when you call the ask endpoint for the same chat. Keys are only valid in the chat they were issued for.

Example response

{
  "chatAttachmentUploadUrl": "https://vetnio-bucket.s3.eu-central-1.amazonaws.com/chats/furunculotic-loud-chihuahua/3f9c2a71-.../attachments/6a1e0f3c-...?X-Amz-Signature=...",
  "key": "chats/furunculotic-loud-chihuahua/3f9c2a71-5b8e-4d1a-9c47-0e6b2d8f1a53/attachments/6a1e0f3c-2b9d-4c7e-8f5a-1d3b9e7c2a40"
}

Changes

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