Viam Provisioning API

Bootstrap a smart machine onto Wi-Fi and into the viam.app cloud over Bluetooth or hotspot. SetNetworkCredentials, SetSmartMachineCredentials, GetNetworkList, GetSmartMachineStatus, and ExitProvisioning are used by the Flutter provisioning widgets and viam-agent.

Viam Provisioning API is one of 14 APIs that Viam publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Robotics, Provisioning, Onboarding, and Bluetooth. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

viam-provisioning-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Viam Provisioning API
  description: |
    REST/JSON transcoding of the Viam ProvisioningService gRPC API. Bootstrap a smart
    machine onto Wi-Fi and into the viam.app cloud over Bluetooth or hotspot. Used by
    Flutter provisioning widgets and viam-agent.

    Canonical contract: https://github.com/viamrobotics/api/blob/main/proto/viam/provisioning/v1/provisioning.proto
  version: '2026.05'
  contact:
    name: Viam Support
    url: https://www.viam.com/contact
servers:
  - url: http://192.168.4.1:4772
    description: Default provisioning hotspot/bluetooth endpoint exposed by viam-agent on a fresh device.
tags:
  - name: Provisioning
    description: Network and cloud credentials onboarding.
paths:
  /viam.provisioning.v1.ProvisioningService/GetSmartMachineStatus:
    post:
      summary: Viam Get Smart Machine Status
      description: Retrieve the device's provisioning status (network connectivity, cloud config).
      operationId: getSmartMachineStatus
      tags: [Provisioning]
      requestBody:
        required: true
        content:
          application/json:
            schema: { type: object }
      responses:
        '200':
          description: Successful response.
  /viam.provisioning.v1.ProvisioningService/SetNetworkCredentials:
    post:
      summary: Viam Set Network Credentials
      description: Submit Wi-Fi credentials to the device.
      operationId: setNetworkCredentials
      tags: [Provisioning]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [type, ssid, psk]
              properties:
                type: { type: string, enum: [wifi] }
                ssid: { type: string }
                psk: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.provisioning.v1.ProvisioningService/SetSmartMachineCredentials:
    post:
      summary: Viam Set Smart Machine Credentials
      description: Submit Viam cloud credentials (machine part secret + cloud config URL) to the device.
      operationId: setSmartMachineCredentials
      tags: [Provisioning]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [cloud]
              properties:
                cloud:
                  type: object
                  properties:
                    id: { type: string }
                    secret: { type: string }
                    app_address: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.provisioning.v1.ProvisioningService/GetNetworkList:
    post:
      summary: Viam Get Network List
      description: List Wi-Fi networks visible to the device.
      operationId: getNetworkList
      tags: [Provisioning]
      requestBody:
        required: true
        content:
          application/json:
            schema: { type: object }
      responses:
        '200':
          description: Successful response.
  /viam.provisioning.v1.ProvisioningService/ExitProvisioning:
    post:
      summary: Viam Exit Provisioning
      description: Exit the provisioning service after the device is configured.
      operationId: exitProvisioning
      tags: [Provisioning]
      requestBody:
        required: true
        content:
          application/json:
            schema: { type: object }
      responses:
        '200':
          description: Successful response.