Avatar v1
Reference for the Avatar v1 endpoints on Roblox.
Base URL: https://avatar.roblox.com
Endpoints
Section titled “Endpoints”| Method | Path | Name |
|---|---|---|
GET | /v1/avatar | getAvatar |
GET | /v1/avatar-rules | getAvatarRules |
GET | /v1/avatar/metadata | getAvatarMetadata |
POST | /v1/avatar/redraw-thumbnail | postAvatarRedrawThumbnail |
POST | /v1/avatar/set-body-colors | postAvatarSetBodyColors |
POST | /v1/avatar/set-player-avatar-type | postAvatarSetPlayerAvatarType |
POST | /v1/avatar/set-scales | postAvatarSetScales |
GET | /v1/game-start-info | getGameStartInfo |
POST | /v1/outfits/:userOutfitId/delete | postOutfitsUseroutfitidDelete |
GET | /v1/outfits/:userOutfitId/details | getOutfitsUseroutfitidDetails |
GET | /v1/users/:userId/avatar | getUsersUseridAvatar |
GET | /v1/users/:userId/currently-wearing | getUsersUseridCurrentlyWearing |
GET | /v1/users/:userId/outfits | getUsersUseridOutfits |
getAvatar
Section titled “getAvatar”GET /v1/avatar
Returns details about the authenticated user’s avatar.
Usage
import { fetchApi } from 'rozod';import { getAvatar } from 'rozod/lib/endpoints/avatarv1';
const data = await fetchApi(getAvatar, undefined);Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
scales | object | See below |
playerAvatarType | `1 | 3` |
bodyColors | object | See below |
assets | object[] | See below |
defaultShirtApplied | boolean | |
defaultPantsApplied | boolean | |
emotes | object[] | See below |
scales fields:
| Field | Type | Description |
|---|---|---|
height | number | |
width | number | |
head | number | |
depth | number | |
proportion | number | |
bodyType | number |
bodyColors fields:
| Field | Type | Description |
|---|---|---|
headColorId | number | |
torsoColorId | number | |
rightArmColorId | number | |
leftArmColorId | number | |
rightLegColorId | number | |
leftLegColorId | number |
assets[] item fields:
| Field | Type | Description |
|---|---|---|
id | number | |
name | string | |
assetType | object | See below |
currentVersionId | number | |
meta | object | See below |
availabilityStatus | string | |
expirationTime | string | |
supportsHeadShapes | boolean |
assetType fields:
| Field | Type | Description |
|---|---|---|
id | number | |
name | string |
meta fields:
| Field | Type | Description |
|---|---|---|
order | number | |
puffiness | number | |
position | object | See below |
rotation | object | See below |
scale | object | See below |
headShape | `0 | 1 |
staticFacialAnimation | boolean | |
version | number |
position fields:
| Field | Type | Description |
|---|---|---|
X | number | |
Y | number | |
Z | number |
rotation fields:
| Field | Type | Description |
|---|---|---|
X | number | |
Y | number | |
Z | number |
scale fields:
| Field | Type | Description |
|---|---|---|
X | number | |
Y | number | |
Z | number |
emotes[] item fields:
| Field | Type | Description |
|---|---|---|
assetId | number | |
assetName | string | |
position | number |
Errors
Section titled “Errors”| Status | Description |
|---|---|
| 401 | 0: Authorization has been denied for this request. |
getAvatarRules
Section titled “getAvatarRules”GET /v1/avatar-rules
Returns the business rules related to avatars.
Usage
import { fetchApi } from 'rozod';import { getAvatarRules } from 'rozod/lib/endpoints/avatarv1';
const data = await fetchApi(getAvatarRules, undefined);Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
playerAvatarTypes | `1 | 3[]` |
scales | object | See below |
wearableAssetTypes | object[] | See below |
accessoryRefinementTypes | number[] | |
accessoryRefinementLowerBounds | object | See below |
accessoryRefinementUpperBounds | object | See below |
bodyColorsPalette | object[] | See below |
basicBodyColorsPalette | object[] | See below |
minimumDeltaEBodyColorDifference | number | |
proportionsAndBodyTypeEnabledForUser | boolean | |
defaultClothingAssetLists | object | See below |
bundlesEnabledForUser | boolean | |
emotesEnabledForUser | boolean |
scales fields:
| Field | Type | Description |
|---|---|---|
min | number | |
max | number | |
increment | number |
wearableAssetTypes[] item fields:
| Field | Type | Description |
|---|---|---|
maxNumber | number | |
id | number | |
name | string |
accessoryRefinementLowerBounds fields:
| Field | Type | Description |
|---|---|---|
position | object | See below |
rotation | object | See below |
scale | object | See below |
position fields:
| Field | Type | Description |
|---|---|---|
xPosition | number | |
yPosition | number | |
zPosition | number |
rotation fields:
| Field | Type | Description |
|---|---|---|
xRotation | number | |
yRotation | number | |
zRotation | number |
scale fields:
| Field | Type | Description |
|---|---|---|
xScale | number | |
yScale | number | |
zScale | number |
accessoryRefinementUpperBounds fields:
| Field | Type | Description |
|---|---|---|
position | object | See below |
rotation | object | See below |
scale | object | See below |
position fields:
| Field | Type | Description |
|---|---|---|
xPosition | number | |
yPosition | number | |
zPosition | number |
rotation fields:
| Field | Type | Description |
|---|---|---|
xRotation | number | |
yRotation | number | |
zRotation | number |
scale fields:
| Field | Type | Description |
|---|---|---|
xScale | number | |
yScale | number | |
zScale | number |
bodyColorsPalette[] item fields:
| Field | Type | Description |
|---|---|---|
brickColorId | number | |
hexColor | string | |
name | string |
basicBodyColorsPalette[] item fields:
| Field | Type | Description |
|---|---|---|
brickColorId | number | |
hexColor | string | |
name | string |
defaultClothingAssetLists fields:
| Field | Type | Description |
|---|---|---|
defaultShirtAssetIds | number[] | |
defaultPantAssetIds | number[] |
getAvatarMetadata
Section titled “getAvatarMetadata”GET /v1/avatar/metadata
Returns metadata used by the avatar page of the website.
Usage
import { fetchApi } from 'rozod';import { getAvatarMetadata } from 'rozod/lib/endpoints/avatarv1';
const data = await fetchApi(getAvatarMetadata, undefined);Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
enableDefaultClothingMessage | boolean | |
isAvatarScaleEmbeddedInTab | boolean | |
isBodyTypeScaleOutOfTab | boolean | |
scaleHeightIncrement | number | |
scaleWidthIncrement | number | |
scaleHeadIncrement | number | |
scaleProportionIncrement | number | |
scaleBodyTypeIncrement | number | |
supportProportionAndBodyType | boolean | |
showDefaultClothingMessageOnPageLoad | boolean | |
areThreeDeeThumbsEnabled | boolean | |
isAvatarWearingApiCallsLockingOnFrontendEnabled | boolean | |
isOutfitHandlingOnFrontendEnabled | boolean | |
isJustinUiChangesEnabled | boolean | |
isCategoryReorgEnabled | boolean | |
LCEnabledInEditorAndCatalog | boolean | |
isLCCompletelyEnabled | boolean |
postAvatarRedrawThumbnail
Section titled “postAvatarRedrawThumbnail”POST /v1/avatar/redraw-thumbnail
Requests the authenticated user’s thumbnail be redrawn.
Usage
import { fetchApi } from 'rozod';import { postAvatarRedrawThumbnail } from 'rozod/lib/endpoints/avatarv1';
const data = await fetchApi(postAvatarRedrawThumbnail, undefined);Response
Section titled “Response”Type: unknown
Errors
Section titled “Errors”| Status | Description |
|---|---|
| 401 | 0: Authorization has been denied for this request. |
| 403 | 0: Token Validation Failed |
| 429 | 1: Redrawing your avatar thumbnail is floodchecked at this time. 1: Redrawing your avatar thumbnail is floodchecked at this time |
postAvatarSetBodyColors
Section titled “postAvatarSetBodyColors”POST /v1/avatar/set-body-colors
Sets the authenticated user’s body colors.
Usage
import { fetchApi } from 'rozod';import { postAvatarSetBodyColors } from 'rozod/lib/endpoints/avatarv1';
const data = await fetchApi(postAvatarSetBodyColors, { body: { /* ... */ }});Request Body
Section titled “Request Body”| Field | Type | Description |
|---|---|---|
headColorId | number | |
torsoColorId | number | |
rightArmColorId | number | |
leftArmColorId | number | |
rightLegColorId | number | |
leftLegColorId | number |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
success | boolean |
Errors
Section titled “Errors”| Status | Description |
|---|---|
| 401 | 0: Authorization has been denied for this request. |
| 403 | 0: Token Validation Failed |
postAvatarSetPlayerAvatarType
Section titled “postAvatarSetPlayerAvatarType”POST /v1/avatar/set-player-avatar-type
Sets the authenticated user’s player avatar type (e.g. R6 or R15).
Usage
import { fetchApi } from 'rozod';import { postAvatarSetPlayerAvatarType } from 'rozod/lib/endpoints/avatarv1';
const data = await fetchApi(postAvatarSetPlayerAvatarType, { body: { /* ... */ }});Request Body
Section titled “Request Body”| Field | Type | Description |
|---|---|---|
playerAvatarType | `1 | 3` |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
success | boolean |
Errors
Section titled “Errors”| Status | Description |
|---|---|
| 400 | 1: Invalid playerAvatarType. Valid values are: |
| 401 | 0: Authorization has been denied for this request. |
| 403 | 0: Token Validation Failed 2: You are not allowed to change player avatar type. |
postAvatarSetScales
Section titled “postAvatarSetScales”POST /v1/avatar/set-scales
Sets the authenticated user’s scales.
Usage
import { fetchApi } from 'rozod';import { postAvatarSetScales } from 'rozod/lib/endpoints/avatarv1';
const data = await fetchApi(postAvatarSetScales, { body: { /* ... */ }});Request Body
Section titled “Request Body”| Field | Type | Description |
|---|---|---|
height | number | |
width | number | |
head | number | |
depth | number | |
proportion | number | |
bodyType | number |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
success | boolean |
Errors
Section titled “Errors”| Status | Description |
|---|---|
| 400 | 1: Please pass in the scales JSON |
| 401 | 0: Authorization has been denied for this request. |
| 403 | 0: Token Validation Failed 3: The user does not have permissions to change scales. |
getGameStartInfo
Section titled “getGameStartInfo”GET /v1/game-start-info
The server will call this on game server start to request general information about the universe
Usage
import { fetchApi } from 'rozod';import { getGameStartInfo } from 'rozod/lib/endpoints/avatarv1';
const data = await fetchApi(getGameStartInfo, { universeId: /* integer */});Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
universeId | integer | Yes |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
gameAvatarType | string | |
allowCustomAnimations | string | |
universeAvatarCollisionType | string | |
universeAvatarBodyType | string | |
jointPositioningType | string | |
message | string | |
universeAvatarMinScales | object | See below |
universeAvatarMaxScales | object | See below |
universeAvatarAssetOverrides | object[] | See below |
moderationStatus | string |
universeAvatarMinScales fields:
| Field | Type | Description |
|---|---|---|
height | number | |
width | number | |
head | number | |
depth | number | |
proportion | number | |
bodyType | number |
universeAvatarMaxScales fields:
| Field | Type | Description |
|---|---|---|
height | number | |
width | number | |
head | number | |
depth | number | |
proportion | number | |
bodyType | number |
universeAvatarAssetOverrides[] item fields:
| Field | Type | Description |
|---|---|---|
assetID | number | |
assetTypeID | number | |
isPlayerChoice | boolean |
postOutfitsUseroutfitidDelete
Section titled “postOutfitsUseroutfitidDelete”POST /v1/outfits/:userOutfitId/delete
Deletes the outfit.
Usage
import { fetchApi } from 'rozod';import { postOutfitsUseroutfitidDelete } from 'rozod/lib/endpoints/avatarv1';
const data = await fetchApi(postOutfitsUseroutfitidDelete, { userOutfitId: /* integer */});Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
userOutfitId | integer | Yes | The user outfit id. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
success | boolean |
Errors
Section titled “Errors”| Status | Description |
|---|---|
| 400 | 1: The specified userOutfitId is invalid! |
| 401 | 0: Authorization has been denied for this request. |
| 403 | 0: Token Validation Failed 2: You don’t have permission to delete this outfit. |
| 500 | 3: An error occurred while deleting the outfit. |
getOutfitsUseroutfitidDetails
Section titled “getOutfitsUseroutfitidDetails”GET /v1/outfits/:userOutfitId/details
Gets details about the contents of an outfit.
Usage
import { fetchApi } from 'rozod';import { getOutfitsUseroutfitidDetails } from 'rozod/lib/endpoints/avatarv1';
const data = await fetchApi(getOutfitsUseroutfitidDetails, { userOutfitId: /* integer */});Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
userOutfitId | integer | Yes | The user outfit id. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
id | number | |
universeId | number | |
name | string | |
assets | object[] | See below |
bodyColors | object | See below |
scale | object | See below |
playerAvatarType | string | |
outfitType | string | |
isEditable | boolean | |
moderationStatus | string |
assets[] item fields:
| Field | Type | Description |
|---|---|---|
id | number | |
name | string | |
assetType | object | See below |
currentVersionId | number | |
meta | object | See below |
availabilityStatus | string | |
expirationTime | string | |
supportsHeadShapes | boolean |
assetType fields:
| Field | Type | Description |
|---|---|---|
id | number | |
name | string |
meta fields:
| Field | Type | Description |
|---|---|---|
order | number | |
puffiness | number | |
position | object | See below |
rotation | object | See below |
scale | object | See below |
headShape | `0 | 1 |
staticFacialAnimation | boolean | |
version | number |
position fields:
| Field | Type | Description |
|---|---|---|
X | number | |
Y | number | |
Z | number |
rotation fields:
| Field | Type | Description |
|---|---|---|
X | number | |
Y | number | |
Z | number |
scale fields:
| Field | Type | Description |
|---|---|---|
X | number | |
Y | number | |
Z | number |
bodyColors fields:
| Field | Type | Description |
|---|---|---|
headColorId | number | |
torsoColorId | number | |
rightArmColorId | number | |
leftArmColorId | number | |
rightLegColorId | number | |
leftLegColorId | number |
scale fields:
| Field | Type | Description |
|---|---|---|
height | number | |
width | number | |
head | number | |
depth | number | |
proportion | number | |
bodyType | number |
Errors
Section titled “Errors”| Status | Description |
|---|---|
| 400 | 1: The specified userOutfitId is invalid. 2: The outfit for the specified userOutfit is invalid. |
| 403 | 3: The requester does not have access to the details for the given user outfit. |
getUsersUseridAvatar
Section titled “getUsersUseridAvatar”GET /v1/users/:userId/avatar
Returns details about a specified user’s avatar.
Usage
import { fetchApi } from 'rozod';import { getUsersUseridAvatar } from 'rozod/lib/endpoints/avatarv1';
const data = await fetchApi(getUsersUseridAvatar, { userId: /* integer */});Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
userId | integer | Yes |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
scales | object | See below |
playerAvatarType | `1 | 3` |
bodyColors | object | See below |
assets | object[] | See below |
defaultShirtApplied | boolean | |
defaultPantsApplied | boolean | |
emotes | object[] | See below |
scales fields:
| Field | Type | Description |
|---|---|---|
height | number | |
width | number | |
head | number | |
depth | number | |
proportion | number | |
bodyType | number |
bodyColors fields:
| Field | Type | Description |
|---|---|---|
headColorId | number | |
torsoColorId | number | |
rightArmColorId | number | |
leftArmColorId | number | |
rightLegColorId | number | |
leftLegColorId | number |
assets[] item fields:
| Field | Type | Description |
|---|---|---|
id | number | |
name | string | |
assetType | object | See below |
currentVersionId | number | |
meta | object | See below |
availabilityStatus | string | |
expirationTime | string | |
supportsHeadShapes | boolean |
assetType fields:
| Field | Type | Description |
|---|---|---|
id | number | |
name | string |
meta fields:
| Field | Type | Description |
|---|---|---|
order | number | |
puffiness | number | |
position | object | See below |
rotation | object | See below |
scale | object | See below |
headShape | `0 | 1 |
staticFacialAnimation | boolean | |
version | number |
position fields:
| Field | Type | Description |
|---|---|---|
X | number | |
Y | number | |
Z | number |
rotation fields:
| Field | Type | Description |
|---|---|---|
X | number | |
Y | number | |
Z | number |
scale fields:
| Field | Type | Description |
|---|---|---|
X | number | |
Y | number | |
Z | number |
emotes[] item fields:
| Field | Type | Description |
|---|---|---|
assetId | number | |
assetName | string | |
position | number |
Errors
Section titled “Errors”| Status | Description |
|---|---|
| 400 | 1: The specified user does not exist. 2: An account for the given userId does not exist! |
getUsersUseridCurrentlyWearing
Section titled “getUsersUseridCurrentlyWearing”GET /v1/users/:userId/currently-wearing
Gets a list of asset ids that the user is currently wearing.
Usage
import { fetchApi } from 'rozod';import { getUsersUseridCurrentlyWearing } from 'rozod/lib/endpoints/avatarv1';
const data = await fetchApi(getUsersUseridCurrentlyWearing, { userId: /* integer */});Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
userId | integer | Yes | The user id. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
assetIds | number[] |
Errors
Section titled “Errors”| Status | Description |
|---|---|
| 400 | 1: The specified user does not exist. 2: An account for the given userId does not exist! |
getUsersUseridOutfits
Section titled “getUsersUseridOutfits”GET /v1/users/:userId/outfits
Deprecated, user v2.
Usage
import { fetchApi } from 'rozod';import { getUsersUseridOutfits } from 'rozod/lib/endpoints/avatarv1';
const data = await fetchApi(getUsersUseridOutfits, { userId: /* integer */, outfitType: /* string? */, page: /* integer? = 1 */, itemsPerPage: /* integer? = 25 */, isEditable: /* boolean? */});Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
userId | integer | Yes | The user id. |
outfitType | string? | No | The outfit type being searched for, null will return all outfitTypes. |
page | integer? = 1 | No | The page number of the current page of requests, default is 1. |
itemsPerPage | integer? = 25 | No | The max number of outfits that can be returned. |
isEditable | boolean? | No | Whether the outfits are editable. A null value will lead to no filtering. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
filteredCount | number | |
data | object[] | See below |
total | number |
data[] item fields:
| Field | Type | Description |
|---|---|---|
id | number | |
name | string | |
isEditable | boolean | |
outfitType | string |
Errors
Section titled “Errors”| Status | Description |
|---|---|
| 400 | 1: The specified user does not exist. 2: An account for the given userId does not exist! |