Skip to content

Profile Picture & Logos

POST /v1/profile-picture

Required role: Authenticated user (any).

Upload a profile picture for the current user. The image is resized and stored as a 256×256 WebP file.

Request: multipart/form-data

FieldTypeDescription
fileFileImage file. Accepted formats: JPEG, PNG, WebP, GIF. Maximum size: 2 MB.

On success, the user’s image field is updated to the URL of the stored file.


DELETE /v1/profile-picture

Required role: Authenticated user (any).

Deletes the stored avatar file and clears the user’s image field. Returns 204 No Content.


PUT /v1/profile-picture/gravatar

Required role: Authenticated user (any).

Sets the user’s image field to their Gravatar URL (derived from their email address). No file is uploaded or stored.


POST /v1/organizations/:orgId/logo

Required role: Admin or owner.

Upload a logo for the organization. The image is resized and stored as a 256×256 WebP file.

Request: multipart/form-data

FieldTypeDescription
fileFileImage file. Accepted formats: JPEG, PNG, WebP, GIF. Maximum size: 2 MB.

DELETE /v1/organizations/:orgId/logo

Required role: Admin or owner.

Deletes the stored logo file and clears the organization’s logo field. Returns 204 No Content.


Uploaded files are served as static assets:

PathDescription
GET /uploads/avatars/:filename.webpUser profile picture.
GET /uploads/org-logos/:filename.webpOrganization logo.

These endpoints require no authentication.