API Reference
An agentic robot management framework
API Endpoints
This section covers all available endpoints for robot management, authentication, and control.
Claim the Robot
Register and claim ownership of a physical robot using its unique identifier.
Robot Management
Learn how to authenticate API requests using OAuth 2.0 and manage access tokens.
Control
Send commands and control your robot's behavior through the API.
Simulation
Establish and maintain real-time connections to your robot via WebSocket.
Get Your API Key
In order to access the robot endpoints, you need to obtain an API key.
- Go to https://platform.menlo.ai/account/api-keys
- Click Create API Key
- Copy your API key and use it in the
Authorizationheader
Using the API Key
Include the API key in the Authorization header for all requests:
Authorization: Bearer YOUR_API_KEYFor requests with a body (POST, PATCH), also include:
Content-Type: application/jsonClaim the Robot
Before you can interact with a robot, you must first claim it. Claiming a robot associates it with your account and grants you exclusive access to control it.
Endpoint
POST https://api.menlo.ai/v1/robots/{robot_id}/claimRequest Body
{
"pin_code": "string"
}| Field | Type | Required | Description |
|---|---|---|---|
pin_code | string | Yes | Robot's PIN code |
Example Request
curl -X POST https://api.menlo.ai/v1/robots/{robot_id}/claim \
-H "Authorization: Bearer {apikey}" \
-H "Content-Type: application/json" \
-d '{"pin_code": "123456"}'Response
Success (200 OK)
{
"code": "string",
"result": {
"id": "string",
"model": "string",
"name": "string",
"type": "physical"
}
}| Field | Type | Description |
|---|---|---|
id | string | Unique robot identifier |
model | string | Robot model name |
name | string | Robot name |
type | string | Robot type: physical or virtual |
Error Responses
| Status Code | Description |
|---|---|
| 400 | Invalid request body |
| 401 | Unauthorized - invalid or missing API key |
| 404 | Robot not found with given robot_id |
| 409 | Robot already claimed by another user |
| 429 | Too many claim attempts - rate limited |
Error Example
{
"code": "7eb3e2c3-b6a6-40e0-ae8c-23a76be0c317",
"message": "This robot is already claimed by another user"
}Robot Management
Robot Management endpoints allow you to manage your claimed robots, update their settings, and handle robot-to-user associations.
List Your Robots
Get all robots associated with your account.
GET https://api.menlo.ai/v1/robotsResponse
{
"code": "string",
"next_id": "string",
"result": [
{
"id": "string",
"model": "string",
"name": "string",
"type": "physical"
}
],
"total": 0
}| Field | Type | Description |
|---|---|---|
code | string | Response code |
next_id | string | Pagination cursor for next page |
result | array | Array of robot objects |
total | integer | Total number of robots |
Robot Object
| Field | Type | Description |
|---|---|---|
id | string | Unique robot identifier |
model | string | Robot model name |
name | string | Robot name |
type | string | Robot type: physical or virtual |
Get Robot Details
Retrieve detailed information about a specific robot.
GET https://api.menlo.ai/v1/robots/:robot_idResponse
{
"code": "string",
"result": {
"id": "string",
"model": "string",
"name": "string",
"type": "physical"
}
}Update Robot
Update robot name.
PATCH https://api.menlo.ai/v1/robots/:robot_idRequest Body
{
"name": "Updated Bot Name"
}| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | New robot name |
Response
{
"code": "string",
"result": {
"id": "string",
"model": "string",
"name": "Updated Bot Name",
"type": "physical"
}
}Create Session
Join a robot's agent session. Returns WebRTC token and SFU endpoint for connecting.
POST https://api.menlo.ai/v1/robots/:robot_id/sessionResponse
{
"code": "string",
"result": {
"sfu_endpoint": "string",
"webrtc_token": "string"
}
}| Field | Type | Description |
|---|---|---|
sfu_endpoint | string | SFU server endpoint URL |
webrtc_token | string | WebRTC authentication token |
Control
The Control endpoints allow you to send commands to your robot and manage its behavior remotely.
Send Semantic Command
Send a semantic command to a robot (simple directional commands).
POST https://api.menlo.ai/v1/robots/:robot_id/semantic-commandRequest Body
{
"command": "forward"
}| Field | Type | Required | Description |
|---|---|---|---|
command | string | Yes | Semantic command (see below) |
Available Commands
| Command | Description |
|---|---|
forward | Move forward |
backward | Move backward |
left | Move left |
right | Move right |
turn-left | Turn left |
turn-right | Turn right |
Response
{
"code": "string",
"result": null
}Simulation
The simulation endpoints create a simulated instance in the virtual world, accessible via the management and control endpoints.
Create a Virtual Robot
Create a new virtual robot. This issues a robot and claims it for the current user, then summons it in the virtual world.
POST https://api.menlo.ai/v1/robotsRequest Body
{
"name": "My Virtual Robot",
"model": "string",
"type": "virtual"
}| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Robot name |
model | string | Yes | Robot model |
type | string | Yes | Must be virtual |
Response
{
"code": "string",
"result": {
"id": "string",
"model": "string",
"name": "string",
"type": "virtual"
}
}