Skip to main content

Auto-rig / add a character

Upload a 3D character model in FBX or GLB format to use with generated motions.

Step 1: Prepare your character file

  • Supported formats: .fbx, .glb, .gltf
  • File size must be less than 20MB (100MB for some organizations)
  • Keep the file size reasonable to speed up auto-rigging

Step 2: Upload via GraphQL

Use a multipart GraphQL request with the create_character mutation.

API_KEY="{{apiKey}}"
CHARACTER_FILE="/path/to/character.fbx"
CHARACTER_NAME="My Character"

curl -X POST https://uthana.com/graphql \
  -u $API_KEY: \
  -F 'operations={
    "query": "mutation ($file: Upload!, $name: String!, $auto_rig: Boolean, $auto_rig_front_facing: Boolean) { create_character(file: $file, name: $name, auto_rig: $auto_rig, auto_rig_front_facing: $auto_rig_front_facing) { character { id name } } }",
    "variables": { "file": null, "name": "'"$CHARACTER_NAME"'", "auto_rig": true, "auto_rig_front_facing": true }
  }' \
  -F 'map={ "0": ["variables.file"] }' \
  -F '0=@'"$CHARACTER_FILE"

Step 3: Save the character ID

The response includes the character id. Keep it for generating motions and downloads.

Auto-rigging

By default, Uthana automatically attempts to rig characters that don't have a skeleton. Auto-rigging allows you to use characters that weren't originally rigged for animation.

Default behavior

  • auto_rig: true (default) - Automatically rig the character if no skeleton is found
  • auto_rig_front_facing: true (default) - Make the auto-rigged character face forward

Timing

  • Auto-rigging typically takes 30-60 seconds to complete
  • The upload job has a timeout of 5 minutes (300 seconds)
  • If your character already has a skeleton, no auto-rigging occurs and the upload is faster

Disabling auto-rigging

If your character already has a skeleton rig, you can disable auto-rigging to speed up the upload:

curl -X POST https://uthana.com/graphql \
  -u $API_KEY: \
  -F 'operations={
    "query": "mutation ($file: Upload!, $name: String!, $auto_rig: Boolean) { create_character(file: $file, name: $name, auto_rig: $auto_rig) { character { id name } } }",
    "variables": { "file": null, "name": "'"$CHARACTER_NAME"'", "auto_rig": false }
  }' \
  -F 'map={ "0": ["variables.file"] }' \
  -F '0=@'"$CHARACTER_FILE"

Character requirements

Your character must have essential joints for retargeting to work:

  • Pelvis
  • Left and right hips
  • Left and right shoulders

If these joints are missing, the upload will fail with an error.

Known errors

Common errors you may encounter:

  • "Only FBX and GLB files are supported" - Your file format is not supported. Use .fbx or .glb files only.
  • "The provided file is too large, it must be less than [size]MiB" - File size exceeds the limit (default 20MB, 100MB for some organizations). The error message will include the actual size limit.
  • "Maximum number of characters reached" - Your organization has reached its character limit. Upgrade your plan or delete unused characters.
  • "Essential joints missing. Please ensure your character has a basic bone structure (pelvis, shoulders, hips)." - Your character model lacks required skeleton joints.
  • "Auto-rigging failed: [error]" - Auto-rigging encountered an error. The character may not be suitable for automatic rigging (e.g., non-humanoid structure, extreme proportions, or other compatibility issues). The error message will include specific details about what went wrong.
  • "Auto-rigging job not done after [timeout] seconds" - Auto-rigging exceeded the timeout. Try uploading a smaller or simpler character model. The error message will include the actual timeout value.
  • "No rig found in scene. Please upload a rigged character." - No skeleton was found and auto-rigging was disabled or failed.