Splunk Observability Cloud APM visibility filters

APIs to manage visibility filters on indexed and unindexed span tags in Splunk APM. These filters identify and hide span tag values that might contain sensitive data from everywhere in Splunk APM. Note that the tags are hidden rather than purged; information is not purged from Splunk APM until it expires after the 8-day default retention period.

OpenAPI Specification

splunk-observability-apm-visibility-filters-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Splunk Observability Cloud — APM visibility filters
  version: 3.0.1
  description: 'APIs to manage visibility filters on indexed and unindexed span tags in Splunk APM. These filters identify
    and hide span tag values that might contain sensitive data from everywhere in Splunk APM. Note that the tags are hidden
    rather than purged; information is not purged from Splunk APM until it expires after the 8-day default retention period.

    Requirements


    You must have an organization access token with the API permission or a session token to use the API.

    You have to have the Splunk Observability Cloud admin, power, or read_only role to use the GET /apm/visibility/filter
    and GET /apm/visibility-filter/{FilterId} operations.

    You have to have the Splunk Observability Cloud admin role to use the POST /apm/visibility-filter, DELETE /apm/visibility-filter/{FilterId},
    and PUT /apm/visibility-filter/{FilterId}/enabled operations.'
  x-provenance:
    method: reconstructed
    authored_by: Splunk (content) / API Evangelist (assembly)
    reconstructed_by: API Evangelist
    reconstructed_on: '2026-08-19'
    first_party: false
    provider_published: false
    note: Splunk's own OpenAPI objects, extracted from the React Server Component payload embedded in each of the 48 API reference
      pages at dev.splunk.com. The operations and schemas are Splunk's; the assembly into standalone documents is API Evangelist's.
      Splunk serves no fetchable spec file — dev.splunk.com answers 200 with an identical 6,638-byte shell for every asset
      path, including invented control paths — so this is NOT first-party publication and is not graded as such.
  x-evidence:
  - type: source
    url: https://dev.splunk.com/observability/reference/
  - type: source
    url: https://dev.splunk.com/observability/docs/apibasics/api_list/
servers:
- url: https://api.{REALM}.observability.splunkcloud.com/v2
  description: Base API URL for the APM visibility filter endpoint
  variables:
    REALM:
      default: us0
      description: Splunk Observability Cloud realm the organization is provisioned in (for example us0, us1, eu0, jp0, au0).
security:
- SessionToken: []
components:
  securitySchemes:
    SessionToken:
      type: apiKey
      in: header
      name: X-SF-Token
      description: Splunk Observability Cloud session token or org access token.
paths:
  /apm/visibility-filter:
    get:
      summary: getAllVisibilityFilters
      description: 'Gets a list of all visibility filters. To manage payload volume, this operation expects the following
        parameters:


        limit: Indicates how many results to return for the request

        offset: Indicates the position in the list of filters at which to start returning values.


        Note: Splunk Observability Cloud returns a maximum of 10,000 visibility filters, even if your organization contains
        more than 10,000. To learn more, see the

        Considerations for retrieve operations section in the developer guide.'
      parameters:
      - name: limit
        in: query
        description: Maximum number of filters to return in the response.
        required: true
        schema:
          type: integer
          minimum: 1
      - name: offset
        in: query
        description: Position of filter from which to begin returning values.
        required: true
        schema:
          type: integer
          minimum: 0
      - name: X-SF-TOKEN
        in: header
        description: Authentication token. Must be a session token (User API access token) associated with an administrator.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: HTTP 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    filterId:
                      type: string
                      example: 507f191e810c19729de860ea
                      description: Unique ID that identifies a filter. Splunk APM adds this ID to a span affected by the filter.
                    description:
                      type: string
                      example: Data blocked due to leak on 04/01/21
                      description: User-readable string that describes the filter in detail. The string also appears as a
                        tag in the span that's affected by the filter.
                    startTime:
                      type: string
                      example: 2021-04-03T15:00:00+0000Z
                      description: 'Start time of filter. Splunk APM applies the filter to spans received at or after this
                        time. The value must be in ISO 8601 format or *nix time format in milliseconds, and the the value
                        of startTime must be earlier than endTime; if these conditions aren''t met, the API returns an HTTP
                        response code 400.

                        Is it acceptable to specify startTime without endTime.'
                    endTime:
                      type: string
                      nullable: true
                      example: 2021-14-21T17:00:00+0000Z
                      description: End time of filter; filter is applied to spans reported at or before this time. If a value
                        is specified for startTime, the value specified in endTime must be later than startTime. This value
                        must be in ISO 8601 format; if these conditions aren't met, the API returns an HTTP response code
                        400.
                    matcher:
                      type: object
                      additionalProperties: true
                      example:
                        sf_service: checkoutService
                        sf_operation: readCartDetails
                        buildId: '1234'
                        http.method: GET
                      description: A JSON object containing a map of key-value pairs that define the match criteria for this
                        filter. The API attempts to match the keys to fields in the span. If it finds a match, the API then
                        compares the value of the map entry to the value in the span. If all the entries in the map are a
                        match to the span, the API applies the filter to the span. You can provide up to 50 key-value pairs,
                        and you must provide the keys sf_service and sf_operation; if you exceed 50 pairs or you fail to provide
                        the required keys and values, the API returns an HTTP response code 400.
                    visibleTags:
                      type: array
                      items:
                        type: string
                      example: '["sf_environment", "sf_service", "sf_endpoint", "sf_operation", "sf_httpMethod", "sf_kind",
                        "sf_workflow", "sf_error", "buildId", "environment"]

                        '
                      description: 'A JSON array that contains a list of tags, both indexed and unindexed, that you specify
                        are safe to display in the Splunk APM UI. If you provide this field, you must include the following
                        tags:

                        sf_environment, sf_service, sf_endpoint, sf_operation, sf_httpMethod, sf_kind, sf_workflow, and sf_error.
                        If these tags are missing, the API returns a HTTP response error code 400.

                        A tag must not appear in both visibleTags and hiddenTags in the same request; if you violate this
                        requirement, the API returns an HTTP response code 400.'
                    hiddenTags:
                      type: array
                      items:
                        type: string
                      example:
                      - status
                      - user_name
                      description: 'A JSON array that contains a list of tags, both indexed and unindexed, that you specify
                        must not appear in Splunk APM.

                        visibleTags is related to the hiddenTags field. A tag must not appear in visibleTags and hiddenTags
                        in the same request; if you violate this requirement, the API returns an HTTP response code 400.'
                    enabled:
                      type: boolean
                      nullable: true
                      example: true
                      description: A boolean flag you can use to enable or disable a filter. This value is set to true by
                        default.
                  title: ValidFilterResponseObject
                  description: JSON object containing the body of a visibility filter in an API response.
                title: ValidFilterListResponseObject
                description: List of all visibility filters in organization.
              examples:
                example:
                  value:
                  - description: Data blocked due to leak on 04/01/21
                    enabled: true
                    endTime: 2021-14-21T17:00:00+0000Z
                    filterId: 507f191e810c19729de860ea
                    hiddenTags:
                    - status
                    - user_name
                    matcher:
                      buildId: '1234'
                      http.method: GET
                      sf_operation: readCartDetails
                      sf_service: checkoutService
                    startTime: 2021-04-03T15:00:00+0000Z
                    visibleTags: '["sf_environment", "sf_service", "sf_endpoint", "sf_operation", "sf_httpMethod", "sf_kind",
                      "sf_workflow", "sf_error", "buildId", "environment"]

                      '
        '400':
          description: HTTP 400 response
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    title: HTTP response code
                    type: integer
                    format: int64
                    example: 400
                    description: HTTP response code returned by the API. Always 400.
                  message:
                    title: 'Error message associated with HTTP response code 400

                      '
                    type: string
                    enum:
                    - limit is required
                    - limit can't be larger than 1000
                    - limit can't be negative
                    - offset can't be negative
                    description: 'Descriptive message returned by the API.

                      Expected values:


                      limit is required

                      The query is missing the limit parameter.

                      limit can''t be larger than 1000

                      The limit parameter must be smaller than or equal to 1000.

                      limit can''t be negative

                      The limit parameter must be a positive number.

                      offset can''t be negative

                      The offset parameter must be a positive number.'
              examples:
                example:
                  value:
                    code: 400
                    message: limit is required
        '403':
          description: HTTP 403 response
      security:
      - SessionToken: []
      tags:
      - APM visibility filters
    post:
      summary: createVisibilityFilter
      description: 'Creates a filter and returns the filter ID.

        Requirements

        You have to have the Splunk Observability Cloud admin role to use the POST apm/visibility-filter operation.'
      parameters:
      - name: X-SF-TOKEN
        in: header
        description: Authentication token. Must be a session token (User API access token) associated with an administrator.
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  type: string
                  example: Private information blocked due to leak on 06/21/21
                  description: User-readable string that describes the filter in detail. The string also appears as a tag
                    in the span that's affected by the filter.
                startTime:
                  type: string
                  example: 2021-06-21T15:00:00+0000Z
                  description: 'Start time of filter. Splunk APM applies the filter to spans received at or after this time.
                    The value must be in ISO 8601 format, and the the value of startTime must be earlier than endTime; if
                    these conditions aren''t met, the API returns an HTTP response code 400.

                    Is it acceptable to specify startTime without endTime.'
                endTime:
                  type: string
                  nullable: true
                  example: 2021-12-21T17:00:00+0000Z
                  description: End time of filter; filter is applied to spans reported at or before this time. If a value
                    is specified for startTime, the value specified in endTime must be later than startTime. This value must
                    be in ISO 8601 or *nix time format in milliseconds; if these conditions aren't met, the API returns an
                    HTTP response code 400.
                matcher:
                  type: object
                  additionalProperties: true
                  example:
                    sf_service: paymentService
                    sf_operation: enterCardInfo
                    buildId: '2213'
                    http.method: PUT
                  description: A JSON object containing a map of key-value pairs that define the match criteria for this filter.
                    The API attempts to match the keys to fields in the span. If it finds a match, the API then compares the
                    value of the map entry to the value in the span. If all the entries in the map are a match to the span,
                    the API applies the filter to the span. You can provide up to 50 key-value pairs, and you must provide
                    the keys sf_service and sf_operation; if you exceed 50 pairs or you fail to provide the required keys
                    and values, the API returns an HTTP response code 400.
                visibleTags:
                  type: array
                  items:
                    type: string
                  example: '["sf_environment", "sf_service", "sf_endpoint", "sf_operation", "sf_httpMethod", "sf_kind", "sf_workflow",
                    "sf_error", "buildId", "environment"]

                    '
                  description: 'A JSON array that contains a list of tags, both indexed and unindexed, that you specify are
                    safe to display in the Splunk APM UI. If you provide this field, you must include the following tags:

                    sf_environment, sf_service, sf_endpoint, sf_operation, sf_httpMethod, sf_kind, sf_workflow, and sf_error.
                    If these tags are missing, the API returns a HTTP response error code 400.

                    A tag must not appear in both visibleTags and hiddenTags in the same request; if you violate this requirement,
                    the API returns an HTTP response code 400.'
                hiddenTags:
                  type: array
                  items:
                    type: string
                  example:
                  - card_number
                  - cvv
                  - expiration_date
                  description: 'A JSON array that contains a list of tags, both indexed and unindexed, that you specify must
                    not appear in the Splunk APM UI.

                    visibleTags is related to the hiddenTags field. A tag must not appear in visibleTags and hiddenTags in
                    the same request; if you violate this requirement, the API returns an HTTP response code 400.'
                enabled:
                  type: boolean
                  nullable: true
                  example: true
                  description: A boolean flag you can use to enable or disable a filter. This value is set to true by default.
              title: ValidFilterRequestObject
              description: 'JSON object specifying the field values of a visibility filter in an API request.

                Note the following logic involving the related matcher, visibleTags, and hiddenTags fields:

                When all three fields are present, visibleTags defines the list of span tags that Splunk APM leaves visible
                in the span. Splunk APM hides any tags provided in the hiddenTags list, as well as any other not provided
                in either list.

                When only matcher and visibleTags are present, visibleTags defines  the list of span tags that Splunk APM
                leaves visible in the span. All other tags in each affected span are hidden.

                When only matcher and hiddenTags are present, hiddenTags defines  the list of span tags that Splunk APM hides
                in the span. All other tags in each affected span are left visible.

                When only matcher is present and both visibleTags and hiddenTags are absent, the set of field names in matcher
                will define the list of visible tags. Splunk APM also leaves the following mandatory tags visible: sf_environment,
                sf_service, sf_endpoint, sf_operation, sf_httpMethod, sf_kind, sf_workflow, and sf_error.'
            examples:
              example:
                value:
                  description: Private information blocked due to leak on 06/21/21
                  enabled: true
                  endTime: 2021-12-21T17:00:00+0000Z
                  hiddenTags:
                  - card_number
                  - cvv
                  - expiration_date
                  matcher:
                    buildId: '2213'
                    http.method: PUT
                    sf_operation: enterCardInfo
                    sf_service: paymentService
                  startTime: 2021-06-21T15:00:00+0000Z
                  visibleTags: '["sf_environment", "sf_service", "sf_endpoint", "sf_operation", "sf_httpMethod", "sf_kind",
                    "sf_workflow", "sf_error", "buildId", "environment"]

                    '
      responses:
        '200':
          description: HTTP 200 response
          content:
            application/json:
              schema:
                type: object
                properties:
                  filterId:
                    type: string
                    example: 507f191e810c19729de860ea
                    description: Unique ID that identifies a filter. Splunk APM adds this ID to a span affected by the filter.
                  description:
                    type: string
                    example: Data blocked due to leak on 04/01/21
                    description: User-readable string that describes the filter in detail. The string also appears as a tag
                      in the span that's affected by the filter.
                  startTime:
                    type: string
                    example: 2021-04-03T15:00:00+0000Z
                    description: 'Start time of filter. Splunk APM applies the filter to spans received at or after this time.
                      The value must be in ISO 8601 format or *nix time format in milliseconds, and the the value of startTime
                      must be earlier than endTime; if these conditions aren''t met, the API returns an HTTP response code
                      400.

                      Is it acceptable to specify startTime without endTime.'
                  endTime:
                    type: string
                    nullable: true
                    example: 2021-14-21T17:00:00+0000Z
                    description: End time of filter; filter is applied to spans reported at or before this time. If a value
                      is specified for startTime, the value specified in endTime must be later than startTime. This value
                      must be in ISO 8601 format; if these conditions aren't met, the API returns an HTTP response code 400.
                  matcher:
                    type: object
                    additionalProperties: true
                    example:
                      sf_service: checkoutService
                      sf_operation: readCartDetails
                      buildId: '1234'
                      http.method: GET
                    description: A JSON object containing a map of key-value pairs that define the match criteria for this
                      filter. The API attempts to match the keys to fields in the span. If it finds a match, the API then
                      compares the value of the map entry to the value in the span. If all the entries in the map are a match
                      to the span, the API applies the filter to the span. You can provide up to 50 key-value pairs, and you
                      must provide the keys sf_service and sf_operation; if you exceed 50 pairs or you fail to provide the
                      required keys and values, the API returns an HTTP response code 400.
                  visibleTags:
                    type: array
                    items:
                      type: string
                    example: '["sf_environment", "sf_service", "sf_endpoint", "sf_operation", "sf_httpMethod", "sf_kind",
                      "sf_workflow", "sf_error", "buildId", "environment"]

                      '
                    description: 'A JSON array that contains a list of tags, both indexed and unindexed, that you specify
                      are safe to display in the Splunk APM UI. If you provide this field, you must include the following
                      tags:

                      sf_environment, sf_service, sf_endpoint, sf_operation, sf_httpMethod, sf_kind, sf_workflow, and sf_error.
                      If these tags are missing, the API returns a HTTP response error code 400.

                      A tag must not appear in both visibleTags and hiddenTags in the same request; if you violate this requirement,
                      the API returns an HTTP response code 400.'
                  hiddenTags:
                    type: array
                    items:
                      type: string
                    example:
                    - status
                    - user_name
                    description: 'A JSON array that contains a list of tags, both indexed and unindexed, that you specify
                      must not appear in Splunk APM.

                      visibleTags is related to the hiddenTags field. A tag must not appear in visibleTags and hiddenTags
                      in the same request; if you violate this requirement, the API returns an HTTP response code 400.'
                  enabled:
                    type: boolean
                    nullable: true
                    example: true
                    description: A boolean flag you can use to enable or disable a filter. This value is set to true by default.
                title: ValidFilterResponseObject
                description: JSON object containing the body of a visibility filter in an API response.
              examples:
                example:
                  value:
                    description: Data blocked due to leak on 04/01/21
                    enabled: true
                    endTime: 2021-14-21T17:00:00+0000Z
                    filterId: 507f191e810c19729de860ea
                    hiddenTags:
                    - status
                    - user_name
                    matcher:
                      buildId: '1234'
                      http.method: GET
                      sf_operation: readCartDetails
                      sf_service: checkoutService
                    startTime: 2021-04-03T15:00:00+0000Z
                    visibleTags: '["sf_environment", "sf_service", "sf_endpoint", "sf_operation", "sf_httpMethod", "sf_kind",
                      "sf_workflow", "sf_error", "buildId", "environment"]

                      '
        '400':
          description: HTTP 400 response
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    title: HTTP response code
                    type: integer
                    format: int64
                    example: 400
                    description: HTTP response code returned by the API. Always 400
                  message:
                    title: Error message associated with HTTP response code 400
                    type: string
                    enum:
                    - Do not send `filterId` while creating a `filter`.
                    - '`matcher` is required'
                    - '`matcher` must include `sf_service`'
                    - '`matcher` must include `sf_operation`'
                    - visibleTags must include `sf_environment`, `sf_endpoint`, `sf_error`, `sf_httpMethod`, `sf_kind`, `sf_operation`,
                      `sf_workflow`
                    - Cannot have more than 1000 filters.
                    - description is required
                    - description must not be longer than 256 characters
                    - startTime must be before endTime
                    - same tag present in visibleTags and hiddenTags
                    - 'Unable to parse startTime=2021-06-14T00:00: Text ''2021-06-14T00:00'' could not be parsed at index
                      16'
                    - 'Unable to parse endTime=2021-06-30T00:00:0: Text ''2021-06-30T00:00:0'' could not be parsed at index
                      16'
                    description: 'Descriptive message returned by the API.

                      Expected values:


                      Do not send filterId while creating a filter.

                      The request included a value for filterId, but this is not a user-set value. Splunk APM automatically
                      generates the filterId for each filter.

                      matcher is required

                      The request failed to include the required matcher field.

                      matcher must include sf_service

                      The matcher object does not contain the required sf_service field.

                      matcher must include sf_operation

                      The matcher object does not contain the required sf_operation field.

                      visibleTags must include sf_environment, sf_endpoint, sf_error, sf_httpMethod, sf_kind, sf_operation,
                      sf_workflow

                      Cannot have more than 1000 filters.

                      The request would have exceeded the organization limit of 1000 filters.

                      description is required

                      The request did not contain the required description field.

                      description must not be longer than 256 characters

                      The filter description is longer than the 256-character limit.

                      startTime must be before endTime

                      The request included an startTime that falls after the included endTime.

                      same tag present in visibleTags and hiddenTags

                      The request contained the same tag name in the lists under the visibleTags and hiddenTags fields. A
                      tag may only appear in one or the other.

                      Unable to parse startTime=2021-06-14T00:00: Text ''2021-06-14T00:00'' could not be parsed at index 16

                      The format of startTime is invalid.

                      Unable to parse endTime=2021-06-30T00:00:0: Text ''2021-06-30T00:00:0'' could not be parsed at index
                      16

                      The format of endTime is invalid.'
              examples:
                example:
                  value:
                    code: 400
                    message: Do not send `filterId` while creating a `filter`.
        '403':
          description: HTTP 403 response
      security:
      - SessionToken: []
      tags:
      - APM visibility filters
  /apm/visibility-filter/{FilterId}:
    get:
      summary: getIndividualVisibilityFilter
      description: 'Gets an individual visibility filter based on the filter ID.

        Requirements

        You have to have the Splunk Observability Cloud admin, power, or read_only role to use the GET /apm/visibility-filter/{FilterId}
        operation.'
      parameters:
      - name: FilterId
        in: path
        description: Filter ID of the visibility filter you want to retrieve.
        required: true
        schema:
          type: string
      - name: X-SF-TOKEN
        in: header
        description: Authentication token. Must be a session token (User API access token) associated with an administrator.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: HTTP 200 response
          content:
            application/json:
              schema:
                type: object
                properties:
                  filterId:
                    type: string
                    example: 507f191e810c19729de860ea
                    description: Unique ID that identifies a filter. Splunk APM adds this ID to a span affected by the filter.
                  description:
                    type: string
                    example: Data blocked due to leak on 04/01/21
                    description: User-readable string that describes the filter in detail. The string also appears as a tag
                      in the span that's affected by the filter.
                  startTime:
                    type: string
                    example: 2021-04-03T15:00:00+0000Z
                    description: 'Start time of filter. Splunk APM applies the filter to spans received at or after this time.
                      The value must be in ISO 8601 format or *nix time format in milliseconds, and the the value of startTime
                      must be earlier than endTime; if these conditions aren''t met, the API returns an HTTP response code
                      400.

                      Is it acceptable to specify startTime without endTime.'
                  endTime:
                    type: string
                    nullable: true
                    example: 2021-14-21T17:00:00+0000Z
                    description: End time of filter; filter is applied to spans reported at or before this time. If a value
                      is specified for startTime, the value specified in endTime must be later than startTime. This value
                      must be in ISO 8601 format; if these conditions aren't met, the API returns an HTTP response code 400.
                  matcher:
                    type: object
                    additionalProperties: true
                    example:
                      sf_service: checkoutService
                      sf_operation: readCartDetails
                      buildId: '1234'
                      http.method: GET
                    description: A JSON object containing a map of key-value pairs that define the match criteria for this
                      filter. The API attempts to match the keys to fields in the span. If it finds a match, the API then
                      compares the value of the map entry to the value in the span. If all the entries in the map are a match
                      to the span, the API applies the filter to the span. You can provide up to 50 key-value pairs, and you
                      must provide the keys sf_service and sf_operation; if you exceed 50 pairs or you fail to provide the
                      required keys and values, the API returns an HTTP response code 400.
                  visibleTags:
                    type: array
                    items:
                      type: string
                    example: '["sf_environment", "sf_service", "sf_endpoint", "sf_operation", "sf_httpMethod", "sf_kind",
                      "sf_workflow", 

# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/splunk-observability/refs/heads/main/openapi/splunk-observability-apm-visibility-filters-openapi.yml