> For the complete documentation index, see [llms.txt](https://docs.openmind.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.openmind.com/full-autonomy-guidelines/api_endpoints.md).

# API Overview

The OM1 autonomy REST APIs — system endpoints, live monitoring, and where each feature's endpoints live.

The OM1 ROS2 SDK exposes two REST APIs for controlling and monitoring an autonomous robot:

| API                  | Port   | What it's for                                                        |
| -------------------- | ------ | -------------------------------------------------------------------- |
| **Orchestrator API** | `5000` | Start/stop autonomy processes and manage maps, routes, and locations |
| **Navigation API**   | `5001` | Read live navigation and localization data                           |

> Orchestrator endpoints return a JSON object with a `status` field (`"success"`, `"partial_success"`, or `"error"`). Several `GET` endpoints return their payload as a **JSON-encoded string** in the `message` field — decode `message` a second time to read the fields.

This page covers the **system-wide endpoints** that aren't tied to a single feature. Each feature's own endpoints are documented in that feature's guide — see the [index below](#feature-endpoints).

### System status

#### `GET /status`

The one call to check what's running and the battery state before starting or stopping anything. The `message` field is a JSON-encoded string:

```json
{
  "status": "success",
  "message": "{\"slam_status\": \"stopped\", \"nav2_status\": \"running\", \"nav3d_status\": \"stopped\", \"base_control_status\": \"running\", \"patrol_status\": \"stopped\", \"charging_dock_status\": \"stopped\", \"is_charging\": false, \"battery_soc\": 87.0, \"battery_current\": -500.0, \"battery_voltage\": 32.4, \"battery_temperature\": 25.0, \"current_patrol\": {\"map_name\": \"kitchen\", \"route_name\": null}, \"robot_type\": \"go2\", \"slam_3d_supported\": true}"
}
```

**Decoded `message` fields:**

| Field                                                                                                        | Type                       | Description                                                                                                                  |
| ------------------------------------------------------------------------------------------------------------ | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `slam_status`, `nav2_status`, `nav3d_status`, `base_control_status`, `patrol_status`, `charging_dock_status` | `"running"` \| `"stopped"` | Per-process status                                                                                                           |
| `is_charging`                                                                                                | `bool`                     | Whether the robot is charging                                                                                                |
| `battery_soc`                                                                                                | `float`                    | Battery state of charge (%)                                                                                                  |
| `battery_current`                                                                                            | `float`                    | mA; negative = discharging, positive = charging                                                                              |
| `battery_voltage`                                                                                            | `float`                    | Pack voltage (V)                                                                                                             |
| `battery_temperature`                                                                                        | `float`                    | °C                                                                                                                           |
| `current_patrol`                                                                                             | `object` \| `null`         | Map (and route, if any) currently loaded, or `null`. Precedence: patrol > navigation > 3D nav; only `map_name` is guaranteed |
| `robot_type`                                                                                                 | `str`                      | e.g. `"go2"`, `"g1"`, `"tron"`, `"m20"`                                                                                      |
| `use_sim`                                                                                                    | `bool`                     | Whether the robot is running in simulation — affects what's supported (e.g. 3D SLAM on Go2)                                  |
| `slam_3d_supported`                                                                                          | `bool`                     | Whether this robot has a 3D SLAM (geometry) stack — use this to decide whether to offer 3D SLAM                              |
| `slam_3d_color_supported`                                                                                    | `bool`                     | Whether this robot has the 3D color stack (`3d_color` / `3d_full`)                                                           |
| `patrol_mode`, `patrol_phase`                                                                                | `str`                      | Patrol supervisor mode (`manual`/`continuous`/`scheduled`) and phase                                                         |
| `patrol_next_map_name`, `patrol_next_route_name`, `patrol_next_run_at`                                       | `str` \| `null`            | The next scheduled patrol and when it's due                                                                                  |

See [Robot & Simulation Support](/full-autonomy-guidelines/features/robot-support.md) for how `robot_type`, `use_sim`, and the `*_supported` flags combine.

### Base control

Base control is the low-level motor layer; it must be running for the robot to move, and it's a prerequisite rather than a feature of its own.

```bash
curl -X POST http://<robot>:5000/start/base_control -H 'Content-Type: application/json' -d '{}'
curl -X POST http://<robot>:5000/stop/base_control  -H 'Content-Type: application/json' -d '{}'
```

`/start/base_control` accepts an optional `launch_file` (default `base_control_launch.py`), and returns `400` if SLAM or navigation is already running.

### Live monitoring (Navigation API, `:5001`)

Read-only endpoints for dashboards and health checks. (Sending navigation goals lives with [Navigation](/full-autonomy-guidelines/features/navigation.md).)

| Endpoint                 | Returns                                                                                                                              |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| `GET /api/status`        | API health — `{ "status": "OK", "message": "..." }`                                                                                  |
| `GET /api/pose`          | Current pose in the map frame with a 36-element `covariance` array                                                                   |
| `GET /api/amcl_variance` | Localization uncertainty — `x_uncertainty`, `y_uncertainty` (m), `yaw_uncertainty` (deg)                                             |
| `GET /api/map`           | The occupancy grid — `map_metadata` (resolution, width, height, origin) plus a `data` array (`-1` unknown, `0` free, `100` occupied) |

### Feature endpoints

Every feature-specific endpoint is documented — with how, when, and why to use it — in that feature's guide:

| Feature                  | Endpoints                                                                                                                                               | Guide                                                                                   |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| Mapping & SLAM           | `/start/slam/2d`, `/start/slam/3d`, `/start/slam/3d_color`, `/start/slam/3d_full`, `/stop/slam`, `/maps/save`                                           | [Mapping & SLAM](/full-autonomy-guidelines/features/mapping-slam.md)                    |
| 2D Navigation            | `/start/nav2`, `/stop/nav2`, `/api/move_to_pose`, `/api/nav2_status`                                                                                    | [2D Navigation](/full-autonomy-guidelines/features/navigation.md)                       |
| 3D Navigation            | `/start/nav3d`, `/stop/nav3d`                                                                                                                           | [3D Navigation](/full-autonomy-guidelines/features/3d-map-navigation.md)                |
| Relocalization           | `/localization/status`, `/localization/reseed`                                                                                                          | [Relocalization](/full-autonomy-guidelines/features/relocalization.md)                  |
| Frontier Exploration     | `/explore/stop`, `/explore/resume`, `/explore/status`                                                                                                   | [Frontier Exploration](/full-autonomy-guidelines/features/frontier-exploration.md)      |
| Patrol                   | `/start/patrol`, `/stop/patrol`, `/pause/patrol`, `/resume/patrol`, `/patrol/mode`, `/patrol/schedules*`, `/deploy`, `/deploy/status`, `/deploy/cancel` | [Patrol](/full-autonomy-guidelines/features/patrol.md)                                  |
| Auto Charging            | `/charging/dock`, `/charging/stop`, `/charging/status`, `/charging/auto`, `/charging/undock`, `/charging/location`, `/charging/location/save`           | [Auto Charging](/full-autonomy-guidelines/features/auto-charging.md)                    |
| Maps, Routes & Locations | `/maps/list`, `/maps/delete`, `/maps/route/save`, `/maps/locations/*`, `/maps/<map>/pcd/raw`, `/maps/<map>/pcd/info`                                    | [Maps, Routes & Locations](/full-autonomy-guidelines/features/maps-routes-locations.md) |
| Keep-out Zones           | `/maps/keepout/save`, `/maps/keepout/list`, `/maps/keepout/get`, `/maps/keepout/delete`                                                                 | [Keep-out Zones](/full-autonomy-guidelines/features/keepout-zones.md)                   |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.openmind.com/full-autonomy-guidelines/api_endpoints.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
