{"named_endpoints":{"/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 a rigged skeleton 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 (use view_animation to look at it). Takes a few seconds of ZeroGPU time, billed to the caller.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/unimate-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/unimate-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 https://townbox-unimate-for-agents.hf.space/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 https://townbox-unimate-for-agents.hf.space/gradio_api/call/animate/$EVENT_ID","cli":"{command} predict townbox/unimate-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 result (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/unimate-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/unimate-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 https://townbox-unimate-for-agents.hf.space/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 https://townbox-unimate-for-agents.hf.space/gradio_api/call/inbetween/$EVENT_ID","cli":"{command} predict townbox/unimate-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 result 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 flapping wings. Returns the same JSON as animate plus the kept and edited joints.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/unimate-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/unimate-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 https://townbox-unimate-for-agents.hf.space/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 https://townbox-unimate-for-agents.hf.space/gradio_api/call/edit_joints/$EVENT_ID","cli":"{command} predict townbox/unimate-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/unimate-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/unimate-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 https://townbox-unimate-for-agents.hf.space/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 https://townbox-unimate-for-agents.hf.space/gradio_api/call/expand/$EVENT_ID","cli":"{command} predict townbox/unimate-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, with their joint names and anatomical labels (both usable in edit_joints' keep_joints), hierarchy and rest-pose GLB URL. Your own rigged asset can be added with POST /api/assets (a zipped data_process.rig_preprocess output).","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/unimate-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/unimate-for-agents\");\nconst result = await client.predict(\"/list_assets\", {\n});\n\nconsole.log(result.data);","bash":"curl -X POST https://townbox-unimate-for-agents.hf.space/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 https://townbox-unimate-for-agents.hf.space/gradio_api/call/list_assets/$EVENT_ID","cli":"{command} predict townbox/unimate-for-agents /list_assets '{}'\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): mode, prompt, seed, per-sample file URLs, timings, provenance.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/unimate-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/unimate-for-agents\");\nconst result = await client.predict(\"/get_result\", {\n\t\tjob_id: \"...\",\n});\n\nconsole.log(result.data);","bash":"curl -X POST https://townbox-unimate-for-agents.hf.space/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 https://townbox-unimate-for-agents.hf.space/gradio_api/call/get_result/$EVENT_ID","cli":"{command} predict townbox/unimate-for-agents /get_result '{\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 result.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/unimate-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/unimate-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 https://townbox-unimate-for-agents.hf.space/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 https://townbox-unimate-for-agents.hf.space/gradio_api/call/view_animation/$EVENT_ID","cli":"{command} predict townbox/unimate-for-agents /view_animation '{\n  \"job_id\": \"...\",\n  \"sample\": 0\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, model provenance and licenses, and who pays the GPU time for this connection.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/unimate-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/unimate-for-agents\");\nconst result = await client.predict(\"/service_info\", {\n});\n\nconsole.log(result.data);","bash":"curl -X POST https://townbox-unimate-for-agents.hf.space/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 https://townbox-unimate-for-agents.hf.space/gradio_api/call/service_info/$EVENT_ID","cli":"{command} predict townbox/unimate-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, prompting advice, errors, examples.","code_snippets":{"python":"from gradio_client import Client\n\nclient = Client(\"townbox/unimate-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/unimate-for-agents\");\nconst result = await client.predict(\"/guide\", {\n});\n\nconsole.log(result.data);","bash":"curl -X POST https://townbox-unimate-for-agents.hf.space/gradio_api/call/v2/guide -s -H \"Content-Type: application/json\" \\\n  -d '{}' \\\n  | awk -F'\"' '{ print $4}' \\\n  | read EVENT_ID; curl -N https://townbox-unimate-for-agents.hf.space/gradio_api/call/guide/$EVENT_ID","cli":"{command} predict townbox/unimate-for-agents /guide '{}'\n"}}},"unnamed_endpoints":{}}