> ## Documentation Index
> Fetch the complete documentation index at: https://docs.prelude.so/llms.txt
> Use this file to discover all available pages before exploring further.

# List the rules Prelude maintains

> **Beta.** The request and response shapes may still change.

List the Prelude-authored rules every customer shares. These are the shared library a recipe may draw on alongside your own rules: reference one in a recipe by its identifier, give it a weight, and it scores like any other.

A managed rule is returned without its expression, and with a description in place of a name. A managed rule reads only Prelude signals, so it can never reference a recipe's attributes or parameters.

Managed rules are Prelude's own: a shared library every customer can score over and none can edit. Name one in a recipe by its identifier, give it a weight, and it behaves like a rule you wrote.

## What you get, and what you don't

A managed rule is returned with an identifier, a type, and a description. It carries **no expression**, and a description stands in for the name.

The identifier is always disclosed, which is what matters in practice: a rule whose condition you can't read is still one you can reweight, switch off, or ask us about.

## What they can read

A managed rule reads Prelude signals only. It can never reference a recipe's `attr.` or `param.` names - a recipe referencing one that does is refused, because a shared rule bound to one customer's recipe stops being shared.

Writing to a managed rule's identifier is refused with `managed_rule_read_only`. Reading one through [Get a rule](/watch/v2/api-reference/management/rules/get-rule) answers `404`: it exists, but not as something you own.


## OpenAPI

````yaml get /v2/watch/management/rules/managed
openapi: 3.1.0
info:
  title: Prelude API
  version: 2.0.0
  description: The Prelude API allows you to send messages to your users.
  contact:
    email: support@prelude.so
servers:
  - url: https://api.prelude.dev
    description: Production server
security:
  - apiToken: []
tags:
  - name: Notify
    description: Send transactional and marketing messages with compliance enforcement.
  - name: Transactional
    description: Send transactional messages (deprecated - use Notify API instead).
  - name: Verify
    description: Verify phone numbers.
  - name: Watch
    description: Evaluate email addresses and phone numbers for trustworthiness.
  - name: Lookup
    description: >-
      Retrieve detailed information about a phone number including carrier data,
      line type, and portability status.
paths:
  /v2/watch/management/rules/managed:
    get:
      tags:
        - Watch
      summary: List managed rules
      description: >-
        **Beta.** The request and response shapes may still change.


        List the Prelude-authored rules every customer shares. These are the
        shared library a recipe may draw on alongside your own rules: reference
        one in a recipe by its identifier, give it a weight, and it scores like
        any other.


        A managed rule is returned without its expression, and with a
        description in place of a name. A managed rule reads only Prelude
        signals, so it can never reference a recipe's attributes or parameters.
      operationId: listManagedWatchRules
      parameters:
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 200
            default: 50
          description: >-
            Maximum number of rules to return per page. A larger value is
            clamped to 200 rather than refused.
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          description: Pagination cursor from the previous response.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WatchManagedRuleListResponse'
        '400':
          description: KO
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    WatchManagedRuleListResponse:
      type: object
      properties:
        rules:
          type: array
          items:
            $ref: '#/components/schemas/WatchManagedRule'
        next_cursor:
          type: string
          description: >-
            Pass this back as `cursor` for the next page. Absent on the last
            page.
          examples:
            - rul_01jc0t6fwwfgfsq1md24mhyztj
      required:
        - rules
    Error:
      type: object
      properties:
        code:
          type: string
          description: The error code.
          examples:
            - invalid_phone_number
        message:
          type: string
          examples:
            - >-
              The provided phone number is invalid. Provide a valid E.164 phone
              number.
          description: A human-readable message describing the error.
        type:
          type: string
          examples:
            - bad_request
          description: The error type.
        request_id:
          type: string
          examples:
            - 3d19215e-2991-4a05-a41a-527314e6ff6a
          description: >-
            A string that identifies this specific request. Report it back to us
            to help us diagnose your issues.
        param:
          type: string
          examples:
            - phone_number
          description: The parameter the error refers to, when it applies to a single one.
      required:
        - code
        - message
        - type
    WatchManagedRule:
      type: object
      properties:
        id:
          type: string
          examples:
            - rul_01jc0t6fwwfgfsq1md24mhyztj
          description: >-
            The rule identifier. Reference it in a recipe's `rules` exactly as
            you would one of your own.
        type:
          type: string
          enum:
            - MANAGED
          description: Always `MANAGED`. The rule is Prelude's, and read-only to you.
        description:
          type: string
          description: >-
            What the rule catches. It stands in for a name, which says more
            about how the rule is implemented than about what it looks for.
          examples:
            - >-
              Flags traffic arriving from a residential proxy corroborated by a
              second source.
      required:
        - id
        - type
        - description
  securitySchemes:
    apiToken:
      type: http
      scheme: bearer

````