Source: Roblox Creator Hub · CC BY 4.0 · View source · Code samples: MIT Imported 2026-10-03. Formatting adapted for this site.
POST /assets/v1/assets — openapi
Creates an asset with provided content and metadata.
Creates an asset with provided content and metadata.
You can't add SocialLink objects when you create an asset. Instead, use Update Asset.
Provide the Asset, binary asset file path, and content type in the form data.
Endpoint
Method: POST
Path: /assets/v1/assets
Servers:
https://apis.roblox.com
Request Body
{
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"request": {
"$ref": "#/components/schemas/Asset",
"description": "Asset attributes to create."
},
"fileContent": {
"type": "string",
"format": "binary",
"description": "The binary asset file path and the content type. See [Asset types and limits](/cloud/guides/usage-assets.md#supported-asset-types-and-limits)."
}
},
"required": [
"request",
"fileContent"
]
}
}
}
} Responses
| Status | Description |
|---|---|
| 200 | Returns the Operation ID for checking the creation status. |
| 400 | Invalid argument. Failed to parse the request or the file. |
| 401 | The API key is not valid for this operation / You don't have the authorization. |
| 500 | Server internal error / Unknown error. |
{
"200": {
"description": "Returns the Operation ID for checking the creation status.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OCV1.Assets.Operation"
}
}
}
},
"400": {
"description": "Invalid argument. Failed to parse the request or the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OCV1.Assets.Status"
}
}
}
},
"401": {
"description": "The API key is not valid for this operation / You don't have the authorization."
},
"500": {
"description": "Server internal error / Unknown error."
}
} Authentication
{
"security": [
{
"roblox-api-key": []
},
{
"roblox-oauth2": []
}
],
"securitySchemes": {
"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.",
"name": "x-api-key",
"in": "header"
},
"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. We do not recommend using cookies to call endpoints. When possible, use API keys with the x-api-key header or OAuth 2.0 instead for authentication.",
"in": "cookie",
"name": ".ROBLOSECURITY"
},
"roblox-oauth2": {
"type": "oauth2",
"description": "Build or authorize apps to access Roblox resources. See https://create.roblox.com/docs/cloud/auth/oauth2-overview for more information.",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://apis.roblox.com/oauth/v1/authorize",
"tokenUrl": "https://apis.roblox.com/oauth/v1/token",
"refreshUrl": "https://apis.roblox.com/oauth/v1/token",
"scopes": {}
}
}
}
}
} Related Schemas
Complete Operation Definition
{
"tags": [
"Assets"
],
"x-roblox-cloud-api-operation": true,
"x-roblox-cloud-api-operation-name": "Create Asset",
"x-roblox-stability": "BETA",
"summary": "Creates an asset with provided content and metadata.",
"description": "Creates an asset with provided content and metadata.\n\nYou can't add [SocialLink](#SocialLink) objects when you create an asset. Instead, use [Update Asset](#PATCH-v1-assets-_assetId_).\n\nProvide the [Asset](#Asset), binary asset file path, and [content type](/cloud/guides/usage-assets.md#supported-asset-types-and-limits) in the form data.",
"operationId": "Assets_CreateAsset",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"request": {
"$ref": "#/components/schemas/Asset",
"description": "Asset attributes to create."
},
"fileContent": {
"type": "string",
"format": "binary",
"description": "The binary asset file path and the content type. See [Asset types and limits](/cloud/guides/usage-assets.md#supported-asset-types-and-limits)."
}
},
"required": [
"request",
"fileContent"
]
}
}
}
},
"responses": {
"200": {
"description": "Returns the Operation ID for checking the creation status.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OCV1.Assets.Operation"
}
}
}
},
"400": {
"description": "Invalid argument. Failed to parse the request or the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OCV1.Assets.Status"
}
}
}
},
"401": {
"description": "The API key is not valid for this operation / You don't have the authorization."
},
"500": {
"description": "Server internal error / Unknown error."
}
},
"security": [
{
"roblox-api-key": []
},
{
"roblox-oauth2": []
}
],
"x-roblox-scopes": [
{
"name": "asset:read"
},
{
"name": "asset:write"
}
],
"x-roblox-cloud-api-operation-code-samples": [
{
"language": "Create Asset",
"script": "curl --location --request POST 'https://apis.roblox.com/assets/v1/assets' \\\n--header 'x-api-key: {apiKey}' \\\n--form 'request=\"{ \n \\\"assetType\\\": \\\"Model\\\", \n \\\"displayName\\\": \\\"Name\\\", \n \\\"description\\\": \\\"This is a description\\\", \n \\\"creationContext\\\": { \n \\\"creator\\\": { \n \\\"userId\\\": \\\"${userId}\\\" \n } \n } \n}\"' \\\n--form 'fileContent=@\"/filepath/model.fbx\";type=model/fbx' \n"
}
],
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 120
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 120
}
},
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#Assets_CreateAsset"
}
}