Viam ML Training API

Submit and manage cloud-hosted ML training jobs that produce models deployable to viam-server. Supports built-in TFLite trainers and custom containerized trainers via SubmitTrainingJob and SubmitCustomTrainingJob.

Viam ML Training 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, Machine Learning, Training, and Edge AI. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

viam-ml-training-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Viam ML Training API
  description: |
    REST/JSON transcoding of the Viam MLTrainingService gRPC API. Submit, monitor, and
    manage cloud-hosted ML training jobs that produce models deployable to viam-server.

    Canonical contract: https://github.com/viamrobotics/api/blob/main/proto/viam/app/mltraining/v1/ml_training.proto
  version: '2026.05'
  contact:
    name: Viam Support
    url: https://www.viam.com/contact
servers:
  - url: https://app.viam.com
    description: Viam production cloud.
security:
  - ApiKeyAuth: []
tags:
  - name: Training Jobs
    description: Built-in TFLite trainers and custom containerized trainers.
paths:
  /viam.app.mltraining.v1.MLTrainingService/SubmitTrainingJob:
    post:
      summary: Viam Submit Training Job
      description: Submit a built-in TFLite training job against a dataset.
      operationId: submitTrainingJob
      tags: [Training Jobs]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [organization_id, dataset_id, model_name, model_type]
              properties:
                organization_id: { type: string }
                dataset_id: { type: string }
                model_name: { type: string }
                model_version: { type: string }
                model_type: { type: string, enum: [single_label_classification, multi_label_classification, object_detection] }
                tags: { type: array, items: { type: string } }
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id: { type: string }
  /viam.app.mltraining.v1.MLTrainingService/SubmitCustomTrainingJob:
    post:
      summary: Viam Submit Custom Training Job
      description: Submit a custom containerized training job (registry container) against a dataset.
      operationId: submitCustomTrainingJob
      tags: [Training Jobs]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [organization_id, dataset_id, registry_item_id, model_name]
              properties:
                organization_id: { type: string }
                dataset_id: { type: string }
                registry_item_id: { type: string }
                registry_item_version: { type: string }
                model_name: { type: string }
                model_version: { type: string }
                arguments: { type: object }
      responses:
        '200':
          description: Successful response.
  /viam.app.mltraining.v1.MLTrainingService/GetTrainingJob:
    post:
      summary: Viam Get Training Job
      description: Retrieve a training job by id.
      operationId: getTrainingJob
      tags: [Training Jobs]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [id]
              properties:
                id: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.mltraining.v1.MLTrainingService/ListTrainingJobs:
    post:
      summary: Viam List Training Jobs
      description: List training jobs scoped to an organization.
      operationId: listTrainingJobs
      tags: [Training Jobs]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [organization_id]
              properties:
                organization_id: { type: string }
                status: { type: string, enum: [unspecified, pending, in_progress, completed, failed, canceled, canceling] }
      responses:
        '200':
          description: Successful response.
  /viam.app.mltraining.v1.MLTrainingService/CancelTrainingJob:
    post:
      summary: Viam Cancel Training Job
      description: Cancel a pending or running training job.
      operationId: cancelTrainingJob
      tags: [Training Jobs]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [id]
              properties:
                id: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.mltraining.v1.MLTrainingService/DeleteCompletedTrainingJob:
    post:
      summary: Viam Delete Completed Training Job
      description: Permanently delete a completed training job and its artifacts.
      operationId: deleteCompletedTrainingJob
      tags: [Training Jobs]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [id]
              properties:
                id: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.mltraining.v1.MLTrainingService/GetTrainingJobLogs:
    post:
      summary: Viam Get Training Job Logs
      description: Retrieve logs for a training job.
      operationId: getTrainingJobLogs
      tags: [Training Jobs]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [id]
              properties:
                id: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.mltraining.v1.MLTrainingService/ListSupportedContainers:
    post:
      summary: Viam List Supported Containers
      description: List the container images supported as custom training environments.
      operationId: listSupportedContainers
      tags: [Training Jobs]
      requestBody:
        required: true
        content:
          application/json:
            schema: { type: object }
      responses:
        '200':
          description: Successful response.
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: key
      description: Viam API key.