Metaplane Tags API

The Tags API from Metaplane — 7 operations for bulk-labelling tables and monitors, removing tags, fetching tag definitions and reading tagged objects and monitors back. Tags are the routing dimension for incident alerts.

Operations 7

POST /v1/tags/batch/fetch-tags Batch fetch tag definitions #
GET /v1/tags/tagged-monitors/{tag} Fetch monitors for a tag #
GET /v1/tags/tagged-objects/{tag} Fetch all objects for tag #
POST /v1/tags/remove-monitor-tags Remove monitor tags #
POST /v1/tags/remove-table-tags Remove table tags #
POST /v1/tags/batch/tag-monitors Batch tag monitors #
POST /v1/tags/batch/tag-tables Batch tag tables #

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/metaplane-tags-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

metaplane-tags-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Metaplane Tags API
  description: 'The Tags API from Metaplane — 7 operation(s) for tags. Data observability: automated anomaly detection and
    data quality monitoring.'
  version: '1.0'
  contact:
    name: Metaplane
    url: https://docs.metaplane.dev/reference/getting-started
servers:
- url: https://dev.api.metaplane.dev
security:
- Authorization: []
tags:
- name: Tags
paths:
  /v1/tags/batch/fetch-tags:
    post:
      tags:
      - Tags
      summary: Batch fetch tag definitions
      description: Fetch the Metaplane definition for the given tag name. POST is just for a more expressive request body,
        no mutation occurs
      operationId: fetchTagDefinitions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagDefinitionRequest'
        required: false
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PublicTagDefinition'
  /v1/tags/tagged-monitors/{tag}:
    get:
      tags:
      - Tags
      summary: Fetch monitors for a tag
      description: Fetch all monitors associated with a tag
      operationId: fetchTaggedMonitors
      parameters:
      - name: tag
        in: path
        required: true
        schema:
          type: string
      - name: includeDisabled
        in: query
        schema:
          type: boolean
      - name: fetchGroups
        in: query
        schema:
          type: boolean
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PublicMonitor'
  /v1/tags/tagged-objects/{tag}:
    get:
      tags:
      - Tags
      summary: Fetch all objects for tag
      description: Fetches all objects that have the target tag. This response is paginated
      operationId: fetchTaggedObjects
      parameters:
      - name: tag
        in: path
        required: true
        schema:
          type: string
      - name: nextPageToken
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaggedObjectResponse'
  /v1/tags/remove-monitor-tags:
    post:
      tags:
      - Tags
      summary: Remove monitor tags
      description: Removes specified tags from a monitor
      operationId: removeMonitorTags
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveMonitorTagsRequest'
        required: false
      responses:
        '200':
          description: Success
  /v1/tags/remove-table-tags:
    post:
      tags:
      - Tags
      summary: Remove table tags
      description: Remove specified tags from the table at "{database}.{schema}.{table}"
      operationId: removeTableTags
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveTableTagsRequest'
        required: false
      responses:
        '200':
          description: Success
  /v1/tags/batch/tag-monitors:
    post:
      tags:
      - Tags
      summary: Batch tag monitors
      description: Apply a tag to a collection of monitors
      operationId: tagMonitors
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagMonitorsRequest'
        required: false
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagMonitorsResult'
  /v1/tags/batch/tag-tables:
    post:
      tags:
      - Tags
      summary: Batch tag tables
      description: Apply a tag to a collection of tables identified by absolute paths like "{database}.{schema}.{table}"
      operationId: tagTables
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagTablesRequest'
        required: false
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagTablesResult'
components:
  schemas:
    LabelNameValue:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
    MonitorConfig:
      type: object
      properties:
        customSql:
          type: string
          nullable: true
        customMetricUnitType:
          type: string
          description: Overrides the display type in the metaplane UI. Default to float if not specified. Only applies to
            custom sql monitors
          nullable: true
          enum:
          - INT
          - FLOAT
          - PERCENT
          - SECOND
          - BYTE
          - MILLISECOND
        incrementalClause:
          $ref: '#/components/schemas/PublicIncrementalClause'
        customWhereClause:
          type: string
          nullable: true
        alertRule:
          $ref: '#/components/schemas/PublicAlertRule'
        groupByColumns:
          type: array
          description: List of columns to group query by
          nullable: true
          items:
            type: string
            description: List of columns to group query by
            nullable: true
        timeZone:
          type: string
          description: 'Timezone identifier like: America/New_York'
          nullable: true
      nullable: true
    MonitorGrouping:
      type: object
      properties:
        groupings:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/LabelNameValue'
      description: List of all groups that have seen at least one datapoint for this monitor
      nullable: true
    PublicAlertRule:
      type: object
      properties:
        type:
          type: string
          enum:
          - ANOMALY
          - MANUAL
        numFailuresBeforeAlert:
          type: integer
          description: Number of time a monitor can fail before an incident is created
          format: int32
          nullable: true
      description: Optional alert rule configuration. Defaults to ANOMALY
      nullable: true
      discriminator:
        propertyName: type
        mapping:
          MANUAL: '#/components/schemas/PublicManualThresholdRule'
          ANOMALY: '#/components/schemas/PublicAnomalyAlertRule'
      oneOf:
      - $ref: '#/components/schemas/PublicAnomalyAlertRule'
      - $ref: '#/components/schemas/PublicManualThresholdRule'
    PublicAnomalyAlertRule:
      type: object
      properties:
        sensitivity:
          type: number
          description: 'Control the bounds of the model. The default value is 3.0.

            0.3 high is the highest sensitivity correlating with smallest bounds.

            6.0 Is lowest sensitivity corresponding with the largest bounds.

            '
          format: double
          default: 3
        monitorTypeOverride:
          type: string
          enum:
          - ROW_COUNT
          - COLUMN_COUNT
          - CARDINALITY
          - UNIQUENESS
          - NULLNESS
          - PERCENT_ZERO
          - PERCENT_NEGATIVE
          - MIN
          - MAX
          - MEAN
          - STDDEV
          - FRESHNESS
          - CUSTOM
          - PUSH
          - SUM
          - DURATION
          - GENERIC_OBJECT
        modelClassType:
          type: string
          enum:
          - STATIONARY
          - NONE
        modelBoundsOverride:
          type: string
          description: Flags to completely override part of the model bounds
          nullable: true
          enum:
          - UPPER_ONLY
          - LOWER_ONLY
        minLowerBoundSize:
          type: number
          description: 'Controls the minimum size for the lower bound of the models predictive range

            '
          format: double
          nullable: true
          default: 3
        minUpperBoundSize:
          type: number
          description: 'Controls the minimum size for the upper bound of the models predictive range

            '
          format: double
          nullable: true
          default: 3
    PublicEntity:
      type: object
      properties:
        type:
          type: string
          enum:
          - TABLE
          - COLUMN
          - DATABASE
          - SCHEMA
        absolutePath:
          type: string
          description: Path of entity type delimited by `.`
    PublicIncrementalClause:
      type: object
      properties:
        columnName:
          type: string
        duration:
          $ref: '#/components/schemas/TimeDuration'
      nullable: true
    PublicManualThreshold:
      type: object
      properties:
        operatorType:
          type: string
          enum:
          - GREATER_THAN
          - GREATER_THAN_EQUALS
          - LESS_THAN
          - LESS_THAN_EQUALS
          - EQUAL
          - NOT_EQUAL
        value:
          type: number
          format: double
    PublicManualThresholdRule:
      type: object
      properties:
        thresholds:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/PublicManualThreshold'
    PublicMonitor:
      type: object
      properties:
        id:
          type: string
          format: uuid
        type:
          type: string
          enum:
          - ROW_COUNT
          - COLUMN_COUNT
          - CARDINALITY
          - UNIQUENESS
          - NULLNESS
          - PERCENT_ZERO
          - PERCENT_NEGATIVE
          - MIN
          - MAX
          - MEAN
          - STDDEV
          - FRESHNESS
          - CUSTOM
          - PUSH
          - SUM
          - DURATION
          - GENERIC_OBJECT
        genericObjectSubtype:
          type: string
        valueType:
          type: string
          enum:
          - METRIC
          - SOURCE_TO_TARGET
        cronTab:
          type: string
        name:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        isEnabled:
          type: boolean
        config:
          $ref: '#/components/schemas/MonitorConfig'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        absolutePath:
          type: string
        entityType:
          type: string
        connectionId:
          type: string
          format: uuid
        monitorTags:
          uniqueItems: true
          type: array
          items:
            type: string
        monitorGroups:
          type: array
          description: List of all groups that have seen at least one datapoint for this monitor
          nullable: true
          items:
            $ref: '#/components/schemas/MonitorGrouping'
    PublicTagDefinition:
      type: object
      properties:
        tagId:
          type: integer
          format: int64
        name:
          type: string
        createdAt:
          type: string
          format: date-time
    RemoveMonitorTagsRequest:
      type: object
      properties:
        tagNames:
          uniqueItems: true
          type: array
          items:
            type: string
        monitorId:
          type: string
          format: uuid
    RemoveTableTagsRequest:
      type: object
      properties:
        tagNames:
          uniqueItems: true
          type: array
          items:
            type: string
        connectionId:
          type: string
          format: uuid
        absoluteTablePath:
          type: string
          description: The target tables represented as an absolute path like "{database}.{schema}.{table}"
    TagDefinitionRequest:
      type: object
      properties:
        names:
          uniqueItems: true
          type: array
          items:
            type: string
    TagMonitorsRequest:
      type: object
      properties:
        tagName:
          type: string
        monitorIds:
          uniqueItems: true
          type: array
          items:
            type: string
            format: uuid
    TagMonitorsResult:
      type: object
      properties:
        successfullyTaggedMonitors:
          uniqueItems: true
          type: array
          items:
            type: string
            format: uuid
        notFoundMonitors:
          uniqueItems: true
          type: array
          nullable: true
          items:
            type: string
            format: uuid
            nullable: true
    TagTablesRequest:
      type: object
      properties:
        tagName:
          type: string
        connectionId:
          type: string
          format: uuid
        absoluteTablePaths:
          uniqueItems: true
          type: array
          description: A collection of tables represented as absolute paths like "{database}.{schema}.{table}"
          items:
            type: string
            description: A collection of tables represented as absolute paths like "{database}.{schema}.{table}"
    TagTablesResult:
      type: object
      properties:
        successfullyTaggedTablePaths:
          uniqueItems: true
          type: array
          items:
            type: string
        notFoundTablePaths:
          uniqueItems: true
          type: array
          nullable: true
          items:
            type: string
            nullable: true
    TaggedObjectResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/PublicEntity'
        nextPageToken:
          type: string
          nullable: true
        hasMore:
          type: boolean
    TimeDuration:
      type: object
      properties:
        days:
          type: integer
          format: int64
        hours:
          type: integer
          format: int64
        minutes:
          type: integer
          format: int64
  securitySchemes:
    Authorization:
      type: apiKey
      description: Copy in your API key generated from metaplane
      name: Authorization
      in: header
x-api-evangelist:
  harvested: '2026-08-29'
  method: searched
  source: Split by tag from openapi/_original/metaplane-api-openapi.yml, itself the union of the 23 OpenAPI documents Metaplane
    publishes at https://docs.metaplane.dev/reference/<operation>.md