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.