Motion API: sessions, sources and structured movement data

Motion API is how products and partners create Motion Sessions, attach sources, ingest observations and request MotionBench comparisons. The routes below are taken from the current API contracts. Access uses an API key and motion:read or motion:write scopes. This is not a self-serve public sandbox.

Motion Sessions

POST /v1/motion/sessions creates a session. The body includes entity (type human, robot, drone or other, optional label and external_id), session_type, optional idempotency_key, metadata and started_at. GET /v1/motion/sessions/:sessionId returns the session with entities, sources, derived metrics, events and observation counts.

Sources

POST /v1/motion/sessions/:sessionId/sources attaches a source. Type may be video, sensor, wearable, telemetry, manual or derived. Optional fields include provider (default generic), format, device, sample_rate_hz and time bounds. POST /v1/motion/sessions/:sessionId/sources/:sourceId/data accepts JSON observations, text/csv, or a multipart CSV file up to 10 MB.

Observations

GET /v1/motion/sessions/:sessionId/observations lists timestamped observations. Query parameters: limit (default 1000, max 5000), offset, optional source_id. Each observation has a channel, value (number or number array), optional unit, confidence and coordinate_frame.

Metrics

Derived metrics are stored per session (metric_key, value, unit, analyzer, algorithm_version, optional window). They are returned on GET /v1/motion/sessions/:sessionId. MotionBench also writes evaluation metrics onto comparison results.

Events

Motion events are timestamped records with event_type, optional source and entity, confidence and a JSON payload. They are returned with the session. Ingestion can include events in JSON payloads. There is no separate public list-events path beyond session read.

Comparisons

POST /v1/motionbench/evaluations compares two sessions ({ reference_session_id, candidate_session_id }). GET /v1/motionbench/evaluations/:id reads the result. Human-movement analyses remain on GET /v1/analyses and GET /v1/analyses/:id. Workspace metadata is GET /v1/workspace.

Public Motion Intelligence routes in the current API

MethodPathPurpose
POST/v1/motion/sessionsCreate a Motion Session
POST/v1/motion/sessions/:sessionId/sourcesAttach a source
POST/v1/motion/sessions/:sessionId/sources/:sourceId/dataIngest JSON or CSV observations
GET/v1/motion/sessions/:sessionIdRead session, sources, metrics and events
GET/v1/motion/sessions/:sessionId/observationsList observations
POST/v1/motionbench/evaluationsCompare two robot runs
GET/v1/motionbench/evaluations/:idRead an evaluation
GET/v1/analysesList human movement analyses
GET/v1/analyses/:idRead one analysis
GET/v1/workspaceWorkspace info for the API key

FAQ

How do I authenticate to Motion API?

Requests require an x-api-key header. Write operations on motion routes need the motion:write scope; GET needs motion:read. Keys are issued through guided onboarding, not a public signup form.

Does Motion API expose admin routes?

No. This page documents workspace-scoped /v1/motion, /v1/motionbench, /v1/analyses and /v1/workspace contracts. Internal admin surfaces are not part of the public developer interface.

Where should robotics teams start?

Create robot Motion Sessions, ingest telemetry, then call MotionBench evaluations. See MotionBench and Fusion for evaluation and multimodal context.

Loading Arisole. If the interactive app does not start, continue with the public links above.