Viam's Client APIs | Viam Documentation
Viam's Client APIs
Every Viam resource exposes an application programming interface (API) described through protocol buffers.
The API methods provided by the SDKs for each of these resource APIs wrap gRPC client requests to the machine when you execute your program, providing you a convenient interface for accessing information about and controlling the resources you have configured on your machine.
Platform APIs
-
Create and manage organizations, locations, and machines, get logs from individual machines, and manage fragments and permissions.
-
Upload, download, filter, tag or perform other tasks on data like images or sensor readings.
-
Manage your machines: connect to your machine, retrieve status information, and send commands remotely.
-
Submit and manage ML training jobs running on Viam.
-
Retrieve billing information from Viam.
-
Manage sessions, heartbeats, and safety timeouts for connected clients.
Component APIs
These APIs provide interfaces for controlling and getting information from the components of a machine:
-
See every component API and its methods at a glance in one compact grid.
-
Give commands to your arm components for linear motion planning.
-
Give commands to your audio in components.
-
Give commands to your audio out components.
-
Give commands for moving all configured components attached to a mobile platform as a whole without needing to send commands to individual components.
-
Give commands for setting GPIO pins to high or low, setting PWM, and working with analog and digital interrupts.
-
Give commands for getting presses from a physical button.
-
Give commands for getting images or point clouds.
-
Give commands for getting the position of a motor or a joint in ticks or degrees.
-
Give commands for coordinated control of one or more linear actuators.
-
Give commands for running custom model-specific commands using DoCommand on your generic components.
-
Give commands for opening and closing a gripper device.
-
Give commands to register callbacks for events, allowing you to use input devices to control your machines.
-
Give commands to operate a motor or get its current status.
-
Give commands for getting the current GPS location, linear velocity and acceleration, angular velocity and acceleration and heading.
-
Commands for getting measurements of voltage, current, and power consumption.
-
Give commands for getting sensor readings.
-
Give commands for controlling the angular position of a servo precisely or getting its current status.
-
Give commands for getting the state of a physical switch that has two or more discrete positions.
Service APIs
These APIs provide interfaces for controlling and getting information from the services you configured on a machine.
-
See every service API and its methods at a glance in one compact grid.
-
Give commands to your data management service to sync data stored on the machine it is deployed on to the cloud.
-
Give commands to get detections, classifications, or point cloud objects, depending on the ML model the vision service is using.
-
Give commands to your ML model service to make inferences based on a provided ML model.
-
Give commands to move a machine's components from one location or pose to another.
-
The navigation service API has been removed.
-
Give commands to your generic components for running model-specific commands using DoCommand.
Base Remote Control service API
Give commands to get a list of inputs from the controller that are being monitored for that control mode.
-
Reveal which resources are available to configure on a machine based on the hardware that is physically present.
-
Retrieve a list of world objects.