---
title: "Confirm a completed R2 profile image upload and save to user metadata"
method: POST
path: "/user/confirm-profile-image-upload"
tags: ["user"]
---

# Confirm a completed R2 profile image upload and save to user metadata

`POST /user/confirm-profile-image-upload`

## Request

- Base URL: `https://api.focusbear.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.focusbear.io/user/confirm-profile-image-upload`
- Auth: HTTP bearer

After uploading a file to the presigned R2 URL, call this endpoint with the public URL to validate the upload (size, MIME type) and atomically save it as the profile image.

## Request body

- ConfirmProfileImageUploadDto
  - `publicUrl` string, uri, required: The public R2 URL returned by GET /user/profile-image-upload-url. Must be a valid URL pointing to Focus Bear R2 storage.

## Response `201`

---

[API](https://skmtc.dev/focusbear/apis/focusbear-api.md) - [All operations](https://skmtc.dev/focusbear/apis/focusbear-api/llms.txt) - [OpenAPI document](https://skmtc.dev/focusbear/apis/focusbear-api/revisions/3a83a3b9a811?raw)
