---
title: "V1 Attachment Upload"
method: POST
path: "/v1/conversations/{conversation_id}/attachments"
tags: ["public-api"]
---

# V1 Attachment Upload

`POST /v1/conversations/{conversation_id}/attachments`

## Request

- Base URL: `https://api.palisade.run` (the document declares no server; this is the origin it was published from)
- URL: `https://api.palisade.run/v1/conversations/{conversation_id}/attachments`
- Auth: none declared

Guest uploads an image from the widget (multipart ``file``).

Stored in the analytics DB; served publicly from ``/api/attachments/{id}``
(unguessable id) so the link works from the transcript, Slack, and Avochato
notes. The widget puts ``[Guest attached a photo: <url>]`` into the
conversation history so the assistant and any human agent know it exists.

## Path parameters

- `conversation_id` string, required

## Query parameters

- `k` string, nullable

## Headers

- `authorization` string, nullable
- `x-api-key` string, nullable

## Request body `multipart/form-data`

- BodyV1AttachmentUploadV1ConversationsConversationIdAttachmentsPost
  - `file` string, binary, required

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/palisade-run/apis/twiddy-chatbot-api.md) - [All operations](https://skmtc.dev/palisade-run/apis/twiddy-chatbot-api/llms.txt) - [OpenAPI document](https://skmtc.dev/palisade-run/apis/twiddy-chatbot-api/revisions/80ab7d8068c0?raw)
