{"named_endpoints":{"/animate_mesh":{"parameters":[{"label":"1st","parameter_name":"prompt","parameter_has_default":false,"parameter_default":null,"type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":"..."},{"label":"2nd","parameter_name":"mesh_url","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""},{"label":"3rd","parameter_name":"example","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""},{"label":"4th","parameter_name":"rig_job_id","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""},{"label":"5th","parameter_name":"asset","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""},{"label":"6th","parameter_name":"prompts","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""},{"label":"7th","parameter_name":"num_beams","parameter_has_default":true,"parameter_default":10,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":10},{"label":"8th","parameter_name":"rig_seed","parameter_has_default":true,"parameter_default":-1,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":-1},{"label":"9th","parameter_name":"keep_skeleton","parameter_has_default":true,"parameter_default":false,"type":{"type":"boolean"},"python_type":{"type":"bool","description":""},"component":"Api","example_input":false},{"label":"10th","parameter_name":"preserve_original","parameter_has_default":true,"parameter_default":false,"type":{"type":"boolean"},"python_type":{"type":"bool","description":""},"component":"Api","example_input":false},{"label":"11th","parameter_name":"labels_json","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""},{"label":"12th","parameter_name":"face_right","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""},{"label":"13th","parameter_name":"face_left","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""},{"label":"14th","parameter_name":"num_samples","parameter_has_default":true,"parameter_default":1,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":1},{"label":"15th","parameter_name":"cfg_scale","parameter_has_default":true,"parameter_default":3.0,"type":{"type":"number"},"python_type":{"type":"float","description":""},"component":"Api","example_input":3.0},{"label":"16th","parameter_name":"seed","parameter_has_default":true,"parameter_default":-1,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":-1},{"label":"17th","parameter_name":"overlap","parameter_has_default":true,"parameter_default":10,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":10},{"label":"18th","parameter_name":"preview","parameter_has_default":true,"parameter_default":true,"type":{"type":"boolean"},"python_type":{"type":"bool","description":""},"component":"Api","example_input":true}],"returns":[{"label":"1st","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api"}],"api_visibility":"public","description":"From a static 3D model to an animated one in one call: SkinTokens predicts the skeleton and skin weights, the rig is prepared as a UniMate asset on this Space (joint labels, facing, canonical T-pose) and UniMate generates a 60-frame motion from the prompt (or a chained expansion from `prompts`). Returns JSON with the three stages (rig, asset, animation), a URL for every output file (animated GLB, rigged GLB, rig.json, previews, joints JSON, motion .npy) and ready-made follow-up calls. Two ZeroGPU calls (about 20-60 s + 10 s), billed to the caller; the asset preparation adds 10-30 s of CPU. Give exactly one of mesh_url, example, rig_job_id, asset.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/character-animation-for-agents\")\nresult = client.predict(\n\tprompt=\"...\",\n\tmesh_url=\"\",\n\texample=\"\",\n\trig_job_id=\"\",\n\tasset=\"\",\n\tprompts=\"\",\n\tnum_beams=10,\n\trig_seed=-1,\n\tkeep_skeleton=False,\n\tpreserve_original=False,\n\tlabels_json=\"\",\n\tface_right=\"\",\n\tface_left=\"\",\n\tnum_samples=1,\n\tcfg_scale=3.0,\n\tseed=-1,\n\toverlap=10,\n\tpreview=True,\n\tapi_name=\"/animate_mesh\",\n)\nprint(result)","javascript":"import { Client } from \"@gradio/client\";\n\nconst client = await Client.connect(\"townbox/character-animation-for-agents\");\nconst result = await client.predict(\"/animate_mesh\", {\n\t\tprompt: \"...\",\n\t\tmesh_url: \"\",\n\t\texample: \"\",\n\t\trig_job_id: \"\",\n\t\tasset: \"\",\n\t\tprompts: \"\",\n\t\tnum_beams: 10,\n\t\trig_seed: -1,\n\t\tkeep_skeleton: false,\n\t\tpreserve_original: false,\n\t\tlabels_json: \"\",\n\t\tface_right: \"\",\n\t\tface_left: \"\",\n\t\tnum_samples: 1,\n\t\tcfg_scale: 3.0,\n\t\tseed: -1,\n\t\toverlap: 10,\n\t\tpreview: true,\n});\n\nconsole.log(result.data);","bash":"curl -X POST http://localhost:7860/gradio_api/call/v2/animate_mesh -s -H \"Content-Type: application/json\" \\\n  -d '{\"prompt\": \"...\", \"mesh_url\": \"\", \"example\": \"\", \"rig_job_id\": \"\", \"asset\": \"\", \"prompts\": \"\", \"num_beams\": 10, \"rig_seed\": -1, \"keep_skeleton\": false, \"preserve_original\": false, \"labels_json\": \"\", \"face_right\": \"\", \"face_left\": \"\", \"num_samples\": 1, \"cfg_scale\": 3.0, \"seed\": -1, \"overlap\": 10, \"preview\": true}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N http://localhost:7860/gradio_api/call/animate_mesh/$EVENT_ID","cli":"{command} predict townbox/character-animation-for-agents /animate_mesh '{\n  \"prompt\": \"...\",\n  \"mesh_url\": \"\",\n  \"example\": \"\",\n  \"rig_job_id\": \"\",\n  \"asset\": \"\",\n  \"prompts\": \"\",\n  \"num_beams\": 10,\n  \"rig_seed\": -1,\n  \"keep_skeleton\": false,\n  \"preserve_original\": false,\n  \"labels_json\": \"\",\n  \"face_right\": \"\",\n  \"face_left\": \"\",\n  \"num_samples\": 1,\n  \"cfg_scale\": 3.0,\n  \"seed\": -1,\n  \"overlap\": 10,\n  \"preview\": true\n}'\n"}},"/rig":{"parameters":[{"label":"1st","parameter_name":"mesh_url","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""},{"label":"2nd","parameter_name":"example","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""},{"label":"3rd","parameter_name":"num_beams","parameter_has_default":true,"parameter_default":10,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":10},{"label":"4th","parameter_name":"seed","parameter_has_default":true,"parameter_default":-1,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":-1},{"label":"5th","parameter_name":"keep_skeleton","parameter_has_default":true,"parameter_default":false,"type":{"type":"boolean"},"python_type":{"type":"bool","description":""},"component":"Api","example_input":false},{"label":"6th","parameter_name":"preserve_original","parameter_has_default":true,"parameter_default":false,"type":{"type":"boolean"},"python_type":{"type":"bool","description":""},"component":"Api","example_input":false},{"label":"7th","parameter_name":"postprocess","parameter_has_default":true,"parameter_default":false,"type":{"type":"boolean"},"python_type":{"type":"bool","description":""},"component":"Api","example_input":false},{"label":"8th","parameter_name":"influences","parameter_has_default":true,"parameter_default":4,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":4}],"returns":[{"label":"1st","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api"}],"api_visibility":"public","description":"Rig a 3D mesh with SkinTokens: predict a skeleton and per-vertex skin weights, and return the result as JSON with a URL for every output file: the rigged GLB (mesh + armature + weights), rig.json (joint names, hierarchy, rest positions, skin statistics), skin.npz, preview.png (look at it with view_rig) and preview.glb (visible bones + a test motion). The r_ job id then feeds prepare_asset or animate_mesh. Takes 20-60 s of ZeroGPU time, billed to the caller.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/character-animation-for-agents\")\nresult = client.predict(\n\tmesh_url=\"\",\n\texample=\"\",\n\tnum_beams=10,\n\tseed=-1,\n\tkeep_skeleton=False,\n\tpreserve_original=False,\n\tpostprocess=False,\n\tinfluences=4,\n\tapi_name=\"/rig\",\n)\nprint(result)","javascript":"import { Client } from \"@gradio/client\";\n\nconst client = await Client.connect(\"townbox/character-animation-for-agents\");\nconst result = await client.predict(\"/rig\", {\n\t\tmesh_url: \"\",\n\t\texample: \"\",\n\t\tnum_beams: 10,\n\t\tseed: -1,\n\t\tkeep_skeleton: false,\n\t\tpreserve_original: false,\n\t\tpostprocess: false,\n\t\tinfluences: 4,\n});\n\nconsole.log(result.data);","bash":"curl -X POST http://localhost:7860/gradio_api/call/v2/rig -s -H \"Content-Type: application/json\" \\\n  -d '{\"mesh_url\": \"\", \"example\": \"\", \"num_beams\": 10, \"seed\": -1, \"keep_skeleton\": false, \"preserve_original\": false, \"postprocess\": false, \"influences\": 4}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N http://localhost:7860/gradio_api/call/rig/$EVENT_ID","cli":"{command} predict townbox/character-animation-for-agents /rig '{\n  \"mesh_url\": \"\",\n  \"example\": \"\",\n  \"num_beams\": 10,\n  \"seed\": -1,\n  \"keep_skeleton\": false,\n  \"preserve_original\": false,\n  \"postprocess\": false,\n  \"influences\": 4\n}'\n"}},"/prepare_asset":{"parameters":[{"label":"1st","parameter_name":"rig_job_id","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""},{"label":"2nd","parameter_name":"mesh_url","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""},{"label":"3rd","parameter_name":"asset_id","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""},{"label":"4th","parameter_name":"labels_json","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""},{"label":"5th","parameter_name":"face_right","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""},{"label":"6th","parameter_name":"face_left","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""},{"label":"7th","parameter_name":"body_axis","parameter_has_default":true,"parameter_default":false,"type":{"type":"boolean"},"python_type":{"type":"bool","description":""},"component":"Api","example_input":false},{"label":"8th","parameter_name":"rest_rotation","parameter_has_default":true,"parameter_default":"","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":""}],"returns":[{"label":"1st","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api"}],"api_visibility":"public","description":"Make a rigged model animatable: turn a rig made here (rig_job_id), a rigged glb/gltf/fbx at a URL, or an earlier asset (asset_id, to correct its labels or facing) into a UniMate asset with the upstream rig_preprocess pipeline: Blender import, joint labels from one anatomical vocabulary, the facing pair, the canonical T-pose, the topology condition and the canonical GLB. About 10-30 s of CPU, no GPU. Returns the asset as JSON: id (use it in animate / expand), joint names and labels, facing pair, flagged joints, URLs of preview.png (check facing and labels; view_asset shows it) and annotation.json.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/character-animation-for-agents\")\nresult = client.predict(\n\trig_job_id=\"\",\n\tmesh_url=\"\",\n\tasset_id=\"\",\n\tlabels_json=\"\",\n\tface_right=\"\",\n\tface_left=\"\",\n\tbody_axis=False,\n\trest_rotation=\"\",\n\tapi_name=\"/prepare_asset\",\n)\nprint(result)","javascript":"import { Client } from \"@gradio/client\";\n\nconst client = await Client.connect(\"townbox/character-animation-for-agents\");\nconst result = await client.predict(\"/prepare_asset\", {\n\t\trig_job_id: \"\",\n\t\tmesh_url: \"\",\n\t\tasset_id: \"\",\n\t\tlabels_json: \"\",\n\t\tface_right: \"\",\n\t\tface_left: \"\",\n\t\tbody_axis: false,\n\t\trest_rotation: \"\",\n});\n\nconsole.log(result.data);","bash":"curl -X POST http://localhost:7860/gradio_api/call/v2/prepare_asset -s -H \"Content-Type: application/json\" \\\n  -d '{\"rig_job_id\": \"\", \"mesh_url\": \"\", \"asset_id\": \"\", \"labels_json\": \"\", \"face_right\": \"\", \"face_left\": \"\", \"body_axis\": false, \"rest_rotation\": \"\"}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N http://localhost:7860/gradio_api/call/prepare_asset/$EVENT_ID","cli":"{command} predict townbox/character-animation-for-agents /prepare_asset '{\n  \"rig_job_id\": \"\",\n  \"mesh_url\": \"\",\n  \"asset_id\": \"\",\n  \"labels_json\": \"\",\n  \"face_right\": \"\",\n  \"face_left\": \"\",\n  \"body_axis\": false,\n  \"rest_rotation\": \"\"\n}'\n"}},"/animate":{"parameters":[{"label":"1st","parameter_name":"asset","parameter_has_default":false,"parameter_default":null,"type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":"..."},{"label":"2nd","parameter_name":"prompt","parameter_has_default":false,"parameter_default":null,"type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":"..."},{"label":"3rd","parameter_name":"num_samples","parameter_has_default":true,"parameter_default":1,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":1},{"label":"4th","parameter_name":"cfg_scale","parameter_has_default":true,"parameter_default":3.0,"type":{"type":"number"},"python_type":{"type":"float","description":""},"component":"Api","example_input":3.0},{"label":"5th","parameter_name":"seed","parameter_has_default":true,"parameter_default":-1,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":-1},{"label":"6th","parameter_name":"preview","parameter_has_default":true,"parameter_default":true,"type":{"type":"boolean"},"python_type":{"type":"bool","description":""},"component":"Api","example_input":true}],"returns":[{"label":"1st","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api"}],"api_visibility":"public","description":"Generate a 60-frame (2 s) motion for an asset from a text prompt with UniMate, and return the result as JSON with a URL for every output file: the animated GLB (mesh + skeleton + animation), the raw motion features (.npy), per-frame joint positions (JSON), a skeleton preview MP4 and a 6-frame contact sheet PNG (view_animation shows it). Takes a few seconds of ZeroGPU time, billed to the caller.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/character-animation-for-agents\")\nresult = client.predict(\n\tasset=\"...\",\n\tprompt=\"...\",\n\tnum_samples=1,\n\tcfg_scale=3.0,\n\tseed=-1,\n\tpreview=True,\n\tapi_name=\"/animate\",\n)\nprint(result)","javascript":"import { Client } from \"@gradio/client\";\n\nconst client = await Client.connect(\"townbox/character-animation-for-agents\");\nconst result = await client.predict(\"/animate\", {\n\t\tasset: \"...\",\n\t\tprompt: \"...\",\n\t\tnum_samples: 1,\n\t\tcfg_scale: 3.0,\n\t\tseed: -1,\n\t\tpreview: true,\n});\n\nconsole.log(result.data);","bash":"curl -X POST http://localhost:7860/gradio_api/call/v2/animate -s -H \"Content-Type: application/json\" \\\n  -d '{\"asset\": \"...\", \"prompt\": \"...\", \"num_samples\": 1, \"cfg_scale\": 3.0, \"seed\": -1, \"preview\": true}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N http://localhost:7860/gradio_api/call/animate/$EVENT_ID","cli":"{command} predict townbox/character-animation-for-agents /animate '{\n  \"asset\": \"...\",\n  \"prompt\": \"...\",\n  \"num_samples\": 1,\n  \"cfg_scale\": 3.0,\n  \"seed\": -1,\n  \"preview\": true\n}'\n"}},"/inbetween":{"parameters":[{"label":"1st","parameter_name":"reference_job_id","parameter_has_default":false,"parameter_default":null,"type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":"..."},{"label":"2nd","parameter_name":"prompt","parameter_has_default":false,"parameter_default":null,"type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":"..."},{"label":"3rd","parameter_name":"keep_frames","parameter_has_default":true,"parameter_default":"0,-1","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":"0,-1"},{"label":"4th","parameter_name":"reference_sample","parameter_has_default":true,"parameter_default":0,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":0},{"label":"5th","parameter_name":"reference_start","parameter_has_default":true,"parameter_default":0,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":0},{"label":"6th","parameter_name":"num_samples","parameter_has_default":true,"parameter_default":1,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":1},{"label":"7th","parameter_name":"cfg_scale","parameter_has_default":true,"parameter_default":3.0,"type":{"type":"number"},"python_type":{"type":"float","description":""},"component":"Api","example_input":3.0},{"label":"8th","parameter_name":"seed","parameter_has_default":true,"parameter_default":-1,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":-1},{"label":"9th","parameter_name":"preview","parameter_has_default":true,"parameter_default":true,"type":{"type":"boolean"},"python_type":{"type":"bool","description":""},"component":"Api","example_input":true}],"returns":[{"label":"1st","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api"}],"api_visibility":"public","description":"Motion in-betweening: keep the listed frames of an earlier motion (same asset) exactly and regenerate every other frame under a prompt, with UniMate's replacement-style flow sampling (upstream --inbetween). Returns the same JSON as animate (60 frames, file URLs) plus the reference and the resolved keep_frames.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/character-animation-for-agents\")\nresult = client.predict(\n\treference_job_id=\"...\",\n\tprompt=\"...\",\n\tkeep_frames=\"0,-1\",\n\treference_sample=0,\n\treference_start=0,\n\tnum_samples=1,\n\tcfg_scale=3.0,\n\tseed=-1,\n\tpreview=True,\n\tapi_name=\"/inbetween\",\n)\nprint(result)","javascript":"import { Client } from \"@gradio/client\";\n\nconst client = await Client.connect(\"townbox/character-animation-for-agents\");\nconst result = await client.predict(\"/inbetween\", {\n\t\treference_job_id: \"...\",\n\t\tprompt: \"...\",\n\t\tkeep_frames: \"0,-1\",\n\t\treference_sample: 0,\n\t\treference_start: 0,\n\t\tnum_samples: 1,\n\t\tcfg_scale: 3.0,\n\t\tseed: -1,\n\t\tpreview: true,\n});\n\nconsole.log(result.data);","bash":"curl -X POST http://localhost:7860/gradio_api/call/v2/inbetween -s -H \"Content-Type: application/json\" \\\n  -d '{\"reference_job_id\": \"...\", \"prompt\": \"...\", \"keep_frames\": \"0,-1\", \"reference_sample\": 0, \"reference_start\": 0, \"num_samples\": 1, \"cfg_scale\": 3.0, \"seed\": -1, \"preview\": true}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N http://localhost:7860/gradio_api/call/inbetween/$EVENT_ID","cli":"{command} predict townbox/character-animation-for-agents /inbetween '{\n  \"reference_job_id\": \"...\",\n  \"prompt\": \"...\",\n  \"keep_frames\": \"0,-1\",\n  \"reference_sample\": 0,\n  \"reference_start\": 0,\n  \"num_samples\": 1,\n  \"cfg_scale\": 3.0,\n  \"seed\": -1,\n  \"preview\": true\n}'\n"}},"/edit_joints":{"parameters":[{"label":"1st","parameter_name":"reference_job_id","parameter_has_default":false,"parameter_default":null,"type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":"..."},{"label":"2nd","parameter_name":"prompt","parameter_has_default":false,"parameter_default":null,"type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":"..."},{"label":"3rd","parameter_name":"keep_joints","parameter_has_default":false,"parameter_default":null,"type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":"..."},{"label":"4th","parameter_name":"reference_sample","parameter_has_default":true,"parameter_default":0,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":0},{"label":"5th","parameter_name":"reference_start","parameter_has_default":true,"parameter_default":0,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":0},{"label":"6th","parameter_name":"num_samples","parameter_has_default":true,"parameter_default":1,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":1},{"label":"7th","parameter_name":"cfg_scale","parameter_has_default":true,"parameter_default":3.0,"type":{"type":"number"},"python_type":{"type":"float","description":""},"component":"Api","example_input":3.0},{"label":"8th","parameter_name":"seed","parameter_has_default":true,"parameter_default":-1,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":-1},{"label":"9th","parameter_name":"preview","parameter_has_default":true,"parameter_default":true,"type":{"type":"boolean"},"python_type":{"type":"bool","description":""},"component":"Api","example_input":true}],"returns":[{"label":"1st","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api"}],"api_visibility":"public","description":"Text-guided joint editing: keep the listed joints of an earlier motion exactly (all 60 frames) and regenerate the other joints under a new prompt (upstream --motion_edit --keep_joints), e.g. keep the legs of a walking clip and ask for waving arms. Returns the same JSON as animate plus the kept and edited joints.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/character-animation-for-agents\")\nresult = client.predict(\n\treference_job_id=\"...\",\n\tprompt=\"...\",\n\tkeep_joints=\"...\",\n\treference_sample=0,\n\treference_start=0,\n\tnum_samples=1,\n\tcfg_scale=3.0,\n\tseed=-1,\n\tpreview=True,\n\tapi_name=\"/edit_joints\",\n)\nprint(result)","javascript":"import { Client } from \"@gradio/client\";\n\nconst client = await Client.connect(\"townbox/character-animation-for-agents\");\nconst result = await client.predict(\"/edit_joints\", {\n\t\treference_job_id: \"...\",\n\t\tprompt: \"...\",\n\t\tkeep_joints: \"...\",\n\t\treference_sample: 0,\n\t\treference_start: 0,\n\t\tnum_samples: 1,\n\t\tcfg_scale: 3.0,\n\t\tseed: -1,\n\t\tpreview: true,\n});\n\nconsole.log(result.data);","bash":"curl -X POST http://localhost:7860/gradio_api/call/v2/edit_joints -s -H \"Content-Type: application/json\" \\\n  -d '{\"reference_job_id\": \"...\", \"prompt\": \"...\", \"keep_joints\": \"...\", \"reference_sample\": 0, \"reference_start\": 0, \"num_samples\": 1, \"cfg_scale\": 3.0, \"seed\": -1, \"preview\": true}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N http://localhost:7860/gradio_api/call/edit_joints/$EVENT_ID","cli":"{command} predict townbox/character-animation-for-agents /edit_joints '{\n  \"reference_job_id\": \"...\",\n  \"prompt\": \"...\",\n  \"keep_joints\": \"...\",\n  \"reference_sample\": 0,\n  \"reference_start\": 0,\n  \"num_samples\": 1,\n  \"cfg_scale\": 3.0,\n  \"seed\": -1,\n  \"preview\": true\n}'\n"}},"/expand":{"parameters":[{"label":"1st","parameter_name":"asset","parameter_has_default":false,"parameter_default":null,"type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":"..."},{"label":"2nd","parameter_name":"prompts","parameter_has_default":false,"parameter_default":null,"type":{"type":"array","items":{"type":"string"}},"python_type":{"type":"list[str]","description":""},"component":"Api","example_input":"..."},{"label":"3rd","parameter_name":"overlap","parameter_has_default":true,"parameter_default":10,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":10},{"label":"4th","parameter_name":"num_samples","parameter_has_default":true,"parameter_default":1,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":1},{"label":"5th","parameter_name":"cfg_scale","parameter_has_default":true,"parameter_default":3.0,"type":{"type":"number"},"python_type":{"type":"float","description":""},"component":"Api","example_input":3.0},{"label":"6th","parameter_name":"seed","parameter_has_default":true,"parameter_default":-1,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":-1},{"label":"7th","parameter_name":"preview","parameter_has_default":true,"parameter_default":true,"type":{"type":"boolean"},"python_type":{"type":"bool","description":""},"component":"Api","example_input":true}],"returns":[{"label":"1st","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api"}],"api_visibility":"public","description":"Motion expansion: chain several prompts into one continuous long motion (upstream --motion_expand). One 60-frame segment per prompt; each further segment starts pinned to the last `overlap` frames of the previous one, so the result has 60 + (60 - overlap) x (prompts - 1) frames (3 prompts: 160 frames, 5.3 s) in one GLB / .npy / JSON. Returns the same JSON as animate plus prompts, overlap and the frame range of each segment. num_samples x prompts is limited to 8 per call (about 7 s of GPU time each).","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/character-animation-for-agents\")\nresult = client.predict(\n\tasset=\"...\",\n\tprompts=...,\n\toverlap=10,\n\tnum_samples=1,\n\tcfg_scale=3.0,\n\tseed=-1,\n\tpreview=True,\n\tapi_name=\"/expand\",\n)\nprint(result)","javascript":"import { Client } from \"@gradio/client\";\n\nconst client = await Client.connect(\"townbox/character-animation-for-agents\");\nconst result = await client.predict(\"/expand\", {\n\t\tasset: \"...\",\n\t\tprompts: ...,\n\t\toverlap: 10,\n\t\tnum_samples: 1,\n\t\tcfg_scale: 3.0,\n\t\tseed: -1,\n\t\tpreview: true,\n});\n\nconsole.log(result.data);","bash":"curl -X POST http://localhost:7860/gradio_api/call/v2/expand -s -H \"Content-Type: application/json\" \\\n  -d '{\"asset\": \"...\", \"prompts\": ..., \"overlap\": 10, \"num_samples\": 1, \"cfg_scale\": 3.0, \"seed\": -1, \"preview\": true}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N http://localhost:7860/gradio_api/call/expand/$EVENT_ID","cli":"{command} predict townbox/character-animation-for-agents /expand '{\n  \"asset\": \"...\",\n  \"prompts\": \"...\",\n  \"overlap\": 10,\n  \"num_samples\": 1,\n  \"cfg_scale\": 3.0,\n  \"seed\": -1,\n  \"preview\": true\n}'\n"}},"/list_assets":{"parameters":[],"returns":[{"label":"1st","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api"}],"api_visibility":"public","description":"The skeletons this service can animate: the bundled rigs (unitree_go2, eagle, shark) and every asset prepared on this Space (u_... ids), each with joint names and anatomical labels (both usable in edit_joints' keep_joints), hierarchy, facing pair, annotation flags and rest-pose GLB URL. New assets come from rig + prepare_asset, or from animate_mesh.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/character-animation-for-agents\")\nresult = client.predict(\n\tapi_name=\"/list_assets\",\n)\nprint(result)","javascript":"import { Client } from \"@gradio/client\";\n\nconst client = await Client.connect(\"townbox/character-animation-for-agents\");\nconst result = await client.predict(\"/list_assets\", {\n});\n\nconsole.log(result.data);","bash":"curl -X POST http://localhost:7860/gradio_api/call/v2/list_assets -s -H \"Content-Type: application/json\" \\\n  -d '{}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N http://localhost:7860/gradio_api/call/list_assets/$EVENT_ID","cli":"{command} predict townbox/character-animation-for-agents /list_assets '{}'\n"}},"/get_asset":{"parameters":[{"label":"1st","parameter_name":"asset_id","parameter_has_default":false,"parameter_default":null,"type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":"..."}],"returns":[{"label":"1st","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api"}],"api_visibility":"public","description":"One asset in full: joints with labels, parents and review flags, the facing pair and its alternatives, notes from the preparation, the label vocabulary hint, file URLs (preview.png, annotation.json, source) and the follow-up calls (animate, correct labels).","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/character-animation-for-agents\")\nresult = client.predict(\n\tasset_id=\"...\",\n\tapi_name=\"/get_asset\",\n)\nprint(result)","javascript":"import { Client } from \"@gradio/client\";\n\nconst client = await Client.connect(\"townbox/character-animation-for-agents\");\nconst result = await client.predict(\"/get_asset\", {\n\t\tasset_id: \"...\",\n});\n\nconsole.log(result.data);","bash":"curl -X POST http://localhost:7860/gradio_api/call/v2/get_asset -s -H \"Content-Type: application/json\" \\\n  -d '{\"asset_id\": \"...\"}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N http://localhost:7860/gradio_api/call/get_asset/$EVENT_ID","cli":"{command} predict townbox/character-animation-for-agents /get_asset '{\n  \"asset_id\": \"...\"\n}'\n"}},"/list_examples":{"parameters":[],"returns":[{"label":"1st","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api"}],"api_visibility":"public","description":"The bundled example meshes (id, description, license, URL) that rig and animate_mesh take by id, the bundled skeletons, and the real results this Space generated from them with the options that reproduce each.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/character-animation-for-agents\")\nresult = client.predict(\n\tapi_name=\"/list_examples\",\n)\nprint(result)","javascript":"import { Client } from \"@gradio/client\";\n\nconst client = await Client.connect(\"townbox/character-animation-for-agents\");\nconst result = await client.predict(\"/list_examples\", {\n});\n\nconsole.log(result.data);","bash":"curl -X POST http://localhost:7860/gradio_api/call/v2/list_examples -s -H \"Content-Type: application/json\" \\\n  -d '{}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N http://localhost:7860/gradio_api/call/list_examples/$EVENT_ID","cli":"{command} predict townbox/character-animation-for-agents /list_examples '{}'\n"}},"/get_result":{"parameters":[{"label":"1st","parameter_name":"job_id","parameter_has_default":false,"parameter_default":null,"type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":"..."}],"returns":[{"label":"1st","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api"}],"api_visibility":"public","description":"A finished result again (kept 24 h): an r_ rig, an a_ motion or a p_ animate_mesh result with its three stages; inputs, options, file URLs, timings, provenance.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/character-animation-for-agents\")\nresult = client.predict(\n\tjob_id=\"...\",\n\tapi_name=\"/get_result\",\n)\nprint(result)","javascript":"import { Client } from \"@gradio/client\";\n\nconst client = await Client.connect(\"townbox/character-animation-for-agents\");\nconst result = await client.predict(\"/get_result\", {\n\t\tjob_id: \"...\",\n});\n\nconsole.log(result.data);","bash":"curl -X POST http://localhost:7860/gradio_api/call/v2/get_result -s -H \"Content-Type: application/json\" \\\n  -d '{\"job_id\": \"...\"}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N http://localhost:7860/gradio_api/call/get_result/$EVENT_ID","cli":"{command} predict townbox/character-animation-for-agents /get_result '{\n  \"job_id\": \"...\"\n}'\n"}},"/view_rig":{"parameters":[{"label":"1st","parameter_name":"job_id","parameter_has_default":false,"parameter_default":null,"type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":"..."}],"returns":[{"label":"1st","type":{"type":"object","additionalProperties":{}},"python_type":{"type":"dict(str, Any)","description":""},"component":"Api"}],"api_visibility":"public","description":"Look at a rig: the preview PNG (mesh with the predicted skeleton drawn over it, front and side views) of a rig result, or of the rig stage of an animate_mesh result.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/character-animation-for-agents\")\nresult = client.predict(\n\tjob_id=\"...\",\n\tapi_name=\"/view_rig\",\n)\nprint(result)","javascript":"import { Client } from \"@gradio/client\";\n\nconst client = await Client.connect(\"townbox/character-animation-for-agents\");\nconst result = await client.predict(\"/view_rig\", {\n\t\tjob_id: \"...\",\n});\n\nconsole.log(result.data);","bash":"curl -X POST http://localhost:7860/gradio_api/call/v2/view_rig -s -H \"Content-Type: application/json\" \\\n  -d '{\"job_id\": \"...\"}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N http://localhost:7860/gradio_api/call/view_rig/$EVENT_ID","cli":"{command} predict townbox/character-animation-for-agents /view_rig '{\n  \"job_id\": \"...\"\n}'\n"}},"/view_animation":{"parameters":[{"label":"1st","parameter_name":"job_id","parameter_has_default":false,"parameter_default":null,"type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":"..."},{"label":"2nd","parameter_name":"sample","parameter_has_default":true,"parameter_default":0,"type":{"type":"integer"},"python_type":{"type":"int","description":""},"component":"Api","example_input":0}],"returns":[{"label":"1st","type":{"type":"object","additionalProperties":{}},"python_type":{"type":"dict(str, Any)","description":""},"component":"Api"}],"api_visibility":"public","description":"Look at a generated motion: a PNG contact sheet of 6 skeleton frames spanning the whole clip (left to right) of one sample of a motion result, or of the animation stage of an animate_mesh result.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/character-animation-for-agents\")\nresult = client.predict(\n\tjob_id=\"...\",\n\tsample=0,\n\tapi_name=\"/view_animation\",\n)\nprint(result)","javascript":"import { Client } from \"@gradio/client\";\n\nconst client = await Client.connect(\"townbox/character-animation-for-agents\");\nconst result = await client.predict(\"/view_animation\", {\n\t\tjob_id: \"...\",\n\t\tsample: 0,\n});\n\nconsole.log(result.data);","bash":"curl -X POST http://localhost:7860/gradio_api/call/v2/view_animation -s -H \"Content-Type: application/json\" \\\n  -d '{\"job_id\": \"...\", \"sample\": 0}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N http://localhost:7860/gradio_api/call/view_animation/$EVENT_ID","cli":"{command} predict townbox/character-animation-for-agents /view_animation '{\n  \"job_id\": \"...\",\n  \"sample\": 0\n}'\n"}},"/view_asset":{"parameters":[{"label":"1st","parameter_name":"asset_id","parameter_has_default":false,"parameter_default":null,"type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api","example_input":"..."}],"returns":[{"label":"1st","type":{"type":"object","additionalProperties":{}},"python_type":{"type":"dict(str, Any)","description":""},"component":"Api"}],"api_visibility":"public","description":"Look at what the motion model is told about an asset: its canonical T-pose with the facing pair and the forward direction, a front view, and every joint with its label (preview.png of a prepared asset). Check that the forward arrow points where the character faces and that left / right labels are on the right limbs.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/character-animation-for-agents\")\nresult = client.predict(\n\tasset_id=\"...\",\n\tapi_name=\"/view_asset\",\n)\nprint(result)","javascript":"import { Client } from \"@gradio/client\";\n\nconst client = await Client.connect(\"townbox/character-animation-for-agents\");\nconst result = await client.predict(\"/view_asset\", {\n\t\tasset_id: \"...\",\n});\n\nconsole.log(result.data);","bash":"curl -X POST http://localhost:7860/gradio_api/call/v2/view_asset -s -H \"Content-Type: application/json\" \\\n  -d '{\"asset_id\": \"...\"}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N http://localhost:7860/gradio_api/call/view_asset/$EVENT_ID","cli":"{command} predict townbox/character-animation-for-agents /view_asset '{\n  \"asset_id\": \"...\"\n}'\n"}},"/service_info":{"parameters":[],"returns":[{"label":"1st","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api"}],"api_visibility":"public","description":"What this service does, every parameter with its default, limits, both models' provenance and licenses, and who pays the GPU time for this connection.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/character-animation-for-agents\")\nresult = client.predict(\n\tapi_name=\"/service_info\",\n)\nprint(result)","javascript":"import { Client } from \"@gradio/client\";\n\nconst client = await Client.connect(\"townbox/character-animation-for-agents\");\nconst result = await client.predict(\"/service_info\", {\n});\n\nconsole.log(result.data);","bash":"curl -X POST http://localhost:7860/gradio_api/call/v2/service_info -s -H \"Content-Type: application/json\" \\\n  -d '{}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N http://localhost:7860/gradio_api/call/service_info/$EVENT_ID","cli":"{command} predict townbox/character-animation-for-agents /service_info '{}'\n"}},"/guide":{"parameters":[],"returns":[{"label":"1st","type":{"type":"string"},"python_type":{"type":"str","description":""},"component":"Api"}],"api_visibility":"public","description":"The full agent guide (same as /llms.txt): workflow, parameters, outputs, errors, examples.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/character-animation-for-agents\")\nresult = client.predict(\n\tapi_name=\"/guide\",\n)\nprint(result)","javascript":"import { Client } from \"@gradio/client\";\n\nconst client = await Client.connect(\"townbox/character-animation-for-agents\");\nconst result = await client.predict(\"/guide\", {\n});\n\nconsole.log(result.data);","bash":"curl -X POST http://localhost:7860/gradio_api/call/v2/guide -s -H \"Content-Type: application/json\" \\\n  -d '{}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N http://localhost:7860/gradio_api/call/guide/$EVENT_ID","cli":"{command} predict townbox/character-animation-for-agents /guide '{}'\n"}}},"unnamed_endpoints":{}}