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.
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.
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.
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.
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.
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.
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.
| Method | Path | Purpose |
|---|---|---|
| POST | /v1/motion/sessions | Create a Motion Session |
| POST | /v1/motion/sessions/:sessionId/sources | Attach a source |
| POST | /v1/motion/sessions/:sessionId/sources/:sourceId/data | Ingest JSON or CSV observations |
| GET | /v1/motion/sessions/:sessionId | Read session, sources, metrics and events |
| GET | /v1/motion/sessions/:sessionId/observations | List observations |
| POST | /v1/motionbench/evaluations | Compare two robot runs |
| GET | /v1/motionbench/evaluations/:id | Read an evaluation |
| GET | /v1/analyses | List human movement analyses |
| GET | /v1/analyses/:id | Read one analysis |
| GET | /v1/workspace | Workspace info for the API key |
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.
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.
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.