---
title: "Upload profile photo"
method: POST
path: "/users/{id}/profile-photo"
tags: ["Users"]
---

# Upload profile photo

`POST /users/{id}/profile-photo`

Uploads a profile photo for the specified user. The file is stored in the
tenant-scoped files table. If the user already has a profile photo, the old
one is deleted and replaced. Uses multer for multipart file handling.

## Path parameters

- `id` integer, required

## Response `200`

Profile photo uploaded

- object
  - `message` string
  - `data` object
    - `profile_photo_id` integer — ID of the new file record

## Other responses

- `400` — No file provided
- `403` — Access denied (wrong organization)
- `500` — Internal server error

## Changes

- **2026-07-13** `d86d0bf8bebe` — 3 info
  - api operation id `uploadUserProfilePhoto` was added
  - api tag `Users` added
  - api tag `Users - Profile Photo` removed
- **2026-07-13** `655215fe8c81` — 3 info
  - api operation id `uploadUserProfilePhoto` removed and replaced with ``
  - api tag `Users - Profile Photo` added
  - api tag `Users` removed
- **2026-06-22** `5878ba786a89` — 3 info
  - api operation id `uploadUserProfilePhoto` was added
  - api tag `Users` added
  - api tag `Users - Profile Photo` removed
- **2026-04-21** `55cdc040840c` — 3 breaking, 8 info
  - request body became required
  - removed the media type `application/json` from the request body
  - removed the success response with the status `201`
  - api operation id `uploadUserProfilePhoto` removed and replaced with ``
  - …7 more
- **2026-04-05** `c419b1e72a65` — 1 info
  - endpoint added

[Full history](https://skmtc.dev/verifywise-ai/apis/verifywise-api/changes/users/:id/profile-photo/post.md)

---

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