Netdata badges API

Everything related to dynamic badges based on metric data

OpenAPI Specification

netdata-badges-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Netdata agent badges API
  description: 'Real-time performance and health monitoring.


    ## API Versions


    Netdata provides three API versions:

    - **v1**: The original API, focused on single-node operations

    - **v2**: Multi-node API with advanced grouping and aggregation capabilities

    - **v3**: The latest API version that combines v1 and v2 endpoints and may include additional features


    ### v3 API Endpoints


    The v3 API provides the current, actively maintained endpoints:

    - `/api/v3/data` - Multi-dimensional data queries

    - `/api/v3/weights` - Metric scoring/correlation

    - `/api/v3/contexts` - Context metadata

    - `/api/v3/nodes` - Node information

    - `/api/v3/q` - Full-text search

    - `/api/v3/alerts` - Alert information

    - `/api/v3/alert_transitions` - Alert state transitions

    - `/api/v3/alert_config` - Alert configuration

    - `/api/v3/functions` - Available functions

    - `/api/v3/function` - Execute functions

    - `/api/v3/info` - Agent information

    - `/api/v3/node_instances` - Node instance information

    - `/api/v3/stream_path` - Streaming topology

    - `/api/v3/versions` - Version information

    - `/api/v3/badge.svg` - Dynamic badges

    - `/api/v3/allmetrics` - Export metrics

    - `/api/v3/context` - Single context info

    - `/api/v3/variable` - Variable information

    - `/api/v3/config` - Dynamic configuration

    - `/api/v3/settings` - Agent settings

    - `/api/v3/me` - Current user information

    - `/api/v3/claim` - Agent claiming

    - Additional management and streaming endpoints


    **Note:** V1 and V2 APIs are deprecated and maintained for backwards compatibility only. New integrations should use V3 exclusively.

    '
  version: v1-rolling
  contact:
    name: Netdata Agent API
    email: info@netdata.cloud
    url: https://netdata.cloud
  license:
    name: GPL v3+
    url: https://github.com/netdata/netdata/blob/master/LICENSE
servers:
- url: https://registry.my-netdata.io
- url: http://registry.my-netdata.io
- url: http://localhost:19999
tags:
- name: badges
  description: Everything related to dynamic badges based on metric data
paths:
  /api/v1/badge.svg:
    get:
      deprecated: true
      operationId: badge1
      tags:
      - badges
      summary: Generate a badge in form of SVG image for a chart (or dimension)
      description: 'Successful responses are SVG images.

        **Security & Access Control:** - 📊 **Public Data API** - Bearer token optional, IP-based ACL restrictions apply - **Default Access:** Public (no authentication required) - **Bearer Protection:** When enabled via `/api/v3/bearer_protection`, requires bearer token - **IP Restrictions:** Subject to `allow badges from` in netdata.conf - **Access Methods:** Direct HTTP/HTTPS, Netdata Cloud, external tools'
      security:
      - {}
      - bearerAuth: []
      parameters:
      - $ref: '#/components/parameters/chart'
      - $ref: '#/components/parameters/dimension'
      - $ref: '#/components/parameters/after'
      - $ref: '#/components/parameters/before'
      - $ref: '#/components/parameters/dataTimeGroup1'
      - $ref: '#/components/parameters/dataQueryOptions'
      - name: alarm
        in: query
        description: The name of an alarm linked to the chart.
        required: false
        allowEmptyValue: true
        schema:
          type: string
          format: any text
      - name: label
        in: query
        description: A text to be used as the label.
        required: false
        allowEmptyValue: true
        schema:
          type: string
          format: any text
      - name: units
        in: query
        description: A text to be used as the units.
        required: false
        allowEmptyValue: true
        schema:
          type: string
          format: any text
      - name: label_color
        in: query
        description: 'A color to be used for the background of the label side(left side) of the badge. One of predefined colors or specific color in hex `RGB` or `RRGGBB` format (without preceding `#` character). If value wrong or not given default color will be used.

          '
        required: false
        allowEmptyValue: true
        schema:
          oneOf:
          - type: string
            enum:
            - green
            - brightgreen
            - yellow
            - yellowgreen
            - orange
            - red
            - blue
            - grey
            - gray
            - lightgrey
            - lightgray
          - type: string
            format: ^([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
      - name: value_color
        in: query
        description: 'A color to be used for the background of the value *(right)* part of badge. You can set multiple using a pipe with a condition each, like this: `color<value|color:null` The following operators are supported: >, <, >=, <=, =, :null (to check if no value exists). Each color can be specified in same manner as for `label_color` parameter. Currently only integers are supported as values.

          '
        required: false
        allowEmptyValue: true
        schema:
          type: string
          format: any text
      - name: text_color_lbl
        in: query
        description: 'Font color for label *(left)* part of the badge. One of predefined colors or as HTML hexadecimal color without preceding `#` character. Formats allowed `RGB` or `RRGGBB`. If no or wrong value given default color will be used.

          '
        required: false
        allowEmptyValue: true
        schema:
          oneOf:
          - type: string
            enum:
            - green
            - brightgreen
            - yellow
            - yellowgreen
            - orange
            - red
            - blue
            - grey
            - gray
            - lightgrey
            - lightgray
          - type: string
            format: ^([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
      - name: text_color_val
        in: query
        description: 'Font color for value *(right)* part of the badge. One of predefined colors or as HTML hexadecimal color without preceding `#` character. Formats allowed `RGB` or `RRGGBB`. If no or wrong value given default color will be used.

          '
        required: false
        allowEmptyValue: true
        schema:
          oneOf:
          - type: string
            enum:
            - green
            - brightgreen
            - yellow
            - yellowgreen
            - orange
            - red
            - blue
            - grey
            - gray
            - lightgrey
            - lightgray
          - type: string
            format: ^([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
      - name: multiply
        in: query
        description: Multiply the value with this number for rendering it at the image (integer value required).
        required: false
        allowEmptyValue: true
        schema:
          type: number
          format: integer
      - name: divide
        in: query
        description: Divide the value with this number for rendering it at the image (integer value required).
        required: false
        allowEmptyValue: true
        schema:
          type: number
          format: integer
      - name: scale
        in: query
        description: Set the scale of the badge (greater or equal to 100).
        required: false
        allowEmptyValue: true
        schema:
          type: number
          format: integer
      - name: fixed_width_lbl
        in: query
        description: 'This parameter overrides auto-sizing of badge and creates it with fixed width. This parameter determines the size of the label''s left side *(label/name)*. You must set this parameter together with `fixed_width_val` otherwise it will be ignored. You should set the label/value widths wide enough to provide space for all the possible values/contents of the badge you''re requesting. In case the text cannot fit the space given it will be clipped. The `scale` parameter still applies on the values you give to `fixed_width_lbl` and `fixed_width_val`.

          '
        required: false
        allowEmptyValue: false
        schema:
          type: number
          format: integer
      - name: fixed_width_val
        in: query
        description: 'This parameter overrides auto-sizing of badge and creates it with fixed width. This parameter determines the size of the label''s right side *(value)*. You must set this parameter together with `fixed_width_lbl` otherwise it will be ignored. You should set the label/value widths wide enough to provide space for all the possible values/contents of the badge you''re requesting. In case the text cannot fit the space given it will be clipped. The `scale` parameter still applies on the values you give to `fixed_width_lbl` and `fixed_width_val`.

          '
        required: false
        allowEmptyValue: false
        schema:
          type: number
          format: integer
      - name: points
        in: query
        description: The number of points to use for the calculation. Default is 1.
        required: false
        allowEmptyValue: true
        schema:
          type: integer
          default: 1
      - name: group_options
        in: query
        description: Additional options for the grouping function.
        required: false
        allowEmptyValue: true
        schema:
          type: string
      - name: precision
        in: query
        description: Number of decimal places to show in the value. Default is -1 (automatic).
        required: false
        allowEmptyValue: true
        schema:
          type: integer
          default: -1
      - name: refresh
        in: query
        description: 'Auto-refresh interval in seconds. Use "auto" to automatically determine refresh interval based on the time range or alarm update frequency. For alarms, defaults to the alarm''s update_every. For charts with RRDR_OPTION_NOT_ALIGNED, defaults to the chart''s update_every. Otherwise calculated from the time range (before - after).

          '
        required: false
        allowEmptyValue: true
        schema:
          oneOf:
          - type: string
            enum:
            - auto
          - type: integer
            minimum: 0
      responses:
        '200':
          description: The call was successful. The response should be an SVG image.
        '400':
          description: Bad request - the body will include a message stating what is wrong.
        '404':
          description: No chart with the given id is found.
        '500':
          description: Internal server error. This usually means the server is out of memory.
  /api/v3/badge.svg:
    get:
      operationId: badge3
      tags:
      - badges
      summary: Generate a badge in form of SVG image for a chart (or dimension) - Latest API
      description: 'Generates an SVG badge displaying real-time metric values from Netdata charts or alarms.

        This is the latest version (v3) of the badge API. It provides the same functionality as v1 but may include additional features in the future.


        The badge can display:

        - Current value of a chart dimension

        - Current status and value of an alarm

        - Custom labels and units

        - Dynamic colors based on value thresholds or alarm status


        Successful responses are SVG images that can be embedded in web pages or documentation.


        **Security & Access Control:**

        - 📊 **Public Data API** - Bearer token optional, IP-based ACL restrictions apply

        - **Default Access:** Public (no authentication required)

        - **Bearer Protection:** When enabled via `/api/v3/bearer_protection`, requires bearer token

        - **IP Restrictions:** Subject to `allow badges from` in netdata.conf

        - **Access Methods:** Direct HTTP/HTTPS, Netdata Cloud, external tools

        '
      security:
      - {}
      - bearerAuth: []
      parameters:
      - $ref: '#/components/parameters/chart'
      - $ref: '#/components/parameters/dimension'
      - $ref: '#/components/parameters/after'
      - $ref: '#/components/parameters/before'
      - $ref: '#/components/parameters/dataTimeGroup1'
      - $ref: '#/components/parameters/dataQueryOptions'
      - name: alarm
        in: query
        description: The name of an alarm linked to the chart. When specified, the badge will display the alarm's current value and use alarm status for color selection.
        required: false
        allowEmptyValue: true
        schema:
          type: string
      - name: label
        in: query
        description: 'Custom text to use as the badge label (left side). If not specified:

          - For alarms: uses the alarm name (with underscores replaced by spaces)

          - For dimensions: uses the dimension name

          - Otherwise: uses the chart name

          '
        required: false
        allowEmptyValue: true
        schema:
          type: string
      - name: units
        in: query
        description: 'Custom text to use as the units suffix. If not specified:

          - For alarms: uses the alarm''s configured units or empty string

          - For percentage queries: uses "%"

          - Otherwise: uses the chart''s units

          '
        required: false
        allowEmptyValue: true
        schema:
          type: string
      - name: label_color
        in: query
        description: 'Background color for the label (left) side of the badge. Can be:

          - One of the predefined color names

          - Hex RGB format (3 digits): e.g., "f00" for red

          - Hex RRGGBB format (6 digits): e.g., "ff0000" for red

          Note: Do not include the ''#'' character. If value is invalid, default color will be used.

          '
        required: false
        allowEmptyValue: true
        schema:
          oneOf:
          - type: string
            enum:
            - green
            - brightgreen
            - yellow
            - yellowgreen
            - orange
            - red
            - blue
            - grey
            - gray
            - lightgrey
            - lightgray
          - type: string
            format: ^([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
      - name: value_color
        in: query
        description: 'Background color for the value (right) side of the badge. Supports conditional coloring based on the value.


          Can be specified as:

          - Simple color: Same format as label_color

          - Conditional: Multiple color rules separated by pipe (|), each with format: `color<operator>value`


          Supported operators:

          - `>`: greater than

          - `<`: less than

          - `>=`: greater than or equal

          - `<=`: less than or equal

          - `=`: equal to

          - `:null`: true when no value exists


          Example: `green<80|yellow<95|red` (green if value < 80, yellow if < 95, otherwise red)


          Note: Currently only integers are supported as values. Colors follow same format as label_color.

          '
        required: false
        allowEmptyValue: true
        schema:
          type: string
      - name: text_color_lbl
        in: query
        description: 'Font color for the label (left) side text. Can be:

          - One of the predefined color names

          - Hex RGB or RRGGBB format without ''#'' character

          If not specified or invalid, default color will be used.

          '
        required: false
        allowEmptyValue: true
        schema:
          oneOf:
          - type: string
            enum:
            - green
            - brightgreen
            - yellow
            - yellowgreen
            - orange
            - red
            - blue
            - grey
            - gray
            - lightgrey
            - lightgray
          - type: string
            format: ^([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
      - name: text_color_val
        in: query
        description: 'Font color for the value (right) side text. Can be:

          - One of the predefined color names

          - Hex RGB or RRGGBB format without ''#'' character

          If not specified or invalid, default color will be used.

          '
        required: false
        allowEmptyValue: true
        schema:
          oneOf:
          - type: string
            enum:
            - green
            - brightgreen
            - yellow
            - yellowgreen
            - orange
            - red
            - blue
            - grey
            - gray
            - lightgrey
            - lightgray
          - type: string
            format: ^([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
      - name: multiply
        in: query
        description: 'Multiply the displayed value by this number before rendering. Integer value required.

          Useful for unit conversions or scaling. Default is 1.

          '
        required: false
        allowEmptyValue: true
        schema:
          type: integer
          default: 1
      - name: divide
        in: query
        description: 'Divide the displayed value by this number before rendering. Integer value required.

          Useful for unit conversions or scaling. Default is 1.

          '
        required: false
        allowEmptyValue: true
        schema:
          type: integer
          default: 1
      - name: scale
        in: query
        description: 'Scale factor for the badge size as a percentage. Must be >= 100.

          - 100 = normal size (default)

          - 150 = 1.5x larger

          - 200 = 2x larger

          '
        required: false
        allowEmptyValue: true
        schema:
          type: integer
          minimum: 100
          default: 100
      - name: fixed_width_lbl
        in: query
        description: 'Fixed width for the label (left) side in pixels. Must be used together with `fixed_width_val`.


          This overrides automatic sizing and creates a badge with fixed dimensions. Ensure the width is sufficient for your content - text that doesn''t fit will be clipped.


          The `scale` parameter still applies to these fixed width values.

          '
        required: false
        allowEmptyValue: false
        schema:
          type: integer
      - name: fixed_width_val
        in: query
        description: 'Fixed width for the value (right) side in pixels. Must be used together with `fixed_width_lbl`.


          This overrides automatic sizing and creates a badge with fixed dimensions. Ensure the width is sufficient for your content - text that doesn''t fit will be clipped.


          The `scale` parameter still applies to these fixed width values.

          '
        required: false
        allowEmptyValue: false
        schema:
          type: integer
      - name: points
        in: query
        description: 'Number of data points to use for the calculation. Default is 1.

          Higher values provide averaging over more samples.

          '
        required: false
        allowEmptyValue: true
        schema:
          type: integer
          default: 1
      - name: group_options
        in: query
        description: Additional options for the time-series grouping function. Format depends on the selected group method.
        required: false
        allowEmptyValue: true
        schema:
          type: string
      - name: precision
        in: query
        description: 'Number of decimal places to display in the value.

          - Positive number: exact decimal places (e.g., 2 = "12.34")

          - -1 (default): automatic precision based on value magnitude

          '
        required: false
        allowEmptyValue: true
        schema:
          type: integer
          default: -1
      - name: refresh
        in: query
        description: "Auto-refresh interval for the badge. Can be:\n- \"auto\": Automatically determine refresh based on context\n  - For alarms: uses the alarm's update_every interval\n  - For non-aligned charts: uses the chart's update_every\n  - For time-range queries: uses the query time span\n- Integer: Specific refresh interval in seconds\n\nWhen refresh is set, the response includes a Refresh HTTP header.\n"
        required: false
        allowEmptyValue: true
        schema:
          oneOf:
          - type: string
            enum:
            - auto
          - type: integer
            minimum: 0
      responses:
        '200':
          description: 'Success. The response is an SVG image that can be embedded in HTML or Markdown.


            When refresh parameter is set, the response includes:

            - Refresh header with the interval

            - Appropriate Cache-Control headers

            '
          content:
            image/svg+xml:
              schema:
                type: string
                format: binary
        '400':
          description: 'Bad request. The response body contains an error message explaining what is wrong.

            Common causes:

            - Missing required ''chart'' parameter

            - Invalid parameter values

            '
        '404':
          description: 'Not found. Possible causes:

            - Chart with the specified ID does not exist

            - Specified alarm does not exist on the chart

            '
        '500':
          description: Internal server error. Usually indicates the server is out of memory.
components:
  parameters:
    after:
      name: after
      in: query
      description: '`after` and `before` define the time-frame of a query. `after` can be a negative number of seconds, up to 3 years (-94608000), relative to `before`. If not set, it is usually assumed to be -600. When non-data endpoints support the `after` and `before`, they use the time-frame to limit their response for objects having data retention within the time-frame given.

        '
      required: false
      schema:
        type: integer
        default: -600
    before:
      name: before
      in: query
      description: '`after` and `before` define the time-frame of a query. `before` can be a negative number of seconds, up to 3 years (-94608000), relative to current clock. If not set, it is assumed to be the current clock time. When `before` is positive, it is assumed to be a unix epoch timestamp. When non-data endpoints support the `after` and `before`, they use the time-frame to limit their response for objects having data retention within the time-frame given.

        '
      required: false
      schema:
        type: integer
        default: 0
    chart:
      name: chart
      in: query
      description: The id of the chart as returned by the `/api/v1/charts` call.
      required: false
      allowEmptyValue: false
      schema:
        type: string
        format: as returned by `/api/v1/charts`
    dataQueryOptions:
      name: options
      in: query
      description: "Options that affect data generation.\n* `jsonwrap` - Wrap the output in a JSON object with metadata about the query.\n* `raw` - change the output so that it is aggregatable across multiple such queries. Supported by `/api/v2` data queries and `json2` format.\n* `minify` - Remove unnecessary spaces and newlines from the output.\n* `debug` - Provide additional information in `jsonwrap` output to help tracing issues.\n* `nonzero` - Do not return dimensions that all their values are zero, to improve the visual appearance of charts. They will still be returned if all the dimensions are entirely zero.\n* `null2zero` - Replace `null` values with `0`.\n* `absolute` or `abs` - Traditionally Netdata returns select dimensions negative to improve visual appearance. This option turns this feature off.\n* `display-absolute` - Only used by badges, to do color calculation using the signed value, but render the value without a sign.\n* `flip` or `reversed` - Order the timestamps array in reverse order (newest to oldest).\n* `min2max` - When flattening multi-dimensional data into a single metric format, use `max - min` instead of `sum`. This is EOL - use `/api/v2` to control aggregation across dimensions.\n* `percentage` - Convert all values into a percentage vs the row total. When enabled, Netdata will query all dimensions, even the ones that have not been selected or are hidden, to find the row total, in order to calculate the percentage of each dimension selected.\n* `seconds` - Output timestamps in seconds instead of dates.\n* `milliseconds` or `ms` - Output timestamps in milliseconds instead of dates.\n* `unaligned` - by default queries are aligned to the the view, so that as time passes past data returned do not change. When a data query will not be used for visualization, `unaligned` can be given to avoid aligning the query time-frame for visual precision.\n* `match-ids`, `match-names`. By default filters match both IDs and names when they are available. Setting either of the two options will disable the other.\n* `anomaly-bit` - query the anomaly information instead of metric values. This is EOL, use `/api/v2` and `json2` format which always returns this information and many more.\n* `jw-anomaly-rates` - return anomaly rates as a separate result set in the same `json` format response. This is EOL, use `/api/v2` and `json2` format which always returns information and many more. \n* `details` - `/api/v2/data` returns in `jsonwrap` the full tree of dimensions that have been matched by the query.\n* `group-by-labels` - `/api/v2/data` returns in `jsonwrap` flattened labels per output dimension. These are used to identify the instances that have been aggregated into each dimension, making it possible to provide a map, like Netdata does for Kubernetes.\n* `natural-points` - return timestamps as found in the database. The result is again fixed-step, but the query engine attempts to align them with the timestamps found in the database.\n* `virtual-points` - return timestamps independent of the database alignment. This is needed aggregating data across multiple Netdata Agents, to ensure that their outputs do not need to be interpolated to be merged.\n* `selected-tier` - use data exclusively from the selected tier given with the `tier` parameter. This option is set automatically when the `tier` parameter is set.\n* `all-dimensions` - In `/api/v1` `jsonwrap` include metadata for all candidate metrics examined. In `/api/v2` this is standard behavior and no option is needed.\n* `label-quotes` - In `csv` output format, enclose each header label in quotes.\n* `objectrows` - Each row of value should be an object, not an array (only for `json` format).\n* `google_json` - Comply with google JSON/JSONP specs (only for `json` format).\n* `minimal-stats` or `minimal` - Reduce the amount of statistics returned in `jsonwrap` format to save bandwidth.\n* `long-json-keys` or `long-keys` - Use descriptive key names in JSON output instead of abbreviated ones.\n* `mcp-info` - Include additional metadata useful for the Model Context Protocol (MCP) integration.\n* `rfc3339` - Return timestamps in RFC3339 format (e.g., \"2023-01-01T00:00:00Z\") instead of Unix timestamps.\n"
      required: false
      allowEmptyValue: false
      schema:
        type: array
        items:
          type: string
          enum:
          - jsonwrap
          - raw
          - minify
          - debug
          - nonzero
          - null2zero
          - abs
          - absolute
          - display-absolute
          - flip
          - reversed
          - min2max
          - percentage
          - seconds
          - ms
          - milliseconds
          - unaligned
          - match-ids
          - match-names
          - anomaly-bit
          - jw-anomaly-rates
          - details
          - group-by-labels
          - natural-points
          - virtual-points
          - selected-tier
          - all-dimensions
          - label-quotes
          - objectrows
          - google_json
          - minimal-stats
          - minimal
          - long-json-keys
          - long-keys
          - mcp-info
          - rfc3339
        default:
        - seconds
        - jsonwrap
    dataTimeGroup1:
      name: group
      in: query
      description: 'Time aggregation function. If multiple collected values are to be grouped in order to return fewer points, this parameters defines the method of grouping. If the `absolute` option is set, the values are turned positive before applying this calculation.

        '
      required: false
      schema:
        type: string
        enum:
        - min
        - max
        - avg
        - average
        - median
        - stddev
        - sum
        - incremental-sum
        - ses
        - des
        - cv
        - countif
        - percentile
        - percentile25
        - percentile50
        - percentile75
        - percentile80
        - percentile90
        - percentile95
        - percentile97
        - percentile98
        - percentile99
        - trimmed-mean
        - trimmed-mean1
        - trimmed-mean2
        - trimmed-mean3
        - trimmed-mean5
        - trimmed-mean10
        - trimmed-mean15
        - trimmed-mean20
        - trimmed-mean25
        - trimmed-median
        - trimmed-median1
        - trimmed-median2
        - trimmed-median3
        - trimmed-median5
        - trimmed-median10
        - trimmed-median15
        - trimmed-median20
        - trimmed-median25
        - ema
        - extremes
        default: average
    dimension:
      name: dimension
      in: query
      description: Zero, one or more dimension ids or names, as returned by the /chart call, separated with comma or pipe. Netdata simple patterns are supported.
      required: false
      allowEmptyValue: false
      schema:
        type: array
        items:
          type: string
          format: as returned by /charts
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Bearer token authentication for API access when bearer protection is enabled.


        **How to obtain a token:**

        1. Token must be obtained via `/api/v3/bearer_get_token` endpoint

        2. This endpoint is ACLK-only (requires Netdata Cloud access)

        3. Token includes role-based access control and expiration time


        **How to use:**

        ```

        Authorization: Bearer <token>

        ```


        **When required:**

        - When bearer protection is enabled on the agent (via `/api/v3/bearer_protection`)

        - Applies to all APIs with `HTTP_ACCESS_ANONYMOUS_DATA` permission

        - Does not apply to APIs with `HTTP_ACL_NOCHECK` (always public)

        - Does not apply to ACLK-only APIs (use cloud authentication)


        **Token expiration:**

        - Tokens are time-limited and must be renewed periodically

        - Expired tokens return HTTP 401 Unauthorized

        '
    aclkAuth:
      type: http
      scheme: bearer
      description: 'ACLK-only authentication - these APIs are ONLY accessible via Netdata Cloud (ACLK).


        **Access Requirements:**

        - User must be authenticated via Netdata Cloud (`SIGNED_ID`)

        - User and agent must be in the same Netdata Cloud space (`SAME_SPACE`)

        - Additional role-based permissions may apply per endpoint


        **NOT accessible via:**

        - Direct HTTP/HTTPS to agent (even with bearer token)

        - Local dashboard

        - External integrations


        **Available only through:**

        - Netdata Cloud web interface

        - Netdata Cloud API (ACLK tunnel)


        **Development mode:**

        - Can be made available in dev mode with `ACL_DEV_OPEN_ACCESS` flag

        '
    ipAcl:
      type: apiKey
      in: header
      name: X-Forwarded-For
      description: "IP-based Access Control List restrictions (informational only).\n\n**Configuration:**\nAPIs are subject to IP-based ACL restrictions configured in `netdata.conf`:\n\n```conf\n[web]\n    allow dashboard from = *\n    allow badges from = *\n    allow management from = localhost\n```\n\n**ACL Categories:**\n- `allow dashboard from` - Controls access to metrics, alerts, nodes, functions, config APIs\n- `allow badges from` - Controls access to badge generation APIs\n- `allow management from` - Controls access to management APIs\n\n**Default behavior:**\n- Most APIs allow access from any IP by default\n- Management APIs restrict to localhost by default\n- Can be customized per deployment\n\n**Note:** This is not a standard authentication mechanism but rather IP filtering.\nAPIs with `HTTP_ACL_NOCHECK` bypass all IP restrictions.\n"