API Docs

Auto-rigger setup API

Rigging is free and does not consume tokens. These routes have no endpoint-specific rate limit; deployment-level abuse controls apply. Browser mutations require the site's CSRF token. A numeric task ID requires a signed-in user authorized for that task, including an authorized project collaborator or admin. A guest task can instead use its unguessable guest token as :taskId.

Save setup

POST /api/asset-creator/auto-rigger/:taskId/rigging-state (also available as POST /api/asset-creator/tasks/:taskId/rigging-state).

Content type: application/json. The request is the complete setup, not a partial patch:

| Field | Type | Meaning |

| --- | --- | --- |

| bodyType | full, upper, bust | Missing or unknown values select full. Missing limbs use unweighted placeholder bones. |

| selectedFrontAngle | string | front, back, left, right, top or bottom. |

| mirrorEnabled | boolean | Mirror paired markers; defaults to true. |

| fingerMode | string | five, four, three, two, mitten or none. |

| fingerViewAngle | string | Hand snapshot angle. |

| markers | object | Marker IDs mapped to { "x": number, "y": number } in the 0–1 snapshot frame. |

| markerFrame | object or null | { "x", "y", "w", "h" } normalized snapshot bounds. |

| fingerPlacement | object | Finger IDs mapped to { "root": [x,y,z], "tip": [x,y,z] }, or legacy 2D points. |

| fingerSpace | string | body_v2 for normalized front-aligned 3D points; empty for legacy data. |

| boneInfluence | object | Marker IDs mapped to multipliers from 0.1 to 2.0. |

Example request (use a session cookie and CSRF token appropriate to your environment):

POST /api/asset-creator/auto-rigger/123/rigging-state
Content-Type: application/json
X-CSRF-Token: <csrf-token>

{"bodyType":"upper","selectedFrontAngle":"front","mirrorEnabled":true,"fingerMode":"five","fingerViewAngle":"top","markers":{"head_top":{"x":0.5,"y":0.1},"chin":{"x":0.5,"y":0.25}},"markerFrame":{"x":0.1,"y":0.05,"w":0.8,"h":0.9},"fingerPlacement":{},"fingerSpace":"body_v2","boneInfluence":{}}

Response 200: { "ok": true, "rigging": { "bodyType": "upper", "selectedFrontAngle": "front", "mirrorEnabled": true, "fingerMode": "five", "fingerViewAngle": "top", "markers": { "head_top": { "x": 0.5, "y": 0.1 }, "chin": { "x": 0.5, "y": 0.25 } }, "markerFrame": { "x": 0.1, "y": 0.05, "w": 0.8, "h": 0.9 }, "fingerPlacement": {}, "fingerSpace": "body_v2", "boneInfluence": {}, "updatedAt": "2026-01-01T00:00:00.000Z" } }. This illustrative incomplete marker set can be saved but cannot start a rig.

Errors: 400 malformed JSON, 403 CSRF rejection, 404 task not found or inaccessible, 409 queued or processing task, 500 save failure.

Start and export marker data

POST /asset-creator/auto-rigger/:taskId/start accepts an empty body and the same task authorization and CSRF requirements. It checks the body-specific required markers and their order, persists setup completion, queues one rigging attempt and responds with a 302 redirect to setup. Invalid setup also redirects to setup with an error query parameter; missing or inaccessible tasks redirect to the asset studio. A save failure returns 500 JSON. Queued or processing tasks redirect without starting another attempt.

GET /asset-creator/auto-rigger/:taskId/export-marker-data has the same task authorization. It returns a ZIP containing the original input model and rig_config.json, including body_type, marker frame and finger space. Missing inputs return 404; unavailable storage returns 502. Neither endpoint charges tokens.