Viam Data Client API

Upload, download, query (SQL/MQL), tag, and delete tabular and binary data captured from machines. Manage datasets, saved queries, bounding boxes, sequences, and the cloud-hosted MongoDB connection used for analytics workloads.

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

This API exposes 3 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 2 JSON Schema definitions.

Tagged areas include Robotics, Data, Tabular Data, Binary Data, and Datasets. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, 3 Naftiko capability specs, and 2 JSON Schemas.

OpenAPI Specification

viam-data-client-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Viam Data Client API
  description: |
    REST/JSON transcoding of the Viam DataService gRPC API. Upload, download, query,
    tag, and delete tabular and binary data captured from machines. Manage datasets,
    saved queries, bounding boxes, sequences, and the cloud-hosted MongoDB connection.

    Canonical contract: https://github.com/viamrobotics/api/blob/main/proto/viam/app/data/v1/data.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: Tabular Data
    description: Time-series and structured data captured by sensor and movement-sensor components.
  - name: Binary Data
    description: Images, video, audio, and other binary blobs captured by cameras and audio components.
  - name: Tags
    description: Bounding boxes and labels applied to binary data items.
  - name: Datasets
    description: Curated collections of binary data used for ML training.
  - name: Saved Queries
    description: Reusable SQL/MQL queries stored in the cloud.
  - name: Sequences
    description: Ordered sequences of dataset items for time-series training.
  - name: Database
    description: Direct database connection (MongoDB) for advanced analytics.
paths:
  /viam.app.data.v1.DataService/TabularDataByFilter:
    post:
      summary: Viam Tabular Data By Filter
      description: Query tabular data using component, location, time-range, and tag filters.
      operationId: tabularDataByFilter
      tags: [Tabular Data]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                data_request: { type: object }
                count_only: { type: boolean }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/TabularDataBySQL:
    post:
      summary: Viam Tabular Data By Sql
      description: Query tabular data with SQL against the Viam hot data store.
      operationId: tabularDataBySQL
      tags: [Tabular Data]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [organization_id, sql_query]
              properties:
                organization_id: { type: string }
                sql_query: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/TabularDataByMQL:
    post:
      summary: Viam Tabular Data By Mql
      description: Query tabular data with MongoDB Query Language.
      operationId: tabularDataByMQL
      tags: [Tabular Data]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [organization_id, mql_binary]
              properties:
                organization_id: { type: string }
                mql_binary: { type: array, items: { type: string, format: byte } }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/ExportTabularData:
    post:
      summary: Viam Export Tabular Data
      description: Stream-export tabular data matching a filter.
      operationId: exportTabularData
      tags: [Tabular Data]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [part_id, resource_name, resource_subtype, method_name]
              properties:
                part_id: { type: string }
                resource_name: { type: string }
                resource_subtype: { type: string }
                method_name: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/GetLatestTabularData:
    post:
      summary: Viam Get Latest Tabular Data
      description: Return the latest tabular data point for a component/method.
      operationId: getLatestTabularData
      tags: [Tabular Data]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [part_id, resource_name, resource_subtype, method_name]
              properties:
                part_id: { type: string }
                resource_name: { type: string }
                resource_subtype: { type: string }
                method_name: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/DeleteTabularData:
    post:
      summary: Viam Delete Tabular Data
      description: Delete tabular data older than a given age in days.
      operationId: deleteTabularData
      tags: [Tabular Data]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [organization_id, delete_older_than_days]
              properties:
                organization_id: { type: string }
                delete_older_than_days: { type: integer }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/BinaryDataByFilter:
    post:
      summary: Viam Binary Data By Filter
      description: Query binary data items using a filter and optional pagination.
      operationId: binaryDataByFilter
      tags: [Binary Data]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                data_request: { type: object }
                include_binary: { type: boolean }
                count_only: { type: boolean }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/BinaryDataByIDs:
    post:
      summary: Viam Binary Data By Ids
      description: Retrieve binary data items by their ids.
      operationId: binaryDataByIDs
      tags: [Binary Data]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [binary_ids]
              properties:
                binary_ids: { type: array, items: { type: object } }
                include_binary: { type: boolean }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/DeleteBinaryDataByFilter:
    post:
      summary: Viam Delete Binary Data By Filter
      description: Delete binary data items matching a filter.
      operationId: deleteBinaryDataByFilter
      tags: [Binary Data]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                filter: { type: object }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/DeleteBinaryDataByIDs:
    post:
      summary: Viam Delete Binary Data By Ids
      description: Delete binary data items by id.
      operationId: deleteBinaryDataByIDs
      tags: [Binary Data]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [binary_ids]
              properties:
                binary_ids: { type: array, items: { type: object } }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/CreateBinaryDataSignedURL:
    post:
      summary: Viam Create Binary Data Signed Url
      description: Generate a signed URL for direct upload of binary data.
      operationId: createBinaryDataSignedURL
      tags: [Binary Data]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [part_id, file_extension]
              properties:
                part_id: { type: string }
                file_extension: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/AddTagsToBinaryDataByIDs:
    post:
      summary: Viam Add Tags To Binary Data By Ids
      description: Add string tags to binary data items.
      operationId: addTagsToBinaryDataByIDs
      tags: [Tags]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [binary_ids, tags]
              properties:
                binary_ids: { type: array, items: { type: object } }
                tags: { type: array, items: { type: string } }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/RemoveTagsFromBinaryDataByIDs:
    post:
      summary: Viam Remove Tags From Binary Data By Ids
      description: Remove string tags from binary data items.
      operationId: removeTagsFromBinaryDataByIDs
      tags: [Tags]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [binary_ids, tags]
              properties:
                binary_ids: { type: array, items: { type: object } }
                tags: { type: array, items: { type: string } }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/TagsByFilter:
    post:
      summary: Viam Tags By Filter
      description: List unique tags matching a filter.
      operationId: tagsByFilter
      tags: [Tags]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                filter: { type: object }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/AddBoundingBoxToImageByID:
    post:
      summary: Viam Add Bounding Box To Image By Id
      description: Add a bounding-box annotation to a binary image item.
      operationId: addBoundingBoxToImageByID
      tags: [Tags]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [binary_id, label]
              properties:
                binary_id: { type: object }
                label: { type: string }
                x_min_normalized: { type: number }
                y_min_normalized: { type: number }
                x_max_normalized: { type: number }
                y_max_normalized: { type: number }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/RemoveBoundingBoxFromImageByID:
    post:
      summary: Viam Remove Bounding Box From Image By Id
      description: Remove a bounding-box annotation by id.
      operationId: removeBoundingBoxFromImageByID
      tags: [Tags]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [binary_id, bbox_id]
              properties:
                binary_id: { type: object }
                bbox_id: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/AddBinaryDataToDatasetByIDs:
    post:
      summary: Viam Add Binary Data To Dataset
      description: Add binary data items to a dataset.
      operationId: addBinaryDataToDatasetByIDs
      tags: [Datasets]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [binary_ids, dataset_id]
              properties:
                binary_ids: { type: array, items: { type: object } }
                dataset_id: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/RemoveBinaryDataFromDatasetByIDs:
    post:
      summary: Viam Remove Binary Data From Dataset
      description: Remove binary data items from a dataset.
      operationId: removeBinaryDataFromDatasetByIDs
      tags: [Datasets]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [binary_ids, dataset_id]
              properties:
                binary_ids: { type: array, items: { type: object } }
                dataset_id: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/CreateSavedQuery:
    post:
      summary: Viam Create Saved Query
      description: Persist a named SQL/MQL query in the organization.
      operationId: createSavedQuery
      tags: [Saved Queries]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [organization_id, name]
              properties:
                organization_id: { type: string }
                name: { type: string }
                sql_query: { type: string }
                mql_binary: { type: array, items: { type: string, format: byte } }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/ListSavedQueries:
    post:
      summary: Viam List Saved Queries
      description: List saved queries in an organization.
      operationId: listSavedQueries
      tags: [Saved Queries]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [organization_id]
              properties:
                organization_id: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/GetSavedQuery:
    post:
      summary: Viam Get Saved Query
      description: Retrieve a saved query by id.
      operationId: getSavedQuery
      tags: [Saved Queries]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [id]
              properties:
                id: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/UpdateSavedQuery:
    post:
      summary: Viam Update Saved Query
      description: Update a saved query.
      operationId: updateSavedQuery
      tags: [Saved Queries]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [id]
              properties:
                id: { type: string }
                name: { type: string }
                sql_query: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/DeleteSavedQuery:
    post:
      summary: Viam Delete Saved Query
      description: Delete a saved query.
      operationId: deleteSavedQuery
      tags: [Saved Queries]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [id]
              properties:
                id: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/CreateSequence:
    post:
      summary: Viam Create Sequence
      description: Create a sequence of dataset items.
      operationId: createSequence
      tags: [Sequences]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [organization_id, name]
              properties:
                organization_id: { type: string }
                name: { type: string }
                dataset_id: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/ListSequences:
    post:
      summary: Viam List Sequences
      description: List sequences in an organization.
      operationId: listSequences
      tags: [Sequences]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [organization_id]
              properties:
                organization_id: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/GetDatabaseConnection:
    post:
      summary: Viam Get Database Connection
      description: Get the MongoDB connection string for direct analytics access.
      operationId: getDatabaseConnection
      tags: [Database]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [organization_id]
              properties:
                organization_id: { type: string }
      responses:
        '200':
          description: Successful response.
  /viam.app.data.v1.DataService/ConfigureDatabaseUser:
    post:
      summary: Viam Configure Database User
      description: Create or rotate a database user for direct analytics access.
      operationId: configureDatabaseUser
      tags: [Database]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [organization_id, password]
              properties:
                organization_id: { type: string }
                password: { type: string }
      responses:
        '200':
          description: Successful response.
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: key
      description: Viam API key.