---
title: "Finalize multipart attachment uploads"
method: POST
path: "/channels/{channel_id}/attachments/complete"
tags: ["Channels", "Messages"]
---

# Finalize multipart attachment uploads

`POST /channels/{channel_id}/attachments/complete`

Finalizes one or more multipart attachment uploads. Called after all chunks have been PUT to their presigned URLs. The server lists the uploaded parts and issues S3 CompleteMultipartUpload. Returns the finalized upload keys, which can be referenced in a subsequent message create request.

## Path parameters

- `channel_id` string, snowflake, required

## Request body

- CompleteMultipartAttachmentUploadRequest
  - `uploads` CompleteMultipartAttachmentUploadItem[], required — Multipart uploads to finalize
    - `upload_filename` string, required — The upload_filename returned when the upload was planned
    - `upload_id` string, required — The upload_id returned when the upload was planned

## Response `200`

Success

- CompleteMultipartAttachmentUploadResponse
  - `uploads` CompleteMultipartAttachmentUploadResult[], required — Finalized upload keys
    - `upload_filename` string, required — Finalized upload key

## Other responses

- `400` — Bad Request - The request was malformed or contained invalid data
- `401` — Unauthorized - Authentication is required or the token is invalid
- `403` — Forbidden - You do not have permission to perform this action
- `429` — Too Many Requests - You are being rate limited
- `500` — Internal Server Error - An unexpected error occurred

## Changes

- **2026-09-03** `fa36b1b48ca5` — 20 info
  - removed the `INVALID_PACK_TYPE` enum value from the `code` response property for the response status `400`
  - removed the `INVALID_PACK_TYPE` enum value from the `code` response property for the response status `401`
  - removed the `INVALID_PACK_TYPE` enum value from the `code` response property for the response status `403`
  - removed the `INVALID_PACK_TYPE` enum value from the `code` response property for the response status `500`
  - …16 more

[Change history](https://skmtc.dev/fluxer/apis/fluxer-api/changes/channels/:channel_id/attachments/complete/post.md)

---

[API](https://skmtc.dev/fluxer/apis/fluxer-api.md) · [All operations](https://skmtc.dev/fluxer/apis/fluxer-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/fluxer/fluxer-api/revisions/f6d51a9b1034/schema)
