---
title: "Get Sms Attachment Upload Url"
method: POST
path: "/conversations/{conversation_id}/upload-url"
tags: ["conversations"]
---

# Get Sms Attachment Upload Url

`POST /conversations/{conversation_id}/upload-url`

Get presigned S3 upload URL for SMS attachment.

This endpoint:
1. Verifies conversation access
2. Generates S3 key for the attachment
3. Returns presigned upload URL + public URL for display

Flow:
1. Frontend calls this to get upload URL
2. Frontend uploads file directly to S3 using the presigned URL
3. Frontend sends SMS with the public_url in media_urls array

## Path parameters

- `conversation_id` string, uuid, required

## Request body

- SMSAttachmentUploadRequest — Request model for getting presigned URL for SMS attachment upload.
  - `filename` string, required
  - `content_type` string, nullable

## Response `200`

Successful Response

- SMSAttachmentUploadResponse — Response model for SMS attachment upload URL.
  - `upload_url` string, required
  - `s3_key` string, required
  - `public_url` string, required

## Other responses

- `404` — Not found
- `422` — Validation Error

---

[API](https://skmtc.dev/noso/apis/crucible-backend-api.md) · [All operations](https://skmtc.dev/noso/apis/crucible-backend-api/llms.txt) · [OpenAPI document](https://skmtc.dev/noso/apis/crucible-backend-api/revisions/94953390bbd8?raw)
