API Documentation

v1

Nexus Human API

The Nexus Human API provides programmatic access to all platform features including model management, animation control, natural language commands, and high-quality rendering. All endpoints require authentication via Bearer token.

Base URLhttps://dighuman-qz82esdm.manus.space/api/v1

Digital Human Management

POST/api/v1/models

Create a new digital human model (upload or parametric)

Request Body
{
  "name": "My Avatar",
  "sourceType": "uploaded",
  "description": "A custom digital human"
}
Response
{ "id": 1 }
GET/api/v1/models

List all digital humans for the authenticated user

Response
[{
  "id": 1,
  "name": "My Avatar",
  "status": "ready",
  "isRigged": "yes",
  "boneCount": 65,
  "vertexCount": 12500
}]
GET/api/v1/models/:id

Get detailed information about a specific digital human

Response
{
  "id": 1,
  "name": "My Avatar",
  "sourceType": "uploaded",
  "status": "ready",
  "originalFileUrl": "https://...",
  "processedFileUrl": "https://...",
  "isRigged": "yes",
  "boneCount": 65,
  "vertexCount": 12500
}
POST/api/v1/models/:id/upload

Upload a 3D model file (FBX/GLB) for an existing digital human

Request Body
{
  "fileName": "character.glb",
  "fileData": "<base64_encoded>",
  "fileFormat": "glb"
}
Response
{ "url": "https://...", "fileKey": "models/..." }
DELETE/api/v1/models/:id

Delete a digital human model

Response
{ "success": true }

Animation & Action Control

GET/api/v1/animations/presets

Get all 6 preset animations (idle, wave, walk, dance, talk, bow)

Response
[{
  "presetCode": "idle",
  "name": "Idle",
  "isLooping": "yes",
  "duration": 4.0
}, ...]
POST/api/v1/actions/preset

Execute a preset action on a digital human

Request Body
{
  "digitalHumanId": 1,
  "actionCode": "wave"
}
Response
{
  "action": "wave",
  "success": true,
  "message": "Executing wave animation"
}
POST/api/v1/actions/natural-language

Control digital human with natural language (LLM-powered)

Request Body
{
  "digitalHumanId": 1,
  "text": "向我挥手打招呼"
}
Response
{
  "action": "wave",
  "confidence": 0.95,
  "reasoning": "The user wants the avatar to wave hello",
  "success": true
}

High-Quality Rendering

POST/api/v1/renders

Submit a path-traced render job (Maya/OC quality)

Request Body
{
  "digitalHumanId": 1,
  "qualityPreset": "ultra",
  "resolutionWidth": 3840,
  "resolutionHeight": 2160,
  "outputFormat": "png"
}
Response
{ "id": 1 }
GET/api/v1/renders/:jobId

Check render job status and get result URL

Response
{
  "id": 1,
  "status": "completed",
  "progress": 100,
  "qualityPreset": "ultra",
  "outputFileUrl": "https://...",
  "completedAt": "2026-03-02T..."
}

WebSocket Real-time Control

WS/ws

Real-time bidirectional channel for action control and status updates

Request Body
// Send action command
{
  "type": "action_command",
  "payload": {
    "digitalHumanId": 1,
    "action": "dance"
  },
  "timestamp": 1709337600000
}
Response
// Receive action response
{
  "type": "action_response",
  "payload": {
    "action": "dance",
    "success": true
  },
  "timestamp": 1709337600100
}

// Receive render progress
{
  "type": "render_progress",
  "payload": {
    "jobId": 1,
    "progress": 45
  },
  "timestamp": 1709337610000
}

Mixamo Auto-Rigging

POST/api/v1/mixamo/rig

Start automatic skeleton binding via Mixamo API

Request Body
{
  "digitalHumanId": 1
}
Response
{
  "taskId": 1,
  "status": "uploading",
  "message": "Rigging task started"
}
GET/api/v1/mixamo/status/:taskId

Check rigging task status

Response
{
  "id": 1,
  "status": "completed",
  "boneCount": 65,
  "riggedFileUrl": "https://..."
}

API Key Management

POST/api/v1/keys

Create a new API key with custom permissions and rate limits

Request Body
{
  "name": "Production Server",
  "rateLimit": 60,
  "expiresInDays": 90,
  "permissions": ["models", "animations", "actions"]
}
Response
{
  "id": 1,
  "key": "nhp_abc123...",
  "keyPrefix": "nhp_abc1"
}
DELETE/api/v1/keys/:id

Revoke an API key

Response
{ "success": true }

HeyGen LiveAvatar

POST/api/v1/heygen/session

Create a new LiveAvatar streaming session

Request Body
{
  "quality": "high",
  "emotion": "Friendly"
}
Response
{
  "sessionId": "sess_abc123",
  "dbId": 1,
  "sdp": "...",
  "iceServers": [...]
}
POST/api/v1/heygen/task

Send a speak/repeat task to the avatar

Request Body
{
  "sessionId": "sess_abc123",
  "text": "Hello everyone!",
  "taskType": "talk"
}
Response
{ "success": true }
POST/api/v1/heygen/close

Close an active LiveAvatar session

Request Body
{
  "sessionId": "sess_abc123",
  "dbId": 1
}
Response
{ "success": true }