---
title: "Upload a profile image"
method: POST
path: "/dashboards/{dashboardId}/profile-image"
tags: ["Dashboards"]
---

# Upload a profile image

`POST /dashboards/{dashboardId}/profile-image`

## Request

- Base URL: `https://api.speakai.co/v1`
- URL: `https://api.speakai.co/v1/dashboards/{dashboardId}/profile-image`
- Auth: API key in header `x-speakai-key` and API key in header `x-access-token`

Upload one image for a dashboard profile, then put the returned `imageKey` on the profile entry in `settings.profiles` and save the dashboard with `PUT /dashboards/{dashboardId}`. Uploading alone does not change the dashboard.

Send the file as multipart form data, for example `-F 'image=@speaker.png'`. Send exactly one JPEG, PNG, WebP or GIF image of up to 2 MB. The server checks the file's content, not its name or declared type.

Only people who can edit the dashboard can upload. Each user can upload up to 30 images in 10 minutes.

#### Errors

- `400` when there is not exactly one file, or the file is not a JPEG, PNG, WebP or GIF of up to 2 MB: "Upload one JPEG, PNG, WEBP, or GIF image of up to 2 MB."
- `404` when the dashboard does not exist or you cannot edit it.
- `429` after 30 uploads in 10 minutes.

## Path parameters

- `dashboardId` string, required

## Response `200`

Success

- object
  - `status` 'success': `success` on every 2xx response.
  - `data` object
    - `imageKey` string: Where the image is stored. Put it on a profile entry as `imageKey` and save the dashboard.
    - `imageUrl` string: A signed link to preview the image. It expires, so do not store it.

## Other responses

- `400`: Not exactly one JPEG, PNG, WebP or GIF image of up to 2 MB
- `404`: The dashboard does not exist or you cannot edit it
- `429`: More than 30 uploads in 10 minutes

---

[API](https://skmtc.dev/speakai/apis/speak-ai-api.md) · [All operations](https://skmtc.dev/speakai/apis/speak-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/speakai/apis/speak-ai-api/revisions/52d777e6d46e?raw)
