---
title: "Finalize image upload"
method: POST
path: "/task/image-upload/{id}/finalize"
tags: ["Tasks"]
---

# Finalize image upload

`POST /task/image-upload/{id}/finalize`

Record an uploaded image as a private asset and return the URL to reference it by.

## Path parameters

- `id` string, required

## Request body

- object
  - `key` string, required — The key returned when the URL was issued.
  - `filename` string, required
  - `contentType` string, required
  - `size` number, required
  - `surface` 'description' | 'comment', required — Where the image is used, which decides how it is scoped.

## Response `200`

The stored asset

- TaskImageAsset
  - `id` string, required
  - `url` string, required — Where the stored image can be read back from.

## Other responses

- `400` — Invalid upload, or the key does not belong to this task
- `401` — Missing or invalid credentials
- `403` — No workspace access, or missing task:update permission
- `404` — Task not found

## Changes

- **2026-08-24** `08bbb5bedb5d` — 6 info
  - added the non-success response with the status `400`
  - added the non-success response with the status `401`
  - added the non-success response with the status `403`
  - added the non-success response with the status `404`
  - …2 more
- **2026-07-11** `32cece1ebe43` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/usekaneo/apis/kaneo-api/changes/task/image-upload/:id/finalize/post.md)

---

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