Teams
Upload team logo
Upload the logo shown for a team across Two Minute Reports.
POST /teams/{teamId}/logo
Sets the team's logo. It appears wherever the team itself is shown — the team switcher, the top bar, and the settings page. Uploading again replaces the previous logo; the old file is removed.
Authentication: Bearer token · Permission:
teams:write · Team permission:team_settings.write · Rate limit: default (120 / 60s)This is not the logo your clients see. A client's dashboard carries that client's own logo, set per client. The team logo is internal branding and never appears on client-facing output.
Path parameters
teamId
string · uuid v7 required
The ID of the team whose logo is being set.
Request body
Sent as multipart/form-data.
file
file required
The image. PNG, JPEG or WebP, up to 5 MB.
GIF and SVG are refused. An animated logo sits in the top bar on every page, and SVG is an XML document that can carry script. The format is decided from the file's leading bytes, not its name or declared content type — renaming a GIF to
.png does not get it through.Request
curl -X POST https://api.twominutereports.com/v1/teams/0190f8b0-1a2b-7c3d-8e4f-5a6b7c8d9e0f/logo \
-H "Authorization: Bearer tmrc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-F "[email protected]"
Response
{
"success": true,
"data": {
"logoUrl": "https://cdn.twominutereports.com/tmr/team_logo/0190f8b0-1a2b-7c3d-8e4f-5a6b7c8d9e0f-9f2c4b7e1a3d5c8f.png"
}
}
{
"success": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "That file is not a supported team logo format. Please upload a PNG, JPEG or WebP."
}
}
{
"success": false,
"error": { "code": "FORBIDDEN", "message": "You do not have permission to change this team's settings" }
}
{
"success": false,
"error": { "code": "NOT_FOUND", "message": "Team not found" }
}
Fields
logoUrl
string
The URL of the newly stored logo. It also appears on the team object returned by Get team and List teams.