---
title: "Starts a multipart upload operation to create assets."
method: POST
path: "/assets/v1/assets:multipartUpload"
tags: ["Assets"]
---

# Starts a multipart upload operation to create assets.

`POST /assets/v1/assets:multipartUpload`

## Request

- Base URL: `https://apis.roblox.com`
- URL: `https://apis.roblox.com/assets/v1/assets:multipartUpload`
- 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`

## Request body

- MultipartUploadStartRequest: Request of Roblox.AssetsManagement.AssetsUploadApi.MultipartUploadStartOperation
  - `asset` AssetsUploadApiAsset: Represents an asset.
    - `path` string, nullable: The returned resource path of the asset. Format: `assets/{assetId}`. Example: `assets/2205400862`.
    - `revisionId` string, nullable: Revision ID of the asset. Equivalent to `versionNumber`. Every change of the asset automatically commits a new version. The format is an integer string. Example: `1`.
    - `revisionCreateTime` string, date-time, nullable: The creation timestamp of the current revision.
    - `assetId` integer: The unique identifier of the asset. Required for [Update Asset](#Assets_UpdateAsset).
    - `displayName` string, nullable: Display name of the asset. Required for [Create Asset](#Assets_CreateAsset).
    - `description` string, nullable: The description of the asset. Limit to 1000 characters. Required for [Create Asset](#Assets_CreateAsset).
    - `assetType` 'Unspecified' | 'Image' | 'Tshirt' | 'Audio' | 'Mesh' | 'Lua' | 'Html' | 'Text' | 'Hat' | 'Place' | 'Model' | 'Shirt' | 'Pants' | 'Decal' | 'Avatar' | 'Head' | 'Face' | 'Gear' | 'Badge' | 'GroupEmblem' | 'Animation' | 'Arms' | 'Legs' | 'Torso' | 'RightArm' | 'LeftArm' | 'LeftLeg' | 'RightLeg' | 'Package' | 'YoutubeVideo' | 'GamePass' | 'App' | 'Code' | 'Plugin' | 'SolidModel' | 'MeshPart' | 'HairAccessory' | 'FaceAccessory' | 'NeckAccessory' | 'ShoulderAccessory' | 'FrontAccessory' | 'BackAccessory' | 'WaistAccessory' | 'ClimbAnimation' | 'DeathAnimation' | 'FallAnimation' | 'IdleAnimation' | 'JumpAnimation' | 'RunAnimation' | 'SwimAnimation' | 'WalkAnimation' | 'PoseAnimation' | 'LocalizationTableManifest' | 'LocalizationTableTranslation' | 'EmoteAnimation' | 'Video' | 'TexturePack' | 'TshirtAccessory' | 'ShirtAccessory' | 'PantsAccessory' | 'JacketAccessory' | 'SweaterAccessory' | 'ShortsAccessory' | 'LeftShoeAccessory' | 'RightShoeAccessory' | 'DressSkirtAccessory' | 'FontFamily' | 'FontFace' | 'MeshHiddenSurfaceRemoval' | 'EyebrowAccessory' | 'EyelashAccessory' | 'MoodAnimation' | 'DynamicHead' | 'CodeSnippet' | 'AdsVideo' | 'OtaUpdate' | 'Screenshot' | 'RuntimePropertySet' | 'StorePreviewVideo' | 'GamePreviewVideo' | 'CreatorExperienceConfig' | 'FaceMakeup' | 'LipMakeup' | 'EyeMakeup' | 'VoxelFragment' | 'AvatarBackground' | 'TextDocument' | 'Post' | 'AnimatedImage' | 'ComputeFunction' | 'Voice': Type of the Asset.
    - `creationContext` CreationContext: The context of creation that is not part of the asset content, such as metadata and creator information. Required for [Create Asset](#Assets_CreateAsset).
      - `creator` AssetsUploadApiCreator: Represents a creator. Only one creator ID is set, according to the creator type.
        - `userId` string, nullable: The user ID as a decimal string. Set when the asset is owned by a user.
        - `groupId` string, nullable: The group ID as a decimal string. Set when the asset is owned by a group.
        - `experienceId` integer, nullable
      - `expectedPrice` integer: Expected asset upload fee in Robux. When the actual price is more than expected, the operation fails with a 400 error.
      - `creatingUniverseId` integer, nullable
      - `assetPrivacy` 'Unspecified' | 'Default' | 'OpenUse' | 'Restricted': The privacy setting of the asset. Requested asset privacy is only applicable to asset types that allow privacy override. For more details see [Asset Privacy](/projects/assets/privacy.md).
    - `moderationResult` ModerationResult: The moderation result of the asset.
      - `moderationState` 'Unspecified' | 'Reviewing' | 'Rejected' | 'Approved': The moderation state of the asset.
    - `published` boolean: Whether to publish the asset version created by the request. To check whether the current revision is published, see `isPublished`.
    - `hasPublished` boolean
    - `icon` string, nullable: The resource path for the icon.
    - `previews` Preview[], nullable: A list of previews, each with an asset path and alt text. Previews must be **Image** assets.
      - `asset` string, nullable: The preview asset path.
      - `altText` string, nullable: Alt text for the preview asset.
    - `state` 'Unspecified' | 'Active' | 'Archived': Whether the asset is active or archived. Unspecified isn't used.
    - `facebookSocialLink` SocialLink: A social media link for the asset. Maximum of three per asset. Object name can be any of: <ul><li>`facebookSocialLink`</li><li>`twitterSocialLink`</li><li>`youtubeSocialLink`</li><li>`twitchSocialLink`</li><li>`discordSocialLink`</li><li>`githubSocialLink`</li><li>`robloxSocialLink`</li><li>`guildedSocialLink`</li><li>`devForumSocialLink`</li></ul>For syntax, see the sample request under [Update Asset](#Assets_UpdateAsset).
      - `title` string, nullable: An optional title for the social media link. Not used on the Creator Hub.
      - `uri` string, nullable: The URI for the social media link. Must match the expected format for the type of link. For example, the URI for a `twitchSocialLink` object must be of the format `https://twitch.tv/your-channel`.
    - `twitterSocialLink` SocialLink: A social media link for the asset. Maximum of three per asset. Object name can be any of: <ul><li>`facebookSocialLink`</li><li>`twitterSocialLink`</li><li>`youtubeSocialLink`</li><li>`twitchSocialLink`</li><li>`discordSocialLink`</li><li>`githubSocialLink`</li><li>`robloxSocialLink`</li><li>`guildedSocialLink`</li><li>`devForumSocialLink`</li></ul>For syntax, see the sample request under [Update Asset](#Assets_UpdateAsset).
      - `title` string, nullable: An optional title for the social media link. Not used on the Creator Hub.
      - `uri` string, nullable: The URI for the social media link. Must match the expected format for the type of link. For example, the URI for a `twitchSocialLink` object must be of the format `https://twitch.tv/your-channel`.
    - `youtubeSocialLink` SocialLink: A social media link for the asset. Maximum of three per asset. Object name can be any of: <ul><li>`facebookSocialLink`</li><li>`twitterSocialLink`</li><li>`youtubeSocialLink`</li><li>`twitchSocialLink`</li><li>`discordSocialLink`</li><li>`githubSocialLink`</li><li>`robloxSocialLink`</li><li>`guildedSocialLink`</li><li>`devForumSocialLink`</li></ul>For syntax, see the sample request under [Update Asset](#Assets_UpdateAsset).
      - `title` string, nullable: An optional title for the social media link. Not used on the Creator Hub.
      - `uri` string, nullable: The URI for the social media link. Must match the expected format for the type of link. For example, the URI for a `twitchSocialLink` object must be of the format `https://twitch.tv/your-channel`.
    - `twitchSocialLink` SocialLink: A social media link for the asset. Maximum of three per asset. Object name can be any of: <ul><li>`facebookSocialLink`</li><li>`twitterSocialLink`</li><li>`youtubeSocialLink`</li><li>`twitchSocialLink`</li><li>`discordSocialLink`</li><li>`githubSocialLink`</li><li>`robloxSocialLink`</li><li>`guildedSocialLink`</li><li>`devForumSocialLink`</li></ul>For syntax, see the sample request under [Update Asset](#Assets_UpdateAsset).
      - `title` string, nullable: An optional title for the social media link. Not used on the Creator Hub.
      - `uri` string, nullable: The URI for the social media link. Must match the expected format for the type of link. For example, the URI for a `twitchSocialLink` object must be of the format `https://twitch.tv/your-channel`.
    - `discordSocialLink` SocialLink: A social media link for the asset. Maximum of three per asset. Object name can be any of: <ul><li>`facebookSocialLink`</li><li>`twitterSocialLink`</li><li>`youtubeSocialLink`</li><li>`twitchSocialLink`</li><li>`discordSocialLink`</li><li>`githubSocialLink`</li><li>`robloxSocialLink`</li><li>`guildedSocialLink`</li><li>`devForumSocialLink`</li></ul>For syntax, see the sample request under [Update Asset](#Assets_UpdateAsset).
      - `title` string, nullable: An optional title for the social media link. Not used on the Creator Hub.
      - `uri` string, nullable: The URI for the social media link. Must match the expected format for the type of link. For example, the URI for a `twitchSocialLink` object must be of the format `https://twitch.tv/your-channel`.
    - `githubSocialLink` SocialLink: A social media link for the asset. Maximum of three per asset. Object name can be any of: <ul><li>`facebookSocialLink`</li><li>`twitterSocialLink`</li><li>`youtubeSocialLink`</li><li>`twitchSocialLink`</li><li>`discordSocialLink`</li><li>`githubSocialLink`</li><li>`robloxSocialLink`</li><li>`guildedSocialLink`</li><li>`devForumSocialLink`</li></ul>For syntax, see the sample request under [Update Asset](#Assets_UpdateAsset).
      - `title` string, nullable: An optional title for the social media link. Not used on the Creator Hub.
      - `uri` string, nullable: The URI for the social media link. Must match the expected format for the type of link. For example, the URI for a `twitchSocialLink` object must be of the format `https://twitch.tv/your-channel`.
    - `robloxSocialLink` SocialLink: A social media link for the asset. Maximum of three per asset. Object name can be any of: <ul><li>`facebookSocialLink`</li><li>`twitterSocialLink`</li><li>`youtubeSocialLink`</li><li>`twitchSocialLink`</li><li>`discordSocialLink`</li><li>`githubSocialLink`</li><li>`robloxSocialLink`</li><li>`guildedSocialLink`</li><li>`devForumSocialLink`</li></ul>For syntax, see the sample request under [Update Asset](#Assets_UpdateAsset).
      - `title` string, nullable: An optional title for the social media link. Not used on the Creator Hub.
      - `uri` string, nullable: The URI for the social media link. Must match the expected format for the type of link. For example, the URI for a `twitchSocialLink` object must be of the format `https://twitch.tv/your-channel`.
    - `guildedSocialLink` SocialLink: A social media link for the asset. Maximum of three per asset. Object name can be any of: <ul><li>`facebookSocialLink`</li><li>`twitterSocialLink`</li><li>`youtubeSocialLink`</li><li>`twitchSocialLink`</li><li>`discordSocialLink`</li><li>`githubSocialLink`</li><li>`robloxSocialLink`</li><li>`guildedSocialLink`</li><li>`devForumSocialLink`</li></ul>For syntax, see the sample request under [Update Asset](#Assets_UpdateAsset).
      - `title` string, nullable: An optional title for the social media link. Not used on the Creator Hub.
      - `uri` string, nullable: The URI for the social media link. Must match the expected format for the type of link. For example, the URI for a `twitchSocialLink` object must be of the format `https://twitch.tv/your-channel`.
    - `devForumSocialLink` SocialLink: A social media link for the asset. Maximum of three per asset. Object name can be any of: <ul><li>`facebookSocialLink`</li><li>`twitterSocialLink`</li><li>`youtubeSocialLink`</li><li>`twitchSocialLink`</li><li>`discordSocialLink`</li><li>`githubSocialLink`</li><li>`robloxSocialLink`</li><li>`guildedSocialLink`</li><li>`devForumSocialLink`</li></ul>For syntax, see the sample request under [Update Asset](#Assets_UpdateAsset).
      - `title` string, nullable: An optional title for the social media link. Not used on the Creator Hub.
      - `uri` string, nullable: The URI for the social media link. Must match the expected format for the type of link. For example, the URI for a `twitchSocialLink` object must be of the format `https://twitch.tv/your-channel`.
    - `tryAssetSocialLink` SocialLink: A social media link for the asset. Maximum of three per asset. Object name can be any of: <ul><li>`facebookSocialLink`</li><li>`twitterSocialLink`</li><li>`youtubeSocialLink`</li><li>`twitchSocialLink`</li><li>`discordSocialLink`</li><li>`githubSocialLink`</li><li>`robloxSocialLink`</li><li>`guildedSocialLink`</li><li>`devForumSocialLink`</li></ul>For syntax, see the sample request under [Update Asset](#Assets_UpdateAsset).
      - `title` string, nullable: An optional title for the social media link. Not used on the Creator Hub.
      - `uri` string, nullable: The URI for the social media link. Must match the expected format for the type of link. For example, the URI for a `twitchSocialLink` object must be of the format `https://twitch.tv/your-channel`.
    - `isPublished` boolean: Whether the current revision of the asset is published.
  - `file` File: A file to be uploaded
    - `contentType` string, nullable: MIME type of the file content.
    - `filesize` integer: Size of the file.
    - `md5Checksum` string, nullable: MD5 checksum of the file.
    - `chunkPlan` integer[], nullable: A list of chunk lengths.
  - `additionalParameters` object, nullable: Optional: Additional parameters to be sent with the request can be included here.

## Response `200`

OK

- MultipartUploadStartResponse: Response of Roblox.AssetsManagement.AssetsUploadApi.MultipartUploadStartOperation
  - `operationPath` string, nullable: ID of the operation.
  - `uploadUrls` PreSignedUploadUrl[], nullable: A list of upload urls to upload chunks.
    - `httpVerb` string, nullable: HTTP Verb to use with the given url.
    - `url` string, nullable: Pre signed url used to upload.
    - `expirationTimeMs` integer: Expiration of pre signed url.
    - `chunkNum` integer: Num of file chunk to upload corresponding to the ChunkPlan in the start request.
    - `contentStart` integer: Start position of this chunk.
    - `contentLength` integer: Length of this chunk.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden

## Changes

- **2026-11-13** `e1e00fbc18e5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/roblox/apis/roblox-api/changes/assets/v1/assets:multipartUpload/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/c2ba38e6ba62?raw)
