---
title: "Overwrites a badge icon with a new one."
method: POST
path: "/legacy-publish/v1/badges/{badgeId}/icon"
tags: ["Assets", "Badges", "Thumbnails"]
---

# Overwrites a badge icon with a new one.

`POST /legacy-publish/v1/badges/{badgeId}/icon`

## Request

- Base URL: `https://apis.roblox.com`
- URL: `https://apis.roblox.com/legacy-publish/v1/badges/{badgeId}/icon`
- Auth: one of:
  - API key in header `x-api-key`
  - OAuth 2
    - Authorization code: `https://apis.roblox.com/oauth/v1/authorize`
    - Token URL: `https://apis.roblox.com/oauth/v1/token` scopes: `legacy-badge:manage`

## Path parameters

- `badgeId` integer, required

## Request body `multipart/form-data`

- object
  - `Files` string, binary

## Response `200`

OK

- RobloxPublishApiUploadResponse: A response used when an upload has completed.
  - `targetId` integer: The target Id of the uploaded item.

## Other responses

- `400`: 2: File not present in request. 12: Name or description is moderated.
- `401`: 0: Authorization has been denied for this request.
- `403`: 0: Token Validation Failed 5: You do not have permission to manage this item.
- `404`: 4: Target item is invalid or does not exist.
- `429`: 3: You're uploading too much, please wait and try again later.

## Changes

- **2026-10-14** `5dcfa33df56a`: 1 info
  - the security scope `legacy-badge:manage` was added to the endpoint's security scheme `roblox-oauth2`

[Operation history](https://skmtc.dev/roblox/apis/roblox-api/changes/legacy-publish/v1/badges/:badgeId/icon/post.md)

---

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