Kaseya /v3/device API

Operations on devices (v3 API)

Operations 4

POST /v3/device/{deviceUid}/udf Sets the user defined fields of a device identified by the given device Uid. #
GET /v3/device/{deviceUid} Fetches data of the device identified by the given device Uid. #
GET /v3/device/macAddress/{macAddress} Fetches data of the device(s) identified by the given MAC address in format: XXXXXXXXXXXX #
GET /v3/device/id/{deviceId} Fetches data of the device identified by the given device Id. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/kaseya-v3-device-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

kaseya-v3-device-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Datto RMM /v3/device API
  description: Datto RMM (Remote Monitoring and Management) REST API
  license:
    name: '©Datto, Inc. - All rights reserved. '
    url: http://www.datto.com/
  version: 2.0.0 (Build 235_0add0e4d537431f30405d568ccb46b6d7af1f183)
servers:
- url: https://syrah-api.centrastage.net/api
  description: Generated server url
tags:
- name: /v3/device
  description: Operations on devices (v3 API)
paths:
  /v3/device/{deviceUid}/udf:
    post:
      tags:
      - /v3/device
      summary: Sets the user defined fields of a device identified by the given device Uid.
      description: 'V3 enforces strict type validation: each UDF must match its configured type (STRING/BOOLEAN/NUMBER/DATE). Type mismatches are rejected. Set value to null to delete a UDF.'
      operationId: setUdfFields
      parameters:
      - name: deviceUid
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetUserDefinedFieldsRequest'
        required: true
      responses:
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 500
                error: Internal Server Error
                path: /v3/device/{deviceUid}/udf
        '409':
          description: Request aborted due to concurrent write access to this record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 409
                error: Conflict
                path: /v3/device/{deviceUid}/udf
        '404':
          description: Device was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 404
                error: Not Found
                path: /v3/device/{deviceUid}/udf
        '403':
          description: Authenticated user doesn't have access to this resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 403
                error: Forbidden
                path: /v3/device/{deviceUid}/udf
        '400':
          description: Request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 400
                error: Bad Request
                path: /v3/device/{deviceUid}/udf
        '401':
          description: Request can not be authorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 401
                error: Unauthorized
                path: /v3/device/{deviceUid}/udf
        '200':
          description: OK
      deprecated: true
  /v3/device/{deviceUid}:
    get:
      tags:
      - /v3/device
      summary: Fetches data of the device identified by the given device Uid.
      operationId: getByUid
      parameters:
      - name: deviceUid
        in: path
        required: true
        schema:
          type: string
      responses:
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 500
                error: Internal Server Error
                path: /v3/device/{deviceUid}
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 409
                error: Conflict
                path: /v3/device/{deviceUid}
        '404':
          description: Device was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 404
                error: Not Found
                path: /v3/device/{deviceUid}
        '403':
          description: Authenticated user doesn't have access to this resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 403
                error: Forbidden
                path: /v3/device/{deviceUid}
        '401':
          description: Request can not be authorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 401
                error: Unauthorized
                path: /v3/device/{deviceUid}
        '200':
          description: OK
          content:
            application/json:
              schema:
                description: Device data with structured UDF format
                properties:
                  id:
                    type: integer
                    format: int64
                  uid:
                    type: string
                  siteId:
                    type: integer
                    format: int64
                  siteUid:
                    type: string
                  siteName:
                    type: string
                  deviceType:
                    $ref: '#/components/schemas/DevicesType'
                  hostname:
                    type: string
                  intIpAddress:
                    type: string
                  operatingSystem:
                    type: string
                  lastLoggedInUser:
                    type: string
                  domain:
                    type: string
                  cagVersion:
                    type: string
                  displayVersion:
                    type: string
                  extIpAddress:
                    type: string
                  description:
                    type: string
                  a64Bit:
                    type: boolean
                  rebootRequired:
                    type: boolean
                  online:
                    type: boolean
                  suspended:
                    type: boolean
                  deleted:
                    type: boolean
                  lastSeen:
                    type: string
                    format: date-time
                  lastReboot:
                    type: string
                    format: date-time
                  lastAuditDate:
                    type: string
                    format: date-time
                  creationDate:
                    type: string
                    format: date-time
                  snmpEnabled:
                    type: boolean
                  deviceClass:
                    type: string
                    enum:
                    - device
                    - printer
                    - esxihost
                    - rmmnetworkdevice
                    - unknown
                  portalUrl:
                    type: string
                  warrantyDate:
                    type: string
                  antivirus:
                    $ref: '#/components/schemas/Antivirus'
                  patchManagement:
                    $ref: '#/components/schemas/PatchManagement'
                  softwareStatus:
                    type: string
                  webRemoteUrl:
                    type: string
                  networkProbe:
                    type: boolean
                  onboardedViaNetworkMonitor:
                    type: boolean
                  udfs:
                    type: array
                    description: User defined fields in structured format
                    items:
                      $ref: '#/components/schemas/UdfItem'
  /v3/device/macAddress/{macAddress}:
    get:
      tags:
      - /v3/device
      summary: 'Fetches data of the device(s) identified by the given MAC address in format: XXXXXXXXXXXX'
      operationId: getByMacAddress
      parameters:
      - name: macAddress
        in: path
        required: true
        schema:
          type: string
      responses:
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 500
                error: Internal Server Error
                path: /v3/device/macAddress/{macAddress}
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 409
                error: Conflict
                path: /v3/device/macAddress/{macAddress}
        '200':
          description: Device was found.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeviceV3'
        '404':
          description: Device was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 404
                error: Not Found
                path: /v3/device/macAddress/{macAddress}
        '403':
          description: Authenticated user doesn't have access to this resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 403
                error: Forbidden
                path: /v3/device/macAddress/{macAddress}
        '401':
          description: Request can not be authorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 401
                error: Unauthorized
                path: /v3/device/macAddress/{macAddress}
  /v3/device/id/{deviceId}:
    get:
      tags:
      - /v3/device
      summary: Fetches data of the device identified by the given device Id.
      operationId: getById
      parameters:
      - name: deviceId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 500
                error: Internal Server Error
                path: /v3/device/id/{deviceId}
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 409
                error: Conflict
                path: /v3/device/id/{deviceId}
        '404':
          description: Device was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 404
                error: Not Found
                path: /v3/device/id/{deviceId}
        '403':
          description: Authenticated user doesn't have access to this resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 403
                error: Forbidden
                path: /v3/device/id/{deviceId}
        '401':
          description: Request can not be authorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                timestamp: 1781181715656
                status: 401
                error: Unauthorized
                path: /v3/device/id/{deviceId}
        '200':
          description: OK
          content:
            application/json:
              schema:
                description: Device data with structured UDF format
                properties:
                  id:
                    type: integer
                    format: int64
                  uid:
                    type: string
                  siteId:
                    type: integer
                    format: int64
                  siteUid:
                    type: string
                  siteName:
                    type: string
                  deviceType:
                    $ref: '#/components/schemas/DevicesType'
                  hostname:
                    type: string
                  intIpAddress:
                    type: string
                  operatingSystem:
                    type: string
                  lastLoggedInUser:
                    type: string
                  domain:
                    type: string
                  cagVersion:
                    type: string
                  displayVersion:
                    type: string
                  extIpAddress:
                    type: string
                  description:
                    type: string
                  a64Bit:
                    type: boolean
                  rebootRequired:
                    type: boolean
                  online:
                    type: boolean
                  suspended:
                    type: boolean
                  deleted:
                    type: boolean
                  lastSeen:
                    type: string
                    format: date-time
                  lastReboot:
                    type: string
                    format: date-time
                  lastAuditDate:
                    type: string
                    format: date-time
                  creationDate:
                    type: string
                    format: date-time
                  snmpEnabled:
                    type: boolean
                  deviceClass:
                    type: string
                    enum:
                    - device
                    - printer
                    - esxihost
                    - rmmnetworkdevice
                    - unknown
                  portalUrl:
                    type: string
                  warrantyDate:
                    type: string
                  antivirus:
                    $ref: '#/components/schemas/Antivirus'
                  patchManagement:
                    $ref: '#/components/schemas/PatchManagement'
                  softwareStatus:
                    type: string
                  webRemoteUrl:
                    type: string
                  networkProbe:
                    type: boolean
                  onboardedViaNetworkMonitor:
                    type: boolean
                  udfs:
                    type: array
                    description: User defined fields in structured format
                    items:
                      $ref: '#/components/schemas/UdfItem'
components:
  schemas:
    PatchManagement:
      type: object
      description: Patch management data
      properties:
        patchStatus:
          type: string
          enum:
          - NoPolicy
          - NoData
          - RebootRequired
          - InstallError
          - ApprovedPending
          - FullyPatched
        patchesApprovedPending:
          type: integer
          format: int64
        patchesNotApproved:
          type: integer
          format: int64
        patchesInstalled:
          type: integer
          format: int64
    ErrorResponse:
      description: Default error response body
      properties:
        timestamp:
          type: integer
          format: int64
          description: Epoch millis when the error occurred
        status:
          type: integer
          format: int32
          description: HTTP status code
        error:
          type: string
          description: HTTP reason phrase
        path:
          type: string
          description: Request path that produced the error
    UdfItem:
      type: object
      description: User defined field with type-safe value storage
      properties:
        ordinal:
          type: integer
          format: int32
          description: Ordinal position of the UDF (1-300)
          maximum: 300
          minimum: 1
        type:
          type: string
          description: Type of the UDF value
          enum:
          - STRING
          - BOOLEAN
          - NUMBER
          - DATE
        valueBoolean:
          type: boolean
          description: Value when type is BOOLEAN
        valueString:
          type: string
          description: Value when type is STRING
        valueDate:
          type: string
          format: date
          description: 'Value when type is DATE (Format: yyyy-MM-dd)'
        valueNumber:
          type: number
          description: Value when type is NUMBER
        label:
          type: string
          description: Custom label for this UDF from the account settings
        typeMisMatch:
          type: boolean
          description: Indicates type mismatch with expected configuration. Only appears in GET responses when data was updated via V2 API or UI.
      required:
      - ordinal
      - type
    Antivirus:
      type: object
      description: Device antivirus data
      properties:
        antivirusProduct:
          type: string
        antivirusStatus:
          type: string
          enum:
          - RunningAndUpToDate
          - RunningAndNotUpToDate
          - NotRunning
          - NotDetected
    DeviceV3:
      type: object
      description: Device data with structured UDF format
      properties:
        id:
          type: integer
          format: int64
        uid:
          type: string
        siteId:
          type: integer
          format: int64
        siteUid:
          type: string
        siteName:
          type: string
        deviceType:
          $ref: '#/components/schemas/DevicesType'
        hostname:
          type: string
        intIpAddress:
          type: string
        operatingSystem:
          type: string
        lastLoggedInUser:
          type: string
        domain:
          type: string
        cagVersion:
          type: string
        displayVersion:
          type: string
        extIpAddress:
          type: string
        description:
          type: string
        a64Bit:
          type: boolean
        rebootRequired:
          type: boolean
        online:
          type: boolean
        suspended:
          type: boolean
        deleted:
          type: boolean
        lastSeen:
          type: string
          format: date-time
        lastReboot:
          type: string
          format: date-time
        lastAuditDate:
          type: string
          format: date-time
        creationDate:
          type: string
          format: date-time
        snmpEnabled:
          type: boolean
        deviceClass:
          type: string
          enum:
          - device
          - printer
          - esxihost
          - rmmnetworkdevice
          - unknown
        portalUrl:
          type: string
        warrantyDate:
          type: string
        antivirus:
          $ref: '#/components/schemas/Antivirus'
        patchManagement:
          $ref: '#/components/schemas/PatchManagement'
        softwareStatus:
          type: string
        webRemoteUrl:
          type: string
        networkProbe:
          type: boolean
        onboardedViaNetworkMonitor:
          type: boolean
        udfs:
          type: array
          description: User defined fields in structured format
          items:
            $ref: '#/components/schemas/UdfItem'
    DevicesType:
      type: object
      description: Devices Type
      properties:
        category:
          type: string
        type:
          type: string
    UdfItemRequest:
      type: object
      description: User defined field value for update operation. Only one value field can be non-null. If all value fields are null, the UDF will be removed.
      properties:
        ordinal:
          type: integer
          format: int32
          description: Ordinal position of the UDF (1-300)
          maximum: 300
          minimum: 1
        valueBoolean:
          type: boolean
          description: Value when type is BOOLEAN
        valueString:
          type: string
          description: Value when type is STRING
        valueDate:
          type: string
          format: date
          description: 'Value when type is DATE (Format: yyyy-MM-dd)'
        valueNumber:
          type: number
          description: Value when type is NUMBER
      required:
      - ordinal
    SetUserDefinedFieldsRequest:
      type: object
      description: Request to set user defined fields on a device
      properties:
        udfs:
          type: array
          description: List of user defined fields to set
          items:
            $ref: '#/components/schemas/UdfItemRequest'
      required:
      - udfs