14 min read

Source: Roblox Creator Hub · CC BY 4.0 · View source · Code samples: MIT Imported 2026-10-03. Formatting adapted for this site.

GET /toolbox-service/v2/assets:search — toolbox-service/v1

Search Creator Store Assets

Search Creator Store for assets.

Endpoint

Method: GET

Path: /toolbox-service/v2/assets:search

Servers:

Parameters

NameLocationRequiredDescription
searchCategoryTypequerytrueThe asset type to search within.
queryqueryfalseThe search terms used to filter the results.
modelSubTypesqueryfalseWhen searching for models, the subtypes associated with the search results.
excludedModelSubTypesqueryfalseWhen searching for models, the subtypes not associated with the search results.
creatorqueryfalseDeprecated: Please refer to the 'userId' and 'groupId' properties instead. The creator type and ID. E.g. "user/123" or "group/456"
userIdqueryfalseThe User ID of the creator. Only one of 'userId' and 'groupId' can be present in a query.
groupIdqueryfalseThe Group ID of the creator. Only one of 'userId' and 'groupId' can be present in a query.
pageTokenqueryfalseThe identifier for the desired search results page. Only one of 'pageNumber' and 'pageToken' can be present in a query.
pageNumberqueryfalseThe page number to retrieve, starting from 0. Only one of 'pageNumber' and 'pageToken' can be present in a query.
maxPageSizequeryfalseThe number of assets to be returned. Cannot be larger than 100.
sortDirectionqueryfalseThe sort direction of the search results.
sortCategoryqueryfalseThe category to sort the search results by.
audioMinDurationSecondsqueryfalseWhen searching for audio, the minimum duration of the audio assets. If included, must be greater than or equal to 0.
audioMaxDurationSecondsqueryfalseWhen searching for audio, the maximum duration of the audio assets. If included, must be greater than or equal to 0.
audioArtistqueryfalseWhen searching for audio, the artist name of the audio assets.
audioAlbumqueryfalseWhen searching for audio, the album name of the audio assets.
includeTopChartsqueryfalse
audioTypesqueryfalseWhen searching for audio, the type of the audio assets.
includedInstanceTypesqueryfalseWhen searching for models, this filters that the following Instance types are included in the model.
includeOnlyVerifiedCreatorsqueryfalseWhether the results should only include assets created by verified creators.
minPriceCentsqueryfalseThe minimum price of the asset in cents. If included, must be greater than or equal to 0.
maxPriceCentsqueryfalseThe maximum price of the asset in cents. If included, must be greater than or equal to 0.
facetsqueryfalseAdditional keywords to query by.
categoryPathqueryfalse
searchViewqueryfalseIndicates which fields will be populated in the response.
musicChartTypequeryfalseIndicates which music charts to filter from.
[
  {
    "name": "searchCategoryType",
    "in": "query",
    "description": "The asset type to search within.",
    "required": true,
    "schema": {
      "allOf": [
        {
          "$ref": "#/components/schemas/SearchCategoryType"
        }
      ],
      "description": "This represents a \"subset\" of Toolbox.Service.CategoryType options and represent the full set\r\nof \"categories\" (or asset types) that can be searched upon from the toolbox search API.",
      "x-enumNames": [
        "Audio",
        "Model",
        "Decal",
        "Plugin",
        "MeshPart",
        "Video",
        "FontFamily"
      ],
      "x-enum-varnames": [
        "Audio",
        "Model",
        "Decal",
        "Plugin",
        "MeshPart",
        "Video",
        "FontFamily"
      ],
      "x-enum-descriptions": [
        "Audio",
        "Model",
        "Decal",
        "Plugin",
        "MeshPart",
        "Video",
        "FontFamily"
      ]
    }
  },
  {
    "name": "query",
    "in": "query",
    "description": "The search terms used to filter the results.",
    "schema": {
      "type": "string"
    }
  },
  {
    "name": "modelSubTypes",
    "in": "query",
    "description": "When searching for models, the subtypes associated with the search results.",
    "schema": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ModelSubType"
      },
      "nullable": true
    }
  },
  {
    "name": "excludedModelSubTypes",
    "in": "query",
    "description": "When searching for models, the subtypes not associated with the search results.",
    "schema": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ModelSubType"
      },
      "nullable": true
    }
  },
  {
    "name": "creator",
    "in": "query",
    "description": "Deprecated: Please refer to the 'userId' and 'groupId' properties instead. The creator type and ID. E.g. \"user/123\" or \"group/456\"",
    "schema": {
      "pattern": "^(user|group)/\\d+$",
      "type": "string"
    }
  },
  {
    "name": "userId",
    "in": "query",
    "description": "The User ID of the creator. Only one of 'userId' and 'groupId' can be present in a query.",
    "schema": {
      "minimum": 1,
      "type": "integer",
      "format": "int64",
      "nullable": true
    }
  },
  {
    "name": "groupId",
    "in": "query",
    "description": "The Group ID of the creator. Only one of 'userId' and 'groupId' can be present in a query.",
    "schema": {
      "minimum": 1,
      "type": "integer",
      "format": "int64",
      "nullable": true
    }
  },
  {
    "name": "pageToken",
    "in": "query",
    "description": "The identifier for the desired search results page. Only one of 'pageNumber' and 'pageToken' can be present in a query.",
    "schema": {
      "type": "string"
    }
  },
  {
    "name": "pageNumber",
    "in": "query",
    "description": "The page number to retrieve, starting from 0. Only one of 'pageNumber' and 'pageToken' can be present in a query.",
    "schema": {
      "maximum": 2147483647,
      "minimum": 0,
      "type": "integer",
      "format": "int32",
      "nullable": true
    }
  },
  {
    "name": "maxPageSize",
    "in": "query",
    "description": "The number of assets to be returned. Cannot be larger than 100.",
    "schema": {
      "maximum": 100,
      "minimum": 1,
      "type": "integer",
      "format": "int32",
      "default": 25
    }
  },
  {
    "name": "sortDirection",
    "in": "query",
    "description": "The sort direction of the search results.",
    "schema": {
      "allOf": [
        {
          "$ref": "#/components/schemas/SortDirection"
        }
      ],
      "description": "Represents the direction in which to sort the results",
      "default": "None",
      "x-enumNames": [
        "None",
        "Ascending",
        "Descending"
      ],
      "x-enum-varnames": [
        "None",
        "Ascending",
        "Descending"
      ],
      "x-enum-descriptions": [
        "None",
        "Ascending",
        "Descending"
      ]
    }
  },
  {
    "name": "sortCategory",
    "in": "query",
    "description": "The category to sort the search results by.",
    "schema": {
      "allOf": [
        {
          "$ref": "#/components/schemas/SortCategory"
        }
      ],
      "description": "The category to sort the search results by.",
      "default": "Relevance",
      "x-enumNames": [
        "Relevance",
        "Trending",
        "Top",
        "AudioDuration",
        "CreateTime",
        "UpdatedTime",
        "Ratings"
      ],
      "x-enum-varnames": [
        "Relevance",
        "Trending",
        "Top",
        "AudioDuration",
        "CreateTime",
        "UpdatedTime",
        "Ratings"
      ],
      "x-enum-descriptions": [
        "Relevance",
        "Trending",
        "Top",
        "AudioDuration",
        "CreateTime",
        "UpdatedTime",
        "Ratings"
      ]
    }
  },
  {
    "name": "audioMinDurationSeconds",
    "in": "query",
    "description": "When searching for audio, the minimum duration of the audio assets. If included, must be greater than or equal to 0.",
    "schema": {
      "maximum": 2147483647,
      "minimum": 0,
      "type": "integer",
      "format": "int32",
      "default": 0
    }
  },
  {
    "name": "audioMaxDurationSeconds",
    "in": "query",
    "description": "When searching for audio, the maximum duration of the audio assets. If included, must be greater than or equal to 0.",
    "schema": {
      "maximum": 2147483647,
      "minimum": 1,
      "type": "integer",
      "format": "int32",
      "nullable": true
    }
  },
  {
    "name": "audioArtist",
    "in": "query",
    "description": "When searching for audio, the artist name of the audio assets.",
    "schema": {
      "type": "string"
    }
  },
  {
    "name": "audioAlbum",
    "in": "query",
    "description": "When searching for audio, the album name of the audio assets.",
    "schema": {
      "type": "string"
    }
  },
  {
    "name": "includeTopCharts",
    "in": "query",
    "schema": {
      "type": "boolean",
      "default": false,
      "nullable": true
    }
  },
  {
    "name": "audioTypes",
    "in": "query",
    "description": "When searching for audio, the type of the audio assets.",
    "schema": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SearchAudioTypeModel"
      },
      "nullable": true
    }
  },
  {
    "name": "includedInstanceTypes",
    "in": "query",
    "description": "When searching for models, this filters that the following [Instance](https://create.roblox.com/docs/reference/engine/classes/Instance) types are included in the model.",
    "schema": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ModelInstanceType"
      },
      "nullable": true
    }
  },
  {
    "name": "includeOnlyVerifiedCreators",
    "in": "query",
    "description": "Whether the results should only include assets created by verified creators.",
    "schema": {
      "type": "boolean",
      "default": true
    }
  },
  {
    "name": "minPriceCents",
    "in": "query",
    "description": "The minimum price of the asset in cents. If included, must be greater than or equal to 0.",
    "schema": {
      "maximum": 2147483647,
      "minimum": 0,
      "type": "integer",
      "format": "int64",
      "default": 0
    }
  },
  {
    "name": "maxPriceCents",
    "in": "query",
    "description": "The maximum price of the asset in cents. If included, must be greater than or equal to 0.",
    "schema": {
      "maximum": 2147483647,
      "minimum": 0,
      "type": "integer",
      "format": "int64",
      "nullable": true
    }
  },
  {
    "name": "facets",
    "in": "query",
    "description": "Additional keywords to query by.",
    "schema": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "nullable": true
    }
  },
  {
    "name": "categoryPath",
    "in": "query",
    "schema": {
      "type": "string"
    }
  },
  {
    "name": "searchView",
    "in": "query",
    "description": "Indicates which fields will be populated in the response.",
    "schema": {
      "allOf": [
        {
          "$ref": "#/components/schemas/SearchView"
        }
      ],
      "description": "This view controls which fields are populated in the search response. A lighter\r\nview will result in faster response times and higher reliability.",
      "default": "Core",
      "x-enumNames": [
        "IDs",
        "Core",
        "Full"
      ],
      "x-enum-varnames": [
        "IDs",
        "Core",
        "Full"
      ],
      "x-enum-descriptions": [
        "IDs",
        "Core",
        "Full"
      ]
    }
  },
  {
    "name": "musicChartType",
    "in": "query",
    "description": "Indicates which music charts to filter from.",
    "schema": {
      "allOf": [
        {
          "$ref": "#/components/schemas/MusicChartType"
        }
      ],
      "description": "Represents which music chart to pull entries from, if any",
      "default": "None",
      "x-enumNames": [
        "None",
        "Current",
        "Week",
        "Month",
        "Year"
      ],
      "x-enum-varnames": [
        "None",
        "Current",
        "Week",
        "Month",
        "Year"
      ],
      "x-enum-descriptions": [
        "None",
        "Current",
        "Week",
        "Month",
        "Year"
      ]
    }
  }
]

Responses

StatusDescription
200Success
400Bad Request
429Too Many Requests
500Server Error
{
  "200": {
    "description": "Success",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/SearchCreatorStoreAssetsResponse"
        }
      }
    }
  },
  "400": {
    "description": "Bad Request",
    "content": {
      "application/json": {
        "schema": {
          "oneOf": [
            {
              "$ref": "#/components/schemas/ProblemDetails"
            },
            {
              "$ref": "#/components/schemas/HttpValidationProblemDetails"
            }
          ],
          "nullable": true
        }
      }
    }
  },
  "429": {
    "description": "Too Many Requests",
    "content": {
      "application/json": {
        "schema": {
          "oneOf": [
            {
              "$ref": "#/components/schemas/ProblemDetails"
            },
            {
              "$ref": "#/components/schemas/HttpValidationProblemDetails"
            }
          ],
          "nullable": true
        }
      }
    }
  },
  "500": {
    "description": "Server Error"
  }
}

Authentication

{
  "security": [
    {
      "roblox-legacy-cookie": []
    },
    {
      "roblox-api-key": []
    }
  ],
  "securitySchemes": {
    "roblox-legacy-cookie": {
      "type": "apiKey",
      "description": "A browser cookie that represents the identity of a Roblox user. DO NOT SHARE THIS. Sharing this will allow someone to log in as you and to steal your Robux and items. When possible, use API keys with the x-api-key header or OAuth 2.0 instead for authentication.",
      "in": "cookie",
      "name": ".ROBLOSECURITY"
    },
    "roblox-api-key": {
      "type": "apiKey",
      "description": "A configurable key that allows granular access to Roblox resources. See https://create.roblox.com/docs/cloud/auth/api-keys for more information.",
      "in": "header",
      "name": "x-api-key"
    }
  }
}

Complete Operation Definition

{
  "tags": [
    "ToolboxService"
  ],
  "summary": "Search Creator Store Assets",
  "description": "Search Creator Store for assets.",
  "parameters": [
    {
      "name": "searchCategoryType",
      "in": "query",
      "description": "The asset type to search within.",
      "required": true,
      "schema": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SearchCategoryType"
          }
        ],
        "description": "This represents a \"subset\" of Toolbox.Service.CategoryType options and represent the full set\r\nof \"categories\" (or asset types) that can be searched upon from the toolbox search API.",
        "x-enumNames": [
          "Audio",
          "Model",
          "Decal",
          "Plugin",
          "MeshPart",
          "Video",
          "FontFamily"
        ],
        "x-enum-varnames": [
          "Audio",
          "Model",
          "Decal",
          "Plugin",
          "MeshPart",
          "Video",
          "FontFamily"
        ],
        "x-enum-descriptions": [
          "Audio",
          "Model",
          "Decal",
          "Plugin",
          "MeshPart",
          "Video",
          "FontFamily"
        ]
      }
    },
    {
      "name": "query",
      "in": "query",
      "description": "The search terms used to filter the results.",
      "schema": {
        "type": "string"
      }
    },
    {
      "name": "modelSubTypes",
      "in": "query",
      "description": "When searching for models, the subtypes associated with the search results.",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ModelSubType"
        },
        "nullable": true
      }
    },
    {
      "name": "excludedModelSubTypes",
      "in": "query",
      "description": "When searching for models, the subtypes not associated with the search results.",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ModelSubType"
        },
        "nullable": true
      }
    },
    {
      "name": "creator",
      "in": "query",
      "description": "Deprecated: Please refer to the 'userId' and 'groupId' properties instead. The creator type and ID. E.g. \"user/123\" or \"group/456\"",
      "schema": {
        "pattern": "^(user|group)/\\d+$",
        "type": "string"
      }
    },
    {
      "name": "userId",
      "in": "query",
      "description": "The User ID of the creator. Only one of 'userId' and 'groupId' can be present in a query.",
      "schema": {
        "minimum": 1,
        "type": "integer",
        "format": "int64",
        "nullable": true
      }
    },
    {
      "name": "groupId",
      "in": "query",
      "description": "The Group ID of the creator. Only one of 'userId' and 'groupId' can be present in a query.",
      "schema": {
        "minimum": 1,
        "type": "integer",
        "format": "int64",
        "nullable": true
      }
    },
    {
      "name": "pageToken",
      "in": "query",
      "description": "The identifier for the desired search results page. Only one of 'pageNumber' and 'pageToken' can be present in a query.",
      "schema": {
        "type": "string"
      }
    },
    {
      "name": "pageNumber",
      "in": "query",
      "description": "The page number to retrieve, starting from 0. Only one of 'pageNumber' and 'pageToken' can be present in a query.",
      "schema": {
        "maximum": 2147483647,
        "minimum": 0,
        "type": "integer",
        "format": "int32",
        "nullable": true
      }
    },
    {
      "name": "maxPageSize",
      "in": "query",
      "description": "The number of assets to be returned. Cannot be larger than 100.",
      "schema": {
        "maximum": 100,
        "minimum": 1,
        "type": "integer",
        "format": "int32",
        "default": 25
      }
    },
    {
      "name": "sortDirection",
      "in": "query",
      "description": "The sort direction of the search results.",
      "schema": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SortDirection"
          }
        ],
        "description": "Represents the direction in which to sort the results",
        "default": "None",
        "x-enumNames": [
          "None",
          "Ascending",
          "Descending"
        ],
        "x-enum-varnames": [
          "None",
          "Ascending",
          "Descending"
        ],
        "x-enum-descriptions": [
          "None",
          "Ascending",
          "Descending"
        ]
      }
    },
    {
      "name": "sortCategory",
      "in": "query",
      "description": "The category to sort the search results by.",
      "schema": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SortCategory"
          }
        ],
        "description": "The category to sort the search results by.",
        "default": "Relevance",
        "x-enumNames": [
          "Relevance",
          "Trending",
          "Top",
          "AudioDuration",
          "CreateTime",
          "UpdatedTime",
          "Ratings"
        ],
        "x-enum-varnames": [
          "Relevance",
          "Trending",
          "Top",
          "AudioDuration",
          "CreateTime",
          "UpdatedTime",
          "Ratings"
        ],
        "x-enum-descriptions": [
          "Relevance",
          "Trending",
          "Top",
          "AudioDuration",
          "CreateTime",
          "UpdatedTime",
          "Ratings"
        ]
      }
    },
    {
      "name": "audioMinDurationSeconds",
      "in": "query",
      "description": "When searching for audio, the minimum duration of the audio assets. If included, must be greater than or equal to 0.",
      "schema": {
        "maximum": 2147483647,
        "minimum": 0,
        "type": "integer",
        "format": "int32",
        "default": 0
      }
    },
    {
      "name": "audioMaxDurationSeconds",
      "in": "query",
      "description": "When searching for audio, the maximum duration of the audio assets. If included, must be greater than or equal to 0.",
      "schema": {
        "maximum": 2147483647,
        "minimum": 1,
        "type": "integer",
        "format": "int32",
        "nullable": true
      }
    },
    {
      "name": "audioArtist",
      "in": "query",
      "description": "When searching for audio, the artist name of the audio assets.",
      "schema": {
        "type": "string"
      }
    },
    {
      "name": "audioAlbum",
      "in": "query",
      "description": "When searching for audio, the album name of the audio assets.",
      "schema": {
        "type": "string"
      }
    },
    {
      "name": "includeTopCharts",
      "in": "query",
      "schema": {
        "type": "boolean",
        "default": false,
        "nullable": true
      }
    },
    {
      "name": "audioTypes",
      "in": "query",
      "description": "When searching for audio, the type of the audio assets.",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/SearchAudioTypeModel"
        },
        "nullable": true
      }
    },
    {
      "name": "includedInstanceTypes",
      "in": "query",
      "description": "When searching for models, this filters that the following [Instance](https://create.roblox.com/docs/reference/engine/classes/Instance) types are included in the model.",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ModelInstanceType"
        },
        "nullable": true
      }
    },
    {
      "name": "includeOnlyVerifiedCreators",
      "in": "query",
      "description": "Whether the results should only include assets created by verified creators.",
      "schema": {
        "type": "boolean",
        "default": true
      }
    },
    {
      "name": "minPriceCents",
      "in": "query",
      "description": "The minimum price of the asset in cents. If included, must be greater than or equal to 0.",
      "schema": {
        "maximum": 2147483647,
        "minimum": 0,
        "type": "integer",
        "format": "int64",
        "default": 0
      }
    },
    {
      "name": "maxPriceCents",
      "in": "query",
      "description": "The maximum price of the asset in cents. If included, must be greater than or equal to 0.",
      "schema": {
        "maximum": 2147483647,
        "minimum": 0,
        "type": "integer",
        "format": "int64",
        "nullable": true
      }
    },
    {
      "name": "facets",
      "in": "query",
      "description": "Additional keywords to query by.",
      "schema": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "nullable": true
      }
    },
    {
      "name": "categoryPath",
      "in": "query",
      "schema": {
        "type": "string"
      }
    },
    {
      "name": "searchView",
      "in": "query",
      "description": "Indicates which fields will be populated in the response.",
      "schema": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SearchView"
          }
        ],
        "description": "This view controls which fields are populated in the search response. A lighter\r\nview will result in faster response times and higher reliability.",
        "default": "Core",
        "x-enumNames": [
          "IDs",
          "Core",
          "Full"
        ],
        "x-enum-varnames": [
          "IDs",
          "Core",
          "Full"
        ],
        "x-enum-descriptions": [
          "IDs",
          "Core",
          "Full"
        ]
      }
    },
    {
      "name": "musicChartType",
      "in": "query",
      "description": "Indicates which music charts to filter from.",
      "schema": {
        "allOf": [
          {
            "$ref": "#/components/schemas/MusicChartType"
          }
        ],
        "description": "Represents which music chart to pull entries from, if any",
        "default": "None",
        "x-enumNames": [
          "None",
          "Current",
          "Week",
          "Month",
          "Year"
        ],
        "x-enum-varnames": [
          "None",
          "Current",
          "Week",
          "Month",
          "Year"
        ],
        "x-enum-descriptions": [
          "None",
          "Current",
          "Week",
          "Month",
          "Year"
        ]
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Success",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/SearchCreatorStoreAssetsResponse"
          }
        }
      }
    },
    "400": {
      "description": "Bad Request",
      "content": {
        "application/json": {
          "schema": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProblemDetails"
              },
              {
                "$ref": "#/components/schemas/HttpValidationProblemDetails"
              }
            ],
            "nullable": true
          }
        }
      }
    },
    "429": {
      "description": "Too Many Requests",
      "content": {
        "application/json": {
          "schema": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProblemDetails"
              },
              {
                "$ref": "#/components/schemas/HttpValidationProblemDetails"
              }
            ],
            "nullable": true
          }
        }
      }
    },
    "500": {
      "description": "Server Error"
    }
  },
  "x-roblox-engine-usability": {
    "apiKeyWithHttpService": true
  },
  "x-roblox-stability": "BETA",
  "x-roblox-rate-limits": {
    "perApiKeyOwner": {
      "period": "MINUTE",
      "maxInPeriod": 1000
    }
  },
  "x-roblox-scopes": [
    {
      "name": "creator-store-product:read"
    }
  ],
  "security": [
    {
      "roblox-legacy-cookie": []
    },
    {
      "roblox-api-key": []
    }
  ]
}