---
title: "List monitors for API key"
method: GET
path: "/v1/monitors"
tags: ["Decision Monitors"]
---

# List monitors for API key

`GET /v1/monitors`

## Request

- Base URL: `https://api.rateapi.dev`
- URL: `https://api.rateapi.dev/v1/monitors`
- Auth: API key in header `X-API-Key`

Returns all monitors associated with the authenticated API key. Supports pagination and optional filtering by status.

**Authentication required**: Pass your API key in the `X-API-Key` header.

## Query parameters

- `status` 'active' | 'paused' | 'disabled'
- `limit` integer
- `offset` integer

## Response `200`

List of monitors

- ListMonitorsResponse: Response for listing monitors
  - `monitors` Monitor[], required: List of monitors
    - `id` string, required: Unique monitor ID
    - `name` string, required: Human-readable name
    - `status` 'active' | 'paused' | 'disabled', required: Current status of the monitor
    - `decision_context` MinimizedDecisionContext, required: Privacy-preserving context stored long-term (no PII). The original decision context is minimized to bands for privacy.
      - `credit_score_band` 'excellent' | 'good' | 'fair' | 'poor': Privacy-preserving credit score band
      - `income_band` 'high' | 'medium' | 'low': Income band (high/medium/low)
      - `loan_amount_band` 'under_100k' | '100k_250k' | '250k_500k' | '500k_750k' | '750k_1m' | 'over_1m', required: Privacy-preserving loan amount band
      - `state` string, required: 2-letter US state code
      - `product_type` 'mortgage' | 'mortgage_arm' | 'auto_loan' | 'personal_loan' | 'heloc' | 'student_loan' | 'credit_card', required: Type of financing product Use `mortgage_arm` for an adjustable-rate mortgage (5/1, 5/5, 7/1, 10/1, ...). ARMs are a separate market from fixed-rate mortgages: an ARM's introductory rate sits structurally below a comparable fixed rate, so a blended list would rank every ARM on top and present it as cheaper — true only until it resets. All initial fixed periods share one `mortgage_arm` bucket. Within `mortgage`, `term_months` selects 15- vs 30-year; it has no meaning for `mortgage_arm`.
      - `intent` 'purchase' | 'refinance' | 'cash_out' | 'balance_transfer' | 'new_credit': Purpose of the financing
      - `term_months` integer: Loan term in months
      - `rate_type` 'fixed' | 'adjustable' | 'variable': Interest rate structure preference
      - `no_points` boolean: Whether to prefer no-points loans
      - `prefer_credit_unions` boolean: Whether to prefer credit unions
    - `conditions` object[], required: Conditions that must be met for a monitor to trigger
      - `field` string, required: Field to compare (e.g., 'apr', 'rate', 'monthly_savings')
      - `operator` 'lt' | 'lte' | 'gt' | 'gte' | 'eq' | 'ne', required: Comparison operator
      - `value` number, required: Value to compare against
    - `subscribed_states` string[], required: States to watch for rate changes. Use ["*"] for all states.
    - `subscribed_product_types` string[], required: Product types to watch. Use ["*"] for all types.
    - `cooldown_hours` integer, required: Hours to wait between triggers
    - `webhook_url` string, uri, required: Webhook URL for notifications (HTTPS only)
    - `webhook_signing_secret_prefix` string, required: First 10 characters of the signing secret, for identifying WHICH secret a monitor is on without storing or re-showing the secret itself. The full secret is returned only once, at creation.
    - `last_evaluated_at` string, date-time, nullable: Last time this monitor was evaluated
    - `last_triggered_at` string, date-time, nullable: Last time this monitor triggered a webhook
    - `created_at` string, date-time, required: When the monitor was created
    - `updated_at` string, date-time, required: When the monitor was last updated
  - `total` integer, required: Total number of monitors matching the query
  - `limit` integer, required: Maximum number of monitors returned
  - `offset` integer, required: Number of monitors skipped

## Other responses

- `401`: Missing or invalid API key
- `429`: Rate limit exceeded
- `500`: Internal server error

---

[API](https://skmtc.dev/rateapi/apis/rate-api.md) · [All operations](https://skmtc.dev/rateapi/apis/rate-api/llms.txt) · [OpenAPI document](https://skmtc.dev/rateapi/apis/rate-api/revisions/06a6db76995f?raw)
