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.

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.