Skip to main content

Lesson

APIs

Service boundaries, contracts, and where to find live references.

Cyberwave exposes its capabilities through three distinct API surfaces, each serving a specific purpose in the robotics stack.

1. REST API (Control Plane)

Purpose: Configuration, Management, and Non-Realtime Operations.

  • Technology: JSON over HTTP (powered by django-ninja).
  • Reference: See the official API overview for how REST vs MQTT is intended to be used.
  • Docs: Live OpenAPI docs are available at /api/v1/docs/ on your instance, and the schema at /api/v1/openapi.json.

REST domains that exist in the codebase today

  • Identity & org structure: /users (workspaces, orgs, plans, profile, workspace members)
  • Assets & uploads: /assets, /attachments (including large upload flows)
  • Projects & environments: /projects, /environments
  • Digital twins: /twins (twin creation + state/joint updates + URDF/twin URDF endpoints)
  • Edges: /edges (edge registration / management)
  • Workflows: /workflows (workflow nodes, connections, executions)
  • Data capture: /episodes, /datasets (generation requests + metadata)
  • ML catalog & training: /mlmodels, /mltrainings
  • Controller policies: /controller-policies
  • Invitations: /invitations

2. MQTT API (Data Plane)

Purpose: High-Frequency Telemetry and Asynchronous Command & Control.

  • Technology: Pub/Sub messaging (MQTT 5.0).
  • Structure: Topics are hierarchically organized by tenant and asset (e.g., /{tenant_id}/{asset_id}/telemetry).
  • Usage: Used by the SDKs to push state updates (up to 100Hz) and receive mission directives.

3. WebRTC API (Video Plane)

Purpose: Ultra-low latency video and audio streaming.

  • Technology: Peer-to-Peer (P2P) or TURN-relayed UDP streams.
  • Usage: The API handles the Signaling phase (SDP exchange) to establish a direct pipe between the robot's camera and the user's browser.

All endpoints are secured via API Tokens (for robots/scripts) or OAuth2 (for users).

More tracks

Keep exploring Cyberwave Learn

Every track is defined in markdown so adding new lessons stays fast and versioned.