Alongside the inference server, a managed device can run optional Roboflow services. Add and configure them from the device's Configuration tab, described in Update Device Configuration.
These services are available exclusively for Enterprise customers. Contact the Roboflow sales team to learn more.
| Service | What it does | API reference |
|---|---|---|
| Event Store | Stores inference events on the device, with automatic retention and optional cloud backup. | Event Store REST API |
| PLC Relay | Reads and writes PLC tags over Allen-Bradley, Modbus TCP, or Siemens S7. | PLC Relay HTTP API |
| OPC UA Server | Publishes data as OPC UA tags for PLCs and SCADA systems. | OPC UA Server HTTP API |
| RTSP Simulator | Streams an uploaded video file as an RTSP source for testing. | RTSP Simulator HTTP API |
Using the APIs
Each service runs as a container on the device and serves its own HTTP API on the device's address, not through api.roboflow.com. Use them when code on or near the device needs to read inference events, drive a PLC, or control a test stream directly, without a round trip to Roboflow.
The base URL host is the device's IP address, shown on the device page in Deployment Manager. Do not derive it from the inference server's server_url, which can point at a proxy or tunnel where the service ports are not reachable.
| Service | Base URL | Interactive docs |
|---|---|---|
| Event Store | http:// | /docs |
| PLC Relay | http:// | /docs |
| RTSP Simulator | http:// | /docs |
| OPC UA Server | http:// | /api/docs |
The interactive docs each device serves reflect the exact service version running there. When a device disagrees with these pages, trust the device.
A Roboflow API key does nothing here. These services do not authenticate against Roboflow, and apart from the Event Store's optional API_KEY, they accept unauthenticated requests from anyone who can reach the port. Do not expose them beyond a trusted network.
Two error conventions to know before writing a client:
- The Event Store, PLC Relay, and RTSP Simulator return errors under a
detailkey that is a string for rejected requests but an array for422validation failures, so parse it by type. The OPC UA Server uses anerrorkey instead. - Several endpoints report downstream failure inside a
200response, because the request reached the service but the PLC, OPC UA server, or datastore behind it did not answer. Read the body, not just the status code. Each service's API reference calls out where this applies.