# Extension API

> REST API reference for the Wandelbots NOVA extension for NVIDIA Isaac Sim. Manage stages, prims, cameras, motion groups, collision worlds, and trajectory playback from your own code.

The Wandelbots NOVA extension serves its own REST API from inside NVIDIA Isaac Sim, so
everything you can do through the extension UI is also available to your own code. Use it
to load and manipulate USD stages, bind articulations to motion groups, configure virtual
cameras, maintain the collision world, and record or replay trajectories.

The API is served under `/omniservice/api/v2` on the machine running Isaac Sim, so all
paths below are relative to a base URL such as `http://localhost:8011/omniservice/api/v2`.
The port is assigned when the extension starts and is usually `8011`. To read the port
your instance is using, open the Wandelbots NOVA menu in Isaac Sim and select the Isaac
Sim Extension API; the port is the number after the colon in the URL that opens. See the
[FAQ](/simulation/faq) if the connection fails.

For Python, the [`wandelbots-isaacsim-api`](https://pypi.org/project/wandelbots-isaacsim-api/)
package wraps these endpoints in a generated client. The
[synthetic data guide](/simulation/synthetic-data) shows it in use.

This page renders an interactive API reference on the website.

The full API spec is available as a JSON file: /specs/simulation/openapi.json

### Stage

| Method | Path | Summary |
| - | - | - |
| **GET** | `/stage/scene` | Get Active Scene |
| **PUT** | `/stage/scene` | Open Scene |
| **GET** | `/stage/motion-groups` | List Stage Motion Groups |
| **GET** | `/stage/units` | Get Stage Units |
| **PUT** | `/stage/units` | Update Stage Units |
| **PATCH** | `/stage/simulation/timeline/{action}` | Timeline Action |
| **GET** | `/stage/simulation` | Simulation State |
| **GET** | `/stage/configuration` | Export Configuration |
| **POST** | `/stage/configuration` | Import Configuration |

### Prims

| Method | Path | Summary |
| - | - | - |
| **GET** | `/prims/poses` | Get Pose |
| **PUT** | `/prims/poses` | Update Pose |
| **GET** | `/prims/poses/relative` | Get Relative Pose |
| **POST** | `/prims/poses/relative` | Apply Relative Pose |
| **GET** | `/prims/labels` | List Semantic Labels |
| **PUT** | `/prims/labels` | Set Semantic Label |
| **DELETE** | `/prims/labels` | Clear Semantic Labels |
| **GET** | `/prims/poses/default` | List Default Poses |
| **PUT** | `/prims/poses/default` | Assign Default Poses |
| **DELETE** | `/prims/poses/default` | Clear Default Poses |
| **POST** | `/prims/poses/default/reset` | Reset Prim Poses To Default |
| **PUT** | `/prims/metadata` | Set Prim Metadata |
| **DELETE** | `/prims/metadata` | Remove Prim Metadata |
| **PATCH** | `/prims/visibility` | Set Prim Visibility |
| **GET** | `/prims/selected` | List Selected Prims |
| **PUT** | `/prims/selected` | Select Prims |
| **PATCH** | `/prims/physics/joints` | Set Joints |
| **PATCH** | `/prims/physics/colliders/` | Update Colliders |

### Periphery (Camera)

| Method | Path | Summary |
| - | - | - |
| **GET** | `/periphery/cameras/prims` | List Camera Prims |
| **GET** | `/periphery/cameras/active` | Get Active Camera |
| **PUT** | `/periphery/cameras/active` | Set Active Camera |
| **GET** | `/periphery/cameras/capture/color` | Capture Color Image |
| **GET** | `/periphery/cameras/capture/normals` | Capture Normals Image |
| **GET** | `/periphery/cameras/capture/depth` | Capture Depth Image |
| **GET** | `/periphery/cameras/capture/pointcloud` | Capture Pointcloud |
| **GET** | `/periphery/cameras/capture/bounding-box-2d` | Capture Boundingbox 2D |
| **GET** | `/periphery/cameras/capture/bounding-box-3d` | Capture Boundingbox 3D |
| **GET** | `/periphery/cameras/capture/instance-segmentation` | Capture Instance Segmentation |
| **GET** | `/periphery/cameras/capture/semantic-segmentation` | Capture Semantic Segmentation |

### UI

| Method | Path | Summary |
| - | - | - |
| **GET** | `/ui/visibility` | Get Visibility |
| **PATCH** | `/ui/visibility` | Set Visibility |

### Teaching

| Method | Path | Summary |
| - | - | - |
| **GET** | `/teaching/ghost-objects/sources` | List Ghost Object Sources |
| **GET** | `/teaching/tcps/sources` | List Tcp Sources |
| **GET** | `/teaching/ghost-objects` | List Ghost Objects |
| **POST** | `/teaching/ghost-objects` | Create Ghost Object |
| **DELETE** | `/teaching/ghost-objects` | Clear Ghost Objects |
| **GET** | `/teaching/ghost-objects/export` | Export Ghost Objects |

### Trajectory Planner

| Method | Path | Summary |
| - | - | - |
| **GET** | `/trajectory-planner/export` | Export Trajectory Plans |
| **GET** | `/trajectory-planner/{skill_name}/export` | Export Trajectory Plan Skill |

### Manipulators (Motion-Group)

| Method | Path | Summary |
| - | - | - |
| **GET** | `/manipulators/motion-groups` | List Motion Groups |
| **POST** | `/manipulators/motion-groups` | Create Motion Group |
| **DELETE** | `/manipulators/motion-groups` | Clear Motion Groups |
| **GET** | `/manipulators/motion-groups/{prim_path}` | Get Motion Group |
| **PUT** | `/manipulators/motion-groups/{prim_path}` | Update Motion Group Motion Stream |
| **DELETE** | `/manipulators/motion-groups/{prim_path}` | Remove Motion Group |

### Trajectory

| Method | Path | Summary |
| - | - | - |
| **GET** | `/trajectories/` | List Trajectories |
| **POST** | `/trajectories/` | Create Trajectory |
| **DELETE** | `/trajectories/{name}` | Remove Trajectory |
| **PATCH** | `/trajectories/{name}` | Update Trajectory |
| **POST** | `/trajectories/{name}/markers` | Create Markers |
| **DELETE** | `/trajectories/{name}/markers` | Remove Markers |

### Collision World

| Method | Path | Summary |
| - | - | - |
| **POST** | `/physics/collision/sweep` | Sweep Collisions |

### Robot Overlay (Experimental)

| Method | Path | Summary |
| - | - | - |
| **PUT** | `/overlays/robot/visibility` | Set Robot Overlay Visibility |

### Nucleus

| Method | Path | Summary |
| - | - | - |
| **POST** | `/nucleus/server` | Add Nucleus Server |
| **GET** | `/nucleus/servers` | List Nucleus Servers |
| **POST** | `/nucleus/server/token` | Add Nucleus Api Token |
| **DELETE** | `/nucleus/server/token` | Remove Nucleus Api Token |
| **DELETE** | `/nucleus/server/tokens` | Remove All Nucleus Api Tokens |

### Other

| Method | Path | Summary |
| - | - | - |
| **GET** | `/status` | Get Status |
| **GET** | `/version` | Get Versions |
| **POST** | `/auth/token` | Authenticate |
