MaintainX Meters API

Operations on Meters

Operations 6

POST /meters Create new meter
GET /meters List meters
GET /meters/{id} Get meter
PATCH /meters/{id} Update meter
DELETE /meters/{id} Delete meter
POST /meters/{meterId}/readings Create new meter reading

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/maintainx-meters-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 email required.

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

OpenAPI Specification

maintainx-meters-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Welcome to the MaintainX API documentation!<br/><br/>You can use the MaintainX API to programmatically interact with all the entities in MaintainX. Use it to retrieve and manage data of Work Orders, Work Requests, Assets, and more!<br/><br/>To get started, in your MaintainX account go to <a href="https://app.getmaintainx.com/settings/integrations/apiKeys">"Settings &gt; Integrations"</a> and click "&plus; New Key" button to generate a new Rest API key.<br/><br/><b>Missing something?</b><br/>Don't hesitate to reach out <a href="mailto:support@getmaintainx.com">support@getmaintainx.com</a><br/><br/>
  version: '1'
  title: MaintainX Asset Criticalities Meters API
  contact:
    url: https://www.getmaintainx.com/
    name: Support
    email: support@getmaintainx.com
  x-logo:
    url: https://maintainx-static.s3-us-west-2.amazonaws.com/img/default-org-logo.png
    backgroundColor: '#FFFFFF'
    altText: MaintainX logo
servers:
- url: https://api.getmaintainx.com/v1
  description: Endpoint
security:
- Bearer: []
tags:
- name: Meters
  description: Operations on Meters
  x-traitTag: false
paths:
  /meters:
    post:
      summary: Create new meter
      description: Endpoint used to create a new meter. Pay attention to the `measurementType` field as it has a significant impact on the behavior of your meter.
      requestBody:
        description: Asset to create
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - unit
              properties:
                name:
                  type: string
                  description: Name of the meters
                description:
                  type:
                  - string
                  - 'null'
                  description: Description of the meter
                  example: This meter is used for monitoring the temperature of the boiler
                measurementType:
                  type: string
                  default: MANUAL
                  enum:
                  - MANUAL
                  - IOT_DEVICE
                  - AUTOMATED_SENSOR
                  example: AUTOMATED_SENSOR
                  description: 'Represents the Type of meter. <br><br><code>Manual</code>: They are made to be used in the MaintainX app and to retain manually entered values and are limited to 10 distinct readings creation requests per 24 hours over REST API. Batched readings requests only count as one toward the rate limit. <br><br><code>Automated</code>: (Enterprise Plan) Automated meters store high frequency readings sent from integrations and have normal rate limiting. <br><br>~~<code>IoT Device</code>~~: IoT Device meters are deprecated and should no longer be used in the future. Creating an IoT Device meter will mimic automated meters in terms of behavior to avoid breaking changes.'
                readingFrequency:
                  type:
                  - object
                  - 'null'
                  description: Expected reading frequency of the meter. Mostly useful for manual meters.
                  example:
                    type: WEEKLY
                    interval: 3
                    days:
                    - MONDAY
                    - WEDNESDAY
                    - FRIDAY
                  anyOf:
                  - type:
                    - object
                    - 'null'
                    title: Secondly
                    required:
                    - type
                    properties:
                      type:
                        type: string
                        pattern: SECONDLY
                        enum:
                        - SECONDLY
                      interval:
                        type: integer
                        description: Number of seconds between readings. Minimum 10s for IOT_DEVICE, 86400s for MANUAL
                        minimum: 10
                        default: 10
                  - type:
                    - object
                    - 'null'
                    title: Minutly
                    required:
                    - type
                    properties:
                      type:
                        type: string
                        pattern: MINUTLY
                        enum:
                        - MINUTLY
                      interval:
                        type: integer
                        description: Number of minutes between readings
                        minimum: 1
                        default: 1
                  - type:
                    - object
                    - 'null'
                    title: Hourly
                    required:
                    - type
                    properties:
                      type:
                        type: string
                        pattern: HOURLY
                        enum:
                        - HOURLY
                      interval:
                        type: integer
                        description: Number of hours between readings
                        minimum: 1
                        default: 1
                  - type:
                    - object
                    - 'null'
                    title: Daily
                    required:
                    - type
                    properties:
                      type:
                        type: string
                        pattern: DAILY
                        enum:
                        - DAILY
                      interval:
                        type: integer
                        description: Number of days between readings
                        minimum: 1
                        default: 1
                  - type:
                    - object
                    - 'null'
                    title: Weekly
                    required:
                    - type
                    properties:
                      type:
                        type: string
                        pattern: WEEKLY
                        enum:
                        - WEEKLY
                      interval:
                        type: integer
                        description: Number of weeks between readings
                        minimum: 1
                        maximum: 52
                        default: 1
                      days:
                        type: array
                        description: Days of the week the event will occur
                        items:
                          type: string
                          enum:
                          - SUNDAY
                          - MONDAY
                          - TUESDAY
                          - WEDNESDAY
                          - THURSDAY
                          - FRIDAY
                          - SATURDAY
                  - type:
                    - object
                    - 'null'
                    title: Monthly
                    required:
                    - type
                    properties:
                      type:
                        type: string
                        pattern: MONTHLY
                        enum:
                        - MONTHLY
                      interval:
                        type: integer
                        description: Number of months between readings
                        minimum: 1
                        maximum: 12
                        default: 1
                      day:
                        type: integer
                        minimum: 1
                        maximum: 31
                        description: Day of the month the event will occur
                  - type:
                    - object
                    - 'null'
                    title: Yearly
                    required:
                    - type
                    properties:
                      type:
                        type: string
                        pattern: YEARLY
                        enum:
                        - YEARLY
                      interval:
                        type: integer
                        description: Number of years between readings
                        minimum: 1
                        maximum: 1000
                        default: 1
                unit:
                  type: string
                  description: "Measurement unit for the readings. Any string is accepted. However, if applicable, we recommed you to use the following units as it may carry extra functionality: <br><ul> \n            <li>Distance:\n              <ul>\n                <li><code>Miles</code></li><li><code>Feet</code></li><li><code>Inches</code></li><li><code>Kilometers</code></li><li><code>Meters</code></li><li><code>Centimeters</code></li><li><code>Millimeters</code></li>\n              </ul>\n            </li>\n            <li>Volume:\n              <ul>\n                <li><code>Gallons</code></li><li><code>Liters</code></li><li><code>Milliliters</code></li><li><code>Cubic Meters</code></li>\n              </ul>\n            </li>\n            <li>Temperature:\n              <ul>\n                <li><code>Celsius</code></li><li><code>Fahrenheit</code></li><li><code>Kelvin</code></li>\n              </ul>\n            </li>\n            <li>Other:\n              <ul>\n                <li><code>Hours</code></li><li><code>Cycles</code></li><li><code>PSI</code></li><li><code>Kilograms</code></li><li><code>Grams</code></li><li><code>dBm</code></li><li><code>Nm</code></li>\n              </ul>\n            </li>\n            <li>Velocity:\n              <ul>\n                <li><code>MetersPerSecond</code></li><li><code>InchesPerSecond</code></li><li><code>MillimetersPerSecond</code></li>\n              </ul>\n            </li>\n            <li>Acceleration:\n              <ul>\n                <li><code>G-Force</code></li><li><code>MetersPerSecondSquared</code></li><li><code>FeetPerSecondSquared</code></li>\n              </ul>\n            </li>\n            <li>Electrical:\n              <ul>\n                <li><code>Volts</code></li><li><code>Amps</code></li>\n              </ul>\n            </li>\n      </ul>\n    "
                  example: Celsius
                assetId:
                  type:
                  - integer
                  - 'null'
                  description: Global ID of the asset tied to the meter
                  example: 123
                locationId:
                  type:
                  - integer
                  - 'null'
                  description: Global ID of the location tied to the meter
                  example: 123
      responses:
        '201':
          description: Successfully created meter
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: number
                    description: Global ID of the meter.
                    example: 123
        '400':
          description: OrganizationId was not provided
          content:
            application/json:
              schema:
                type: object
                required:
                - errors
                example:
                  errors:
                  - error: Missing x-organization-id header.
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      required:
                      - error
                      properties:
                        error:
                          type: string
                        fieldPath:
                          type:
                          - string
                          - 'null'
                        fieldValue:
                          oneOf:
                          - type: string
                          - type: number
                          - type: boolean
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '502':
          description: The creation of the resource failed on the upstream service.
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                properties:
                  error:
                    type: string
                    example: The creation of the source associated with this meter failed.
      tags:
      - Meters
      parameters:
      - schema:
          type: boolean
        description: Set `skipWebhook=true`, `skipWebhook=1` or `skipWebhook=yes` to skip all webhooks upon successful operation on the endpoint. [Learn more about webhooks](#tag/Subscriptions-and-Webhooks)
        name: skipWebhook
        in: query
        required: false
      - schema:
          type: integer
        description: Required if using a multi organizations token
        name: x-organization-id
        in: header
        required: false
        example: '1'
    get:
      summary: List meters
      description: Endpoint used to list meter resources
      parameters:
      - name: cursor
        in: query
        schema:
          description: Last pagination reference
          type: string
      - name: limit
        in: query
        schema:
          description: max number of Meters returned
          type: integer
          minimum: 1
          maximum: 200
          default: 100
      - name: measurementType
        schema:
          type: string
          description: The measurement type of the meter to filter by
          enum:
          - MANUAL
          - IOT_DEVICE
          - AUTOMATED_SENSOR
          example: MANUAL
        in: query
      - name: assets
        schema:
          type: array
          title: asset ID filters
          description: 'To filter by multiple asset IDs: `assets=123&assets=456`'
          items:
            type: integer
        in: query
      - in: query
        name: expand
        schema:
          title: Expand specific fields in the request
          description: 'To expand multiple fields: `expand=asset&expand=location`'
          type: array
          items:
            type: string
            enum:
            - asset
            - location
            - last_reading
      - schema:
          type: integer
        description: Required if using a multi organizations token
        name: x-organization-id
        in: header
        required: false
        example: '1'
      responses:
        '200':
          description: Successfully fetched Meters list
          content:
            application/json:
              schema:
                type: object
                required:
                - meters
                properties:
                  meters:
                    type: array
                    items:
                      type: object
                      required:
                      - id
                      - name
                      - unit
                      - measurementType
                      properties:
                        id:
                          type: number
                          description: Global ID of the meter.
                          example: 123
                        name:
                          type: string
                          description: Name of the meters
                        unit:
                          type: string
                          description: "Measurement unit for the readings. Any string is accepted. However, if applicable, we recommed you to use the following units as it may carry extra functionality: <br><ul> \n            <li>Distance:\n              <ul>\n                <li><code>Miles</code></li><li><code>Feet</code></li><li><code>Inches</code></li><li><code>Kilometers</code></li><li><code>Meters</code></li><li><code>Centimeters</code></li><li><code>Millimeters</code></li>\n              </ul>\n            </li>\n            <li>Volume:\n              <ul>\n                <li><code>Gallons</code></li><li><code>Liters</code></li><li><code>Milliliters</code></li><li><code>Cubic Meters</code></li>\n              </ul>\n            </li>\n            <li>Temperature:\n              <ul>\n                <li><code>Celsius</code></li><li><code>Fahrenheit</code></li><li><code>Kelvin</code></li>\n              </ul>\n            </li>\n            <li>Other:\n              <ul>\n                <li><code>Hours</code></li><li><code>Cycles</code></li><li><code>PSI</code></li><li><code>Kilograms</code></li><li><code>Grams</code></li><li><code>dBm</code></li><li><code>Nm</code></li>\n              </ul>\n            </li>\n            <li>Velocity:\n              <ul>\n                <li><code>MetersPerSecond</code></li><li><code>InchesPerSecond</code></li><li><code>MillimetersPerSecond</code></li>\n              </ul>\n            </li>\n            <li>Acceleration:\n              <ul>\n                <li><code>G-Force</code></li><li><code>MetersPerSecondSquared</code></li><li><code>FeetPerSecondSquared</code></li>\n              </ul>\n            </li>\n            <li>Electrical:\n              <ul>\n                <li><code>Volts</code></li><li><code>Amps</code></li>\n              </ul>\n            </li>\n      </ul>\n    "
                          example: Celsius
                        measurementType:
                          type: string
                          default: MANUAL
                          enum:
                          - MANUAL
                          - IOT_DEVICE
                          - AUTOMATED_SENSOR
                          example: AUTOMATED_SENSOR
                          description: 'Represents the Type of meter. <br><br><code>Manual</code>: They are made to be used in the MaintainX app and to retain manually entered values and are limited to 10 distinct readings creation requests per 24 hours over REST API. Batched readings requests only count as one toward the rate limit. <br><br><code>Automated</code>: (Enterprise Plan) Automated meters store high frequency readings sent from integrations and have normal rate limiting. <br><br>~~<code>IoT Device</code>~~: IoT Device meters are deprecated and should no longer be used in the future. Creating an IoT Device meter will mimic automated meters in terms of behavior to avoid breaking changes.'
                        asset:
                          type:
                          - object
                          - 'null'
                          required:
                          - id
                          - name
                          - description
                          - parentId
                          - criticalityId
                          - locationId
                          - serialNumber
                          - createdAt
                          - updatedAt
                          - creatorId
                          description: Asset linked to the element (expand with query parameter)
                          properties:
                            id:
                              type: integer
                              example: 963
                              description: Global ID of the asset
                            name:
                              type: string
                              example: Forklift
                            description:
                              type:
                              - string
                              - 'null'
                              example: Forklift that is used to to move heavy equipments around the warehouse
                            parentId:
                              type:
                              - integer
                              - 'null'
                              example: 852
                              description: ID of the parent asset
                            criticalityId:
                              type:
                              - integer
                              - 'null'
                              example: 150
                              description: ID of the criticality of the asset
                            locationId:
                              type:
                              - integer
                              - 'null'
                              example: 852
                              description: ID of the location where the asset is located
                            serialNumber:
                              type:
                              - string
                              - 'null'
                              description: Serial number of the asset
                              example: 000123ABC
                            createdAt:
                              type: string
                              format: date-time
                              description: Date & time at which the asset was created
                              example: '2022-01-01T00:00:00.000Z'
                            updatedAt:
                              type: string
                              format: date-time
                              description: Date & time at which the asset was last updated. This doesn't include comments
                              example: '2022-01-01T00:00:00.000Z'
                            creatorId:
                              type:
                              - integer
                              - 'null'
                              example: 851
                              description: ID of the asset creator
                        location:
                          type:
                          - object
                          - 'null'
                          required:
                          - id
                          - name
                          description: Location linked to the element (expand with query parameter)
                          properties:
                            id:
                              type: integer
                              example: 963
                              description: Global ID of the location
                            name:
                              type: string
                              example: Warehouses
                            description:
                              type:
                              - string
                              - 'null'
                              example: The warehouse where we store the forklifts
                            address:
                              type:
                              - string
                              - 'null'
                              example: 1090 main street, Franklin
                              description: Postal address of the location
                            parentId:
                              type:
                              - integer
                              - 'null'
                              example: 852
                              description: ID of the parent location
                            createdAt:
                              type: string
                              format: date-time
                              description: Date & time at which the location was created
                              example: '2022-01-01T00:00:00.000Z'
                            updatedAt:
                              type: string
                              format: date-time
                              description: Date & time at which the location was last updated. This doesn't include comments
                              example: '2022-01-01T00:00:00.000Z'
                        lastReading:
                          type:
                          - object
                          - 'null'
                          required:
                          - id
                          - createdAt
                          - meterId
                          - readingDate
                          - value
                          description: Last reading of a meter (expand with query parameter)
                          properties:
                            id:
                              type: string
                              example: 963
                              description: 'Global ID of the reading.

                                IoT meters will produce IDs with the format ''{meterId}-{uuid}'', while manual meters will produce numbered IDs.'
                            meterId:
                              type: number
                              example: 53
                              description: Global ID of the meter.
                            createdAt:
                              type: string
                              example: '2022-01-01T00:00:00.000Z'
                              description: Meter Reading creation/processing date.
                            readingDate:
                              type:
                              - string
                              - 'null'
                              example: '2022-01-01T00:00:00.000Z'
                              description: Date at which the meter was read. This date can be set in the past, but cannot be further than 3 days for IoT meters.
                            value:
                              type: number
                              description: The reading value given by the meter.
                              example: 120
                  nextCursor:
                    description: The cursor to retrieve the next page of Meters.
                    type:
                    - string
                    - 'null'
                  nextPageUrl:
                    description: Path with query parameters that can be used to retrieve the next page of Meters.
                    type:
                    - string
                    - 'null'
        '400':
          description: Error with query
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                properties:
                  error:
                    description: Description of error
                    type: string
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      tags:
      - Meters
  /meters/{id}:
    get:
      summary: Get meter
      parameters:
      - schema:
          type: integer
        name: id
        in: path
        required: true
        description: ID of the meter
        example: '1'
      - in: query
        name: expand
        schema:
          title: Expand specific fields in the request
          description: 'To expand multiple fields: `expand=asset&expand=location`'
          type: array
          items:
            type: string
            enum:
            - asset
            - location
            - last_reading
      responses:
        '200':
          description: Successfully retrieved meter's information
          content:
            application/json:
              schema:
                type: object
                required:
                - meter
                properties:
                  meter:
                    type: object
                    required:
                    - id
                    - assetId
                    - locationId
                    - creatorId
                    - updaterId
                    - name
                    - uuid
                    - description
                    - measurementType
                    - readingFrequency
                    - unit
                    - createdAt
                    - updatedAt
                    - deletedAt
                    properties:
                      id:
                        type: number
                        description: Global ID of the meter.
                        example: 123
                      assetId:
                        type:
                        - integer
                        - 'null'
                        description: Global ID of the asset tied to the meter
                        example: 123
                      locationId:
                        type:
                        - integer
                        - 'null'
                        description: Global ID of the location tied to the meter
                        example: 123
                      creatorId:
                        type: integer
                        description: Global ID of the user who created the meter
                        example: 123
                      updaterId:
                        type:
                        - integer
                        - 'null'
                        description: Global ID of the last user who updated the meter
                        example: 123
                      name:
                        type: string
                        description: Name of the meters
                      uuid:
                        type: string
                        description: Universally unique identifier of the meter in the UUID format
                        example: cd6fdffd-c9e2-4a40-9715-a182a6e5b557
                      description:
                        type:
                        - string
                        - 'null'
                        description: Description of the meter
                        example: This meter is used for monitoring the temperature of the boiler
                      measurementType:
                        type: string
                        default: MANUAL
                        enum:
                        - MANUAL
                        - IOT_DEVICE
                        - AUTOMATED_SENSOR
                        example: AUTOMATED_SENSOR
                        description: 'Represents the Type of meter. <br><br><code>Manual</code>: They are made to be used in the MaintainX app and to retain manually entered values and are limited to 10 distinct readings creation requests per 24 hours over REST API. Batched readings requests only count as one toward the rate limit. <br><br><code>Automated</code>: (Enterprise Plan) Automated meters store high frequency readings sent from integrations and have normal rate limiting. <br><br>~~<code>IoT Device</code>~~: IoT Device meters are deprecated and should no longer be used in the future. Creating an IoT Device meter will mimic automated meters in terms of behavior to avoid breaking changes.'
                      readingFrequency:
                        type:
                        - object
                        - 'null'
                        description: Expected reading frequency of the meter. Mostly useful for manual meters.
                        example:
                          type: WEEKLY
                          interval: 3
                          days:
                          - MONDAY
                          - WEDNESDAY
                          - FRIDAY
                        anyOf:
                        - type:
                          - object
                          - 'null'
                          title: Secondly
                          required:
                          - type
                          properties:
                            type:
                              type: string
                              pattern: SECONDLY
                              enum:
                              - SECONDLY
                            interval:
                              type: integer
                              description: Number of seconds between readings. Minimum 10s for IOT_DEVICE, 86400s for MANUAL
                              minimum: 10
                              default: 10
                        - type:
                          - object
                          - 'null'
                          title: Minutly
                          required:
                          - type
                          properties:
                            type:
                              type: string
                              pattern: MINUTLY
                              enum:
                              - MINUTLY
                            interval:
                              type: integer
                              description: Number of minutes between readings
                              minimum: 1
                              default: 1
                        - type:
                          - object
                          - 'null'
 

# --- truncated at 32 KB (73 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/maintainx/refs/heads/main/openapi/maintainx-meters-api-openapi.yml