Skip to main content

REST API Overview

OpenRobOps exposes a REST API for programmatic access to robot data, configuration, and management operations.

Base URL

http://localhost:3000/api

All API endpoints are served under the /api path prefix by the Meteor app server.

Authentication

All API requests (except OPTIONS for CORS) require authentication via the x-auth-api-key HTTP header:

curl -H "x-auth-api-key: YOUR_API_KEY" \
http://localhost:3000/api/robots

API keys are per-user and created from the web app under Settings → API keys. The key is shown once at creation time — copy or download it then, as it cannot be retrieved later. A key may carry an expiration; an expired key is rejected. See Access Control → API Keys for how to create and manage keys.

note

The header x-auth-inorbit-app-key is also accepted as an alias, for compatibility with existing InOrbit tooling.

Authentication Errors

StatusErrorDescription
401AUTHENTICATION_ERROR: no API key provided in x-auth-api-key HTTP headerMissing x-auth-api-key header
403AUTHENTICATION_ERROR: wrong credentialsUnknown / invalid API key
403AUTHENTICATION_ERROR: API key expiredThe key has passed its expiration
403User not authorizedUser lacks any role (pending approval)
403User not authorized for robot {id}User lacks access to the specific robot

Response Format

All responses are JSON. Successful responses return the data directly:

{
"id": "robot_123",
"name": "my-robot",
"agentOnline": true
}

Most error responses include an error field:

{
"error": "NOT_FOUND"
}

Some endpoints instead return the error message as a bare JSON string body (for example the robots 404 and several validation 400s) — check each endpoint's documentation for the exact shape.

HTTP Methods

MethodUsage
GETRetrieve resources
POSTExecute actions / apply configuration
PUTCreate or update a resource (e.g. lock a robot)
DELETERemove a resource (e.g. unlock a robot)
OPTIONSCORS preflight (handled automatically)

CORS

The API supports permissive CORS, allowing requests from any origin:

  • Access-Control-Allow-Origin: *
  • Access-Control-Allow-Methods: *
  • Access-Control-Allow-Headers: x-auth-api-key, x-auth-inorbit-app-key, content-type

Available Endpoints

EndpointMethodDescriptionReference
/api/robotsGETList all robotsRobots API
/api/robots/{robotId}GETGet a single robotRobots API
/api/robots/{robotId}/lockGETGet robot lock statusLocks API
/api/robots/{robotId}/lockPUTLock a robotLocks API
/api/robots/{robotId}/lockDELETEUnlock a robotLocks API
/api/robots/{robotId}/actionsPOSTExecute an actionActions API
/api/robots/{robotId}/actions/{executionId}GETGet action execution statusActions API
/api/robots/{robotId}/navigation/waypointsPOSTSend a navigation waypointNavigation API
/api/robots/{robotId}/attributes/{attrId}GETGet robot attributeAttributes API
/api/robots/{robotId}/localization/poseGETGet robot poseLocalization API
/api/robots/{robotId}/localization/fullGETGet full localizationLocalization API
/api/configuration/applyPOSTApply config objectConfigAPI
/api/configuration/clearPOSTClear config objectConfigAPI
/api/configuration/listGETList configurationsConfigAPI
/api/configuration/kindsGETList config kindsConfigAPI

Error Codes

Status CodeMeaning
200Success
201Created (e.g. robot locked)
204Success, no content (e.g. robot unlocked)
400Bad request (invalid parameters)
401Authentication required
403Forbidden (insufficient permissions)
404Resource not found
500Internal server error

Next Steps