Skip to main content

3d models

Skin Tokens API

Rigging a character by hand is slow specialist work. Skin Tokens does it automatically: send a GLB character mesh and get back a rigged GLB with a fitted skeleton and per-vertex skinning weights — $0.30 per task, no rigger in the loop.

Get Started!

Skin Tokens API Pricing

Pay-as-you-go access through PiAPI.

Auto-Rigmesh2rig

$0.30

Rig one GLB character mesh, up to 80,000 triangles.

What Skin Tokens Does

One endpoint, one job: turn a static mesh into an animatable one.

Rigging Without a Rigger

Submit a 3D character mesh and Skin Tokens fits a skeleton and solves per-vertex skinning weights for you. A mesh that arrived static leaves animatable, without a manual rigging pass.

GLB In, GLB Out

Input is a valid glTF 2.0 binary (GLB) of up to 80,000 triangles, given as a publicly accessible URL or a base64 data URI. The response returns a rigged GLB at output.model_file containing the original mesh, the fitted skeleton, and the skinning weights.

Flat $0.30 Per Task

Every rig task costs the same regardless of how complex the mesh is, so the cost of rigging an entire character library is predictable before you start.

Asynchronous by Design

Create a task, then poll the fetch endpoint until it reaches a terminal state. Nothing blocks your request thread while a mesh is being processed.

Webhook Notifications

Supply config.webhook_config.endpoint and an optional secret to receive a callback when a task completes or fails. De-duplicate callbacks by task_id and fetch the task to confirm the final state.

Stable Joint Identifiers

Skeleton joints use stable bone_0 through bone_N identifiers with no semantic labels, which keeps naming and humanoid retargeting under your own pipeline's control rather than guessing at conventions.

Get started

Create your API key

Sign up and grab an API key from the PiAPI workspace — free credits are included on sign-up.

Top up credits

Add credits on the billing page when you are ready to scale beyond the free tier.

Call the API

POST your first task following the API docs, then poll the task until the result is ready.

Iterate in the playground

Prototype prompts and settings in the the playground above before wiring them into your product.

curl -X POST 'https://api.piapi.ai/api/v1/task' \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "Qubico/skin-tokens",
    "task_type": "rig",
    "input": {
      "model": "YOUR_GLB_URL",
      "seed": -1
    }
  }'

# → { "task_id": "9d5a…", "status": "pending" }

Frequently Asked Questions

What is the Skin Tokens API?

Skin Tokens automatically rigs a 3D character mesh. You submit a GLB mesh and receive a rigged GLB containing the original mesh, a fitted skeleton, and per-vertex skinning weights.

What mesh can I send?

A valid glTF 2.0 binary (GLB) of no more than 80,000 triangles, provided either as a publicly accessible URL or as a base64 data URI. A clean humanoid mesh in a neutral pose generally produces the most reliable rig.

How much does it cost?

$0.30 per rig task.

Are the bones named?

No. Skeleton joints use stable bone_0 through bone_N identifiers without semantic labels. If your pipeline needs named humanoid bones, map them in your own retargeting step.

Is the API synchronous?

No. Rigging is an asynchronous task: create the task, then poll the fetch endpoint until it reaches a terminal state. You can also register a webhook to be notified when the task completes or fails.

What does the seed parameter do?

seed is optional and defaults to -1, which uses a random seed. Set it to a fixed value when you want a repeatable result for the same input mesh.

What happens if a task fails?

The task reaches a terminal failed state, which you observe either by polling the fetch endpoint or through your webhook. Fetch the task to confirm the final state before retrying.

More questions? See the API docs.