Skip to main content
POST
Extract Motion (dynamic-fbx)
Upload a motion video and get the animation back as animation.glb + animation.fbx. Send it as multipart/form-data.
Asynchronous task. This endpoint returns a task_id immediately and does not block. Poll Get Extract Task until status is complete.State machine: queuedprocessingcomplete | failed
Binary upload. Send the raw file directly as multipart/form-data — no URL or storage path is required.
Video limits: uploads are limited to 100 MB file size and 0.5–600 seconds (10 minutes) duration. Resolution must be at least 64×64 with even width and height. Files outside these limits are rejected with 400 CS-UORC01-002.

Parameters

Send as multipart/form-data.

Pricing

Motion extraction is billed by input video duration: 5 credits per second, rounded up to the whole second. Credits are reserved when the task is created, settled when the task completes successfully, and automatically refunded if the task fails. Insufficient balance returns 402 CS-UORC01-008.

Idempotent retries

The task_id form field is optional. Supplying your own task_id enables idempotent retries: re-creating with the same task_id returns 409 CS-UORC01-015. If omitted, the server generates one (format ext_ + 16 hex chars).

Response

workflow_id is an internal processing identifier — clients can ignore it and poll using task_id.

Error Handling

If the request fails, the response includes a structured error with an error_code:
Common error codes for this endpoint: See Error Codes for the full list. When contacting [email protected], include the error_code and your task_id.

Examples

Next Steps

After creating the task, poll Get Extract Task every 5-10 seconds. When status is complete, read the signed download links from result (glb_url, fbx_url).

Authorizations

Authorization
string
header
required

API key passed as Bearer token

Body

multipart/form-data
video
file
required

Input video file (motion source). MP4, MOV, WebM, etc.

task_id
string

Optional client-supplied task id for idempotent retries. Reusing an existing id returns 409. If omitted, the server generates one (format ext_ + 16 hex chars).

Example:

"ext_0f9e8d7c6b5a4332"

enable_smoothing
boolean
default:false

Whether to enable motion smoothing.

target_fps
number<float>

Target frame rate. Must be > 0. Omit to skip resampling.

Example:

30

Response

Extract task created

task_id
string

Task id. Use it to poll GET /api/extract/{task_id}.

Example:

"ext_a1b2c3d4e5f60718"

kind
enum<string>

Extract task kind.

Available options:
static_bin,
dynamic_fbx
Example:

"static_bin"

workflow_id
string

Internal processing identifier. Clients can ignore it — poll with task_id.

Example:

"uorc-extract-ext_a1b2c3d4e5f60718"

status
string
Example:

"queued"