Developers

The studio is one client of the API. You can be another.

Everything the studio does goes through the same REST endpoints: upload a character, plan a prompt, generate, download. Batch a hundred prompts overnight, wire it into a build step, or put a prompt box in your own tool.

1. Create a key

Account → API keys → New key. Send it as a Bearer token or in an X-API-Key header. Keys act as your account: same credits, same characters.

export MOCAPLESS_KEY=mf_...

2. Upload a character (once)

Any rigged FBX, GLB or DAE - or an un-rigged one, which is rigged for you. The response is pending until the skeleton has been read; poll it until status is ready.

curl -X POST https://api.mocapless.com/v1/assets \
  -H "Authorization: Bearer $MOCAPLESS_KEY" \
  -F "file=@character.fbx"

curl https://api.mocapless.com/v1/assets/<asset_id> \
  -H "Authorization: Bearer $MOCAPLESS_KEY"

3. Plan (free) - see the beats and the price

Planning never spends credits. It returns the beats the model will perform, the cost in credits, and your balance, so a pipeline can decide before it pays.

curl -X POST https://api.mocapless.com/v1/plan \
  -H "Authorization: Bearer $MOCAPLESS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "a tired soldier limps forward, stops, looks over his shoulder, then sits down"}'

4. Generate

Returns 202 with a job. asset_id is optional: the most recent ready character is used without it. formats can be any of glb, fbx, bvh; engine is auto by default, or neural / procedural to force one.

curl -X POST https://api.mocapless.com/v1/generate \
  -H "Authorization: Bearer $MOCAPLESS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "a tired soldier limps forward, stops, looks over his shoulder, then sits down",
    "asset_id": "<asset_id>",
    "formats": ["fbx", "glb"],
    "loop": false
  }'

5. Wait, then download

Poll the job, or open the server-sent events stream at /v1/jobs/<id>/events for live progress. When status is succeeded, outputs holds signed URLs for each format. A failed job refunds its credits automatically.

curl https://api.mocapless.com/v1/jobs/<job_id> \
  -H "Authorization: Bearer $MOCAPLESS_KEY"

# outputs: [{"kind": "fbx", "url": "..."}, {"kind": "glb", "url": "..."}, ...]

MCP

Inside Claude, Cursor and Windsurf

The mocapless-mcp server exposes the same flow as tools for any MCP client: an agent can upload a character, quote a prompt, generate the clip, wait, and save the files - and, next to an Unreal or Unity MCP server, import the result into your project in the same conversation.

{
  "mcpServers": {
    "mocapless": {
      "command": "uvx",
      "args": ["mocapless-mcp"],
      "env": { "MOCAPLESS_API_KEY": "mf_..." }
    }
  }
}

Claude Desktop: paste into claude_desktop_config.json. Claude Code: claude mcp add mocapless -e MOCAPLESS_API_KEY=mf_... -- uvx mocapless-mcp. Tools: account, list_characters, upload_character, plan_motion, generate_animation, get_job, recent_animations, share_link.

Reference

The full OpenAPI reference, with every field and response, is generated from the running service:

Rate limits apply per account. Prices are in credits, quoted by /v1/plan before any generation; failed jobs are refunded. Questions: hello@mocapless.com.