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.