---
name: "Thumbnails Api v1"
last_updated: 2026-06-10T02:18:03Z
type: legacy
api_base_url: "https://thumbnails.roblox.com"
versions: [v1]
endpoints: 19
auth: [cookie]
---

# Thumbnails Api v1

> **Warning:** Legacy APIs with cookie authentication can incorporate breaking changes without notice. We don't recommend them for production applications.

**Base URL:** `https://thumbnails.roblox.com`
**Versions:** v1

## Endpoints

### GET `/v1/asset-thumbnail-animated`

Thumbnails asset animated.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `assetId` | query | `integer (int64)` | Yes | The asset id. |
| `Roblox-Place-Id` | header | `integer (int64)` | No | (optional) placeid |

**Responses:**

- `200`: OK → `Roblox.Web.Responses.Thumbnails.ThumbnailResponse`
- `400`: 4: The requested Ids are invalid, of an invalid type or missing.

**Response fields** (`Roblox.Web.Responses.Thumbnails.ThumbnailResponse`)

See [Roblox.Web.Responses.Thumbnails.ThumbnailResponse](#roblox-web-responses-thumbnails-thumbnailresponse) in Models.

**Response example:**
```json
{
  "targetId": 0,
  "state": "Error",
  "imageUrl": "string",
  "version": "string"
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/asset-thumbnail-animated?assetId={VALUE}"
```

### GET `/v1/assets`

Thumbnails assets.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `assetIds` | query | `array` | Yes | The asset ids. |
| `Roblox-Place-Id` | header | `integer (int64)` | No | (optional) placeid |
| `returnPolicy` | query | `string` | No | Optional policy to use in selecting thumbnail to return (default = PlaceHolder). Valid values: `PlaceHolder`, `ForcePlaceHolder`, `AutoGenerated`, `ForceAutoGenerated` |
| `size` | query | `string` | No | The thumbnail size, formatted widthxheight Valid values: `30x30`, `42x42`, `50x50`, `60x62`, `75x75`, `110x110`, `140x140`, `150x150`, `160x100`, `160x600`, `250x250`, `256x144`, `300x250`, `304x166`, `384x216`, `396x216`, `420x420`, `480x270`, `512x512`, `576x324`, `700x700`, `728x90`, `768x432`, `1200x80`, `330x110`, `660x220`, `1320x440`, `720x228`, `1440x456`, `930x480` |
| `format` | query | `string` | No | The thumbnail format Valid values: `Png`, `Jpeg`, `Webp` |
| `isCircular` | query | `boolean` | No | The circle thumbnail output parameter, true or false Valid values: `true`, `false` |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`
- `400`: 1: There are too many requested Ids. 2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values. 3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format. 4: The requested Ids are invalid, of an invalid type or missing. 8: The requested return policy is invalid (must be PlaceHolder, AutoGenerated or ForceAutoGenerated). 10: Circular thumbnail requests are not allowed
- `403`: 9: User not authorized to use AutoGenerated or ForceAutoGenerated return policies.

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-web-responses-thumbnails-thumbnailresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "targetId": "...",
      "state": "...",
      "imageUrl": "...",
      "version": "..."
    }
  ]
}
```

**Error handling:** `403`: Verify your API key has the required scopes listed above. 

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/assets?assetIds={VALUE}"
```

### GET `/v1/assets-thumbnail-3d`

Thumbnails assets.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `assetId` | query | `integer (int64)` | Yes | The asset id. |
| `useGltf` | query | `boolean` | No | (optional) formatType |
| `Roblox-Place-Id` | header | `integer (int64)` | No | (optional) placeid |

**Responses:**

- `200`: OK → `Roblox.Web.Responses.Thumbnails.ThumbnailResponse`
- `400`: 4: The requested Ids are invalid, of an invalid type or missing.

**Response fields** (`Roblox.Web.Responses.Thumbnails.ThumbnailResponse`)

See [Roblox.Web.Responses.Thumbnails.ThumbnailResponse](#roblox-web-responses-thumbnails-thumbnailresponse) in Models.

**Response example:**
```json
{
  "targetId": 0,
  "state": "Error",
  "imageUrl": "string",
  "version": "string"
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/assets-thumbnail-3d?assetId={VALUE}"
```

### GET `/v1/badges/icons`

Thumbnails badge icons.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `badgeIds` | query | `array` | Yes | The badge ids. |
| `size` | query | `string` | No | The thumbnail size, formatted widthxheight Valid values: `150x150` |
| `format` | query | `string` | No | The thumbnail format Valid values: `Png`, `Webp` |
| `isCircular` | query | `boolean` | No | The circle thumbnail output parameter, true or false Valid values: `true`, `false` |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`
- `400`: 1: There are too many requested Ids. 2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values. 3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format. 4: The requested Ids are invalid, of an invalid type or missing. 10: Circular thumbnail requests are not allowed

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-web-responses-thumbnails-thumbnailresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "targetId": "...",
      "state": "...",
      "imageUrl": "...",
      "version": "..."
    }
  ]
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/badges/icons?badgeIds={VALUE}"
```

### GET `/v1/bundles/thumbnails`

Get bundle thumbnails for the given CSV of bundle ids

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `bundleIds` | query | `array` | Yes | CSV for the bundle ids to get bundle thumbnails |
| `size` | query | `string` | No | The thumbnail size, formatted widthxheight Valid values: `150x150`, `420x420` |
| `format` | query | `string` | No | The thumbnail format Valid values: `Png`, `Webp` |
| `isCircular` | query | `boolean` | No | The circle thumbnail output parameter, true or false Valid values: `true`, `false` |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`
- `400`: 1: There are too many requested Ids. 2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values. 3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format. 4: The requested Ids are invalid, of an invalid type or missing. 10: Circular thumbnail requests are not allowed

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-web-responses-thumbnails-thumbnailresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "targetId": "...",
      "state": "...",
      "imageUrl": "...",
      "version": "..."
    }
  ]
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/bundles/thumbnails?bundleIds={VALUE}"
```

### GET `/v1/developer-products/icons`

Thumbnails developer product icons.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `developerProductIds` | query | `array` | Yes | The developer product ids. |
| `size` | query | `string` | No | The thumbnail size, formatted widthxheight Valid values: `150x150`, `420x420` |
| `format` | query | `string` | No | The thumbnail format Valid values: `Png`, `Webp` |
| `isCircular` | query | `boolean` | No | The circle thumbnail output parameter, true or false Valid values: `true`, `false` |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`
- `400`: 1: There are too many requested Ids. 2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values. 3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format. 4: The requested Ids are invalid, of an invalid type or missing. 10: Circular thumbnail requests are not allowed

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-web-responses-thumbnails-thumbnailresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "targetId": "...",
      "state": "...",
      "imageUrl": "...",
      "version": "..."
    }
  ]
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/developer-products/icons?developerProductIds={VALUE}"
```

### GET `/v1/game-passes`

Thumbnails game pass icons.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `gamePassIds` | query | `array` | Yes | The game pass ids. |
| `size` | query | `string` | No | The thumbnail size, formatted widthxheight Valid values: `150x150` |
| `format` | query | `string` | No | The thumbnail format Valid values: `Png`, `Webp` |
| `isCircular` | query | `boolean` | No | The circle thumbnail output parameter, true or false Valid values: `true`, `false` |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`
- `400`: 1: There are too many requested Ids. 2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values. 3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format. 4: The requested Ids are invalid, of an invalid type or missing. 10: Circular thumbnail requests are not allowed

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-web-responses-thumbnails-thumbnailresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "targetId": "...",
      "state": "...",
      "imageUrl": "...",
      "version": "..."
    }
  ]
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/game-passes?gamePassIds={VALUE}"
```

### GET `/v1/games/{universeId}/thumbnails`

Fetches game thumbnail URLs for a list of universes' thumbnail ids. Ids that do not correspond to a valid thumbnail will be filtered out.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `universeId` | path | `integer (int64)` | Yes |  |
| `thumbnailIds` | query | `array` | Yes |  |
| `size` | query | `string` | No | The thumbnail size, formatted widthxheight Valid values: `768x432`, `576x324`, `480x270`, `384x216`, `256x144` |
| `format` | query | `string` | No | The thumbnail format Valid values: `Png`, `Jpeg`, `Webp` |
| `isCircular` | query | `boolean` | No | The circle thumbnail output parameter, true or false Valid values: `true`, `false` |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`
- `400`: 1: There are too many requested Ids. 2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values. 3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format. 4: The requested Ids are invalid, of an invalid type or missing. 10: Circular thumbnail requests are not allowed
- `404`: 5: The requested universe does not exist.

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-web-responses-thumbnails-thumbnailresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "targetId": "...",
      "state": "...",
      "imageUrl": "...",
      "version": "..."
    }
  ]
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/games/{UNIVERSEID}/thumbnails?thumbnailIds={VALUE}"
```

### GET `/v1/games/icons`

Fetches game icon URLs for a list of universes' root places. Ids that do not correspond to a valid universe will be filtered out.
The ordering of the results is not guaranteed to be the same as the inputs. In order to correlated inputs with outputs please
use the 'targetId' of the objects in the result array.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `universeIds` | query | `array` | Yes | The universe ids. |
| `returnPolicy` | query | `string` | No | Optional policy to use in selecting game icon to return (default = PlaceHolder). Valid values: `PlaceHolder`, `ForcePlaceHolder`, `AutoGenerated`, `ForceAutoGenerated` |
| `size` | query | `string` | No | The thumbnail size, formatted widthxheight Valid values: `50x50`, `128x128`, `150x150`, `256x256`, `420x420`, `512x512` |
| `format` | query | `string` | No | The thumbnail format Valid values: `Png`, `Jpeg`, `Webp` |
| `isCircular` | query | `boolean` | No | The circle thumbnail output parameter, true or false Valid values: `true`, `false` |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`
- `400`: 1: There are too many requested Ids. 2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values. 3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format. 4: The requested Ids are invalid, of an invalid type or missing. 8: The requested return policy is invalid (must be PlaceHolder, AutoGenerated or ForceAutoGenerated). 10: Circular thumbnail requests are not allowed
- `403`: 9: User not authorized to use AutoGenerated or ForceAutoGenerated return policies.

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-web-responses-thumbnails-thumbnailresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "targetId": "...",
      "state": "...",
      "imageUrl": "...",
      "version": "..."
    }
  ]
}
```

**Error handling:** `403`: Verify your API key has the required scopes listed above. 

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/games/icons?universeIds={VALUE}"
```

### GET `/v1/games/multiget/thumbnails`

Fetch game thumbnail URLs for a list of universe IDs.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `universeIds` | query | `array` | Yes | comma-delimited list of universe IDs |
| `countPerUniverse` | query | `integer (int32)` | No | max number of thumbnails to return per universe |
| `defaults` | query | `boolean` | No | true if defaults (if any) should be returned if no media exists |
| `size` | query | `string` | No | The thumbnail size, formatted widthxheight Valid values: `768x432`, `576x324`, `480x270`, `384x216`, `256x144` |
| `format` | query | `string` | No | The thumbnail format Valid values: `Png`, `Jpeg`, `Webp` |
| `isCircular` | query | `boolean` | No | The circle thumbnail output parameter, true or false Valid values: `true`, `false` |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Thumbnails.Api.Models.UniverseThumbnailsResponse]`
- `400`: 0: Unknown error 1: There are too many requested Ids. 4: The requested Ids are invalid, of an invalid type or missing. 5: The requested universe does not exist. 10: Circular thumbnail requests are not allowed

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Thumbnails.Api.Models.UniverseThumbnailsResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Thumbnails.Api.Models.UniverseThumbnailsResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-thumbnails-api-models-universethumbnailsresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "universeId": "...",
      "error": "...",
      "thumbnails": "..."
    }
  ]
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/games/multiget/thumbnails?universeIds={VALUE}"
```

### GET `/v1/groups/icons`

Fetches thumbnail URLs for a list of groups. Ids that do not correspond to groups will be filtered out.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `groupIds` | query | `array` | Yes |  |
| `size` | query | `string` | No | The thumbnail size, formatted widthxheight Valid values: `150x150`, `420x420` |
| `format` | query | `string` | No | The thumbnail format Valid values: `Png`, `Webp` |
| `isCircular` | query | `boolean` | No | The circle thumbnail output parameter, true or false Valid values: `true`, `false` |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`
- `400`: 1: There are too many requested Ids. 2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values. 3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format. 4: The requested Ids are invalid, of an invalid type or missing. 10: Circular thumbnail requests are not allowed

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-web-responses-thumbnails-thumbnailresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "targetId": "...",
      "state": "...",
      "imageUrl": "...",
      "version": "..."
    }
  ]
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/groups/icons?groupIds={VALUE}"
```

### GET `/v1/places/gameicons`

Fetches game icon URLs for a list of places. Ids that do not correspond to a valid place will be filtered out.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `placeIds` | query | `array` | Yes | The place ids. |
| `returnPolicy` | query | `string` | No | Optional policy to use in selecting game icon to return (default = PlaceHolder). Valid values: `PlaceHolder`, `ForcePlaceHolder`, `AutoGenerated`, `ForceAutoGenerated` |
| `size` | query | `string` | No | The thumbnail size, formatted widthxheight Valid values: `50x50`, `128x128`, `150x150`, `256x256`, `420x420`, `512x512` |
| `format` | query | `string` | No | The thumbnail format Valid values: `Png`, `Jpeg`, `Webp` |
| `isCircular` | query | `boolean` | No | The circle thumbnail output parameter, true or false Valid values: `true`, `false` |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`
- `400`: 1: There are too many requested Ids. 2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values. 3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format. 4: The requested Ids are invalid, of an invalid type or missing. 8: The requested return policy is invalid (must be PlaceHolder, AutoGenerated or ForceAutoGenerated). 10: Circular thumbnail requests are not allowed
- `403`: 9: User not authorized to use AutoGenerated or ForceAutoGenerated return policies.

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-web-responses-thumbnails-thumbnailresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "targetId": "...",
      "state": "...",
      "imageUrl": "...",
      "version": "..."
    }
  ]
}
```

**Error handling:** `403`: Verify your API key has the required scopes listed above. 

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/places/gameicons?placeIds={VALUE}"
```

### GET `/v1/users/avatar`

Get Avatar Full body shots for the given CSV of userIds

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `userIds` | query | `array` | Yes | CSV for the userIds to get avatar full body shots |
| `size` | query | `string` | No | The thumbnail size, formatted widthxheight Valid values: `30x30`, `48x48`, `60x60`, `75x75`, `100x100`, `110x110`, `140x140`, `150x150`, `150x200`, `180x180`, `250x250`, `352x352`, `420x420`, `720x720` |
| `format` | query | `string` | No | The thumbnail format Valid values: `Png`, `Jpeg`, `Webp` |
| `isCircular` | query | `boolean` | No | The circle thumbnail output parameter, true or false Valid values: `true`, `false` |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`
- `400`: 1: There are too many requested Ids. 2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values. 3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format. 4: The requested Ids are invalid, of an invalid type or missing. 10: Circular thumbnail requests are not allowed

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-web-responses-thumbnails-thumbnailresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "targetId": "...",
      "state": "...",
      "imageUrl": "...",
      "version": "..."
    }
  ]
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/users/avatar?userIds={VALUE}"
```

### GET `/v1/users/avatar-3d`

Get Avatar 3d object for a user

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `userId` | query | `integer (int64)` | Yes | user Id for avatar |

**Responses:**

- `200`: OK → `Roblox.Web.Responses.Thumbnails.ThumbnailResponse`
- `400`: 4: The requested Ids are invalid, of an invalid type or missing.

**Response fields** (`Roblox.Web.Responses.Thumbnails.ThumbnailResponse`)

See [Roblox.Web.Responses.Thumbnails.ThumbnailResponse](#roblox-web-responses-thumbnails-thumbnailresponse) in Models.

**Response example:**
```json
{
  "targetId": 0,
  "state": "Error",
  "imageUrl": "string",
  "version": "string"
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/users/avatar-3d?userId={VALUE}"
```

### GET `/v1/users/avatar-bust`

Get Avatar Busts for the given CSV of userIds

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `userIds` | query | `array` | Yes | CSV for the userIds to get avatar headshots |
| `size` | query | `string` | No | The thumbnail size, formatted widthxheight Valid values: `48x48`, `50x50`, `60x60`, `75x75`, `100x100`, `150x150`, `180x180`, `352x352`, `420x420` |
| `format` | query | `string` | No | The thumbnail format Valid values: `Png`, `Webp` |
| `isCircular` | query | `boolean` | No | The circle thumbnail output parameter, true or false Valid values: `true`, `false` |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`
- `400`: 1: There are too many requested Ids. 2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values. 3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format. 4: The requested Ids are invalid, of an invalid type or missing. 10: Circular thumbnail requests are not allowed

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-web-responses-thumbnails-thumbnailresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "targetId": "...",
      "state": "...",
      "imageUrl": "...",
      "version": "..."
    }
  ]
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/users/avatar-bust?userIds={VALUE}"
```

### GET `/v1/users/avatar-headshot`

Get Avatar Headshots for the given CSV of userIds

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `userIds` | query | `array` | Yes | CSV for the userIds to get avatar headshots |
| `size` | query | `string` | No | The thumbnail size, formatted widthxheight Valid values: `48x48`, `50x50`, `60x60`, `75x75`, `100x100`, `110x110`, `150x150`, `180x180`, `352x352`, `420x420`, `720x720` |
| `format` | query | `string` | No | The thumbnail format Valid values: `Png`, `Jpeg`, `Webp` |
| `isCircular` | query | `boolean` | No | The circle thumbnail output parameter, true or false Valid values: `true`, `false` |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`
- `400`: 1: There are too many requested Ids. 2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values. 3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format. 4: The requested Ids are invalid, of an invalid type or missing. 10: Circular thumbnail requests are not allowed

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-web-responses-thumbnails-thumbnailresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "targetId": "...",
      "state": "...",
      "imageUrl": "...",
      "version": "..."
    }
  ]
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/users/avatar-headshot?userIds={VALUE}"
```

### GET `/v1/users/outfit-3d`

Get 3d object for an outfit

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `outfitId` | query | `integer (int64)` | Yes | CSV for the userIds to get user outfits |

**Responses:**

- `200`: OK → `Roblox.Web.Responses.Thumbnails.ThumbnailResponse`

**Response fields** (`Roblox.Web.Responses.Thumbnails.ThumbnailResponse`)

See [Roblox.Web.Responses.Thumbnails.ThumbnailResponse](#roblox-web-responses-thumbnails-thumbnailresponse) in Models.

**Response example:**
```json
{
  "targetId": 0,
  "state": "Error",
  "imageUrl": "string",
  "version": "string"
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/users/outfit-3d?outfitId={VALUE}"
```

### GET `/v1/users/outfits`

Get outfits for the given CSV of userOutfitIds

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `userOutfitIds` | query | `array` | Yes | CSV for the userOutfitIds to get user outfits |
| `size` | query | `string` | No | The thumbnail size, formatted widthxheight Valid values: `150x150`, `420x420` |
| `format` | query | `string` | No | The thumbnail format Valid values: `Png`, `Webp` |
| `isCircular` | query | `boolean` | No | The circle thumbnail output parameter, true or false Valid values: `true`, `false` |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`
- `400`: 1: There are too many requested Ids. 2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values. 3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format. 4: The requested Ids are invalid, of an invalid type or missing. 10: Circular thumbnail requests are not allowed

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-web-responses-thumbnails-thumbnailresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "targetId": "...",
      "state": "...",
      "imageUrl": "...",
      "version": "..."
    }
  ]
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/users/outfits?userOutfitIds={VALUE}"
```

### POST `/v1/batch`

Returns a list of thumbnails with varying types and sizes

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `Roblox-Place-Id` | header | `integer (int64)` | No | (optional) placeid |

**Request Body:** `application/json` — Type: `Roblox.Thumbnails.Apis.Models.ThumbnailBatchRequest[]`

See [Roblox.Thumbnails.Apis.Models.ThumbnailBatchRequest](#roblox-thumbnails-apis-models-thumbnailbatchrequest) in Models.

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailBatchResponse]`
- `400`: 1: There are too many requested Ids. 2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values. 3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format. 4: The requested Ids are invalid, of an invalid type or missing. 7: The specified type is not supported by the batch endpoint
- `403`: 9: User not authorized to use AutoGenerated or ForceAutoGenerated return policies.

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailBatchResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailBatchResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-web-responses-thumbnails-thumbnailbatchresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "requestId": "...",
      "errorCode": "...",
      "errorMessage": "...",
      "targetId": "...",
      "state": "...",
      "imageUrl": "..."
    }
  ]
}
```

**Error handling:** `403`: Verify your API key has the required scopes listed above. 

**Example:**
```bash
curl -X POST -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://thumbnails.roblox.com/v1/batch" \
  -H "Content-Type: application/json" \
  -d '[
  {
    "requestId": "string",
    "targetId": 0,
    "token": "string",
    "alias": "string",
    "type": "Avatar",
    "size": "string"
  }
]'
```

## Models

### Roblox.Thumbnails.Api.Models.UniverseThumbnailsResponse

A response model for thumbnails which belong to a specific universe ID

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `universeId` | `integer` | No | Integer universe ID |
| `error` | `Roblox.Web.WebAPI.Models.ApiErrorModel` | No |  |
| `thumbnails` | `Roblox.Web.Responses.Thumbnails.ThumbnailResponse[]` | No | An array of ThumbnailResponse objects |

### Roblox.Thumbnails.Apis.Models.ThumbnailBatchRequest

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `requestId` | `string` | No | The request id. (Generated client side, used to represent the items in the request) |
| `targetId` | `integer` | No | The thumbnail target id |
| `token` | `string` | No | Alternative ase token used to identify a thumbnail |
| `alias` | `string` | No | Alternative string used to identify a thumbnail instead of targetId |
| `type` | `string enum (19 values)` | No | The type of the thumbnails ['Avatar' = 1, 'AvatarHeadShot' = 2, 'GameIcon' = 3, 'BadgeIcon' = 4, 'GameThumbnail' = 5, 'GamePass' = 6, 'Asset' = 7, 'BundleThumbnail' = 8, 'Outfit' = 9, 'GroupIcon' = 10, 'DeveloperProduct' = 11, 'AvatarBust' = 12, 'AutoGeneratedAsset' = 13, 'PlaceIcon' = 14, 'AutoGeneratedGameIcon' = 15, 'ForceAutoGeneratedGameIcon' = 16, 'Look' = 17, 'CreatorContextAsset' = 18, 'Screenshot' = 19] Values: Avatar, AvatarHeadShot, GameIcon, BadgeIcon, GameThumbnail, GamePass, Asset, BundleThumbnail, Outfit, GroupIcon, DeveloperProduct, AvatarBust, AutoGeneratedAsset, PlaceIcon, AutoGeneratedGameIcon, ForceAutoGeneratedGameIcon, Look, CreatorContextAsset, Screenshot |
| `size` | `string` | No | The thumbnail size |
| `format` | `string` | No | The thumbnail format |
| `isCircular` | `boolean` | No | Is the thumbnail circular shape |
| `accessContext` | `string` | No | Access context for asset permission checks (only relevant for Asset thumbnail types) |
| `headShape` | `string` | No | Head shape for dynamic head thumbnails (only relevant for Asset thumbnail types with dynamic head) |

### Roblox.Web.Responses.Thumbnails.ThumbnailBatchResponse

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `requestId` | `string` | No |  |
| `errorCode` | `integer` | No |  |
| `errorMessage` | `string` | No |  |
| `targetId` | `integer` | No |  |
| `state` | `string enum (6 values)` | No | ['Error' = 0, 'Completed' = 1, 'InReview' = 2, 'Pending' = 3, 'Blocked' = 4, 'TemporarilyUnavailable' = 5] Values: Error, Completed, InReview, Pending, Blocked, TemporarilyUnavailable |
| `imageUrl` | `string` | No |  |
| `version` | `string` | No |  |

### Roblox.Web.Responses.Thumbnails.ThumbnailResponse

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `targetId` | `integer` | No |  |
| `state` | `string enum (6 values)` | No | ['Error' = 0, 'Completed' = 1, 'InReview' = 2, 'Pending' = 3, 'Blocked' = 4, 'TemporarilyUnavailable' = 5] Values: Error, Completed, InReview, Pending, Blocked, TemporarilyUnavailable |
| `imageUrl` | `string` | No |  |
| `version` | `string` | No |  |

### Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Thumbnails.Api.Models.UniverseThumbnailsResponse]

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `data` | `Roblox.Thumbnails.Api.Models.UniverseThumbnailsResponse[]` | No |  |

### Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailBatchResponse]

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `data` | `Roblox.Web.Responses.Thumbnails.ThumbnailBatchResponse[]` | No |  |

### Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Web.Responses.Thumbnails.ThumbnailResponse]

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `data` | `Roblox.Web.Responses.Thumbnails.ThumbnailResponse[]` | No |  |

### Roblox.Web.WebAPI.Models.ApiErrorModel

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `code` | `integer` | No |  |
| `message` | `string` | No |  |
| `userFacingMessage` | `string` | No |  |
| `field` | `string` | No |  |
| `fieldData` | `any` | No |  |