3 min read

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

Photo-to-avatar generation

Note

The Photo-to-avatar feature is currently in alpha. For the latest information, see the DevForum announcement.

Note

The following guide applies to creators who are familiar with scripting and Roblox Studio and intend to develop games that allow user-generated avatar items.

You can create a game that allows players to generate a fully functional avatar character using a photo and a text prompt.

This process involves the following steps:

  1. Request an avatar generation session.
  2. Prompt the user to take a selfie and generate a 2D preview image of the avatar.
  3. Generate the full avatar character using HumanoidDescription.

Request an avatar generation session

To start a photo-to-avatar generation, call AvatarCreationService:RequestAvatarGenerationSessionAsync() from the server to request a session for the player. A session provides a Player with a certain number of avatar previews and avatar generations.

As it may take some time for a session to become available, AvatarCreationService:RequestAvatarGenerationSessionAsync() returns a RBXScriptConnection and a waitTime in seconds. The waitTime can be used to provide the Player with information on how long it will take them to be able to start their generations.

Once a session is ready, the callback is invoked with a Dictionary of information about the session. The Dictionary includes:

Prompt selfie and generate 2D preview

After a session is started, prompt the user to take a selfie and get the fileId string by calling the AvatarCreationService:PromptSelectAvatarGenerationImageAsync method on the Server. This fileId will be passed to the AvatarCreationService:GenerateAvatar2DPreviewAsync method.

To create a 2D preview image of the avatar call the following methods:

  1. AvatarCreationService:GenerateAvatar2DPreviewAsync on the server.
  2. AvatarCreationService:LoadAvatar2DPreviewAsync on the client.

The AvatarCreationService:GenerateAvatar2DPreviewAsync takes the SessionId, fileId and an optional text prompt as input to generate a 2D avatar preview. This method returns a previewId.

This previewId should be sent to the client and can then be used to retrieve the preview as an EditableImage.

If the user is not satisfied with the generated preview, this workflow can be repeated.

Generate the avatar

Once the user is satisfied with the preview, you can generate the complete 3D avatar character.

To generate an avatar character:

  1. Call AvatarCreationService:GenerateAvatarAsync on the Server with a Dictionary containing the SessionId and PreviewId.
    1. This method call returns a string generationId.
  2. Retrieve the generated avatar data as a HumanoidDescription using the AvatarCreationService:LoadGeneratedAvatarAsync method on both the game server and the client.
  3. Use the Players.CreateHumanoidModelFromDescription method to create an avatar model from the HumanoidDescription to display to the Player.

Mesh and texture assets are provided as EditableMesh and EditableImage objects, respectively, to allow continued editing of the generated avatar. Edits should be made on both the game server and the client copy to keep them in sync for publish.

Publish the avatar

If the user is satisfied with the resulting avatar it can be published using the AvatarCreationService:PromptCreateAvatarAsync method.

For more information, see in-game creation.