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

# Get current plan and usage

> Returns the subscription plan, limits, and watch usage for the authenticated API key.



## OpenAPI

````yaml /api-reference/openapi.yaml get /plan
openapi: 3.1.0
info:
  title: Site Spy API
  description: >
    # Site Spy web page monitoring and notifications API


    REST API for managing page watches, group tags, and notifications.


    Site Spy can be driven by this simple REST API — the endpoint pages include
    `curl`, Python, and JavaScript examples to help you get started faster.


    ## Where to find my API key?


    Your API key is under [**Settings →
    API**](https://sitespy.app/dashboard/settings?tab=api) in the Site Spy
    dashboard.

    Simply click the API key to copy it to your clipboard.


    ## Connection URL


    All endpoints live under `https://detect.coolify.vkuprin.com/api/v1`, for
    example:

    `https://detect.coolify.vkuprin.com/api/v1/watch/cc0cfffa-f449-477b-83ea-0caafd1dc091/history`


    ## Authentication


    Almost all API requests require authentication, provided as an **API key**
    in the header of the HTTP request.


    For example: `x-api-key: YOUR_API_KEY`
  version: 0.1.6
  contact:
    name: Site Spy
    url: https://sitespy.app
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://detect.coolify.vkuprin.com/api/v1
    description: Site Spy production
security:
  - ApiKeyAuth: []
tags:
  - name: Watch Management
    description: >
      Core functionality for managing web page monitors. Create, retrieve,
      update, and delete individual watches.

      Each watch represents a single URL being monitored for changes, with
      configurable settings for check intervals,

      notification preferences, and content filtering options.
  - name: Watch History
    description: |
      Get a list of timestamps of all changes detected for a watch.
  - name: Snapshots
    description: >
      Retrieve individual text snapshot of monitored content according to the
      `timestamp`. The text snapshot is the HTML

      to Text at page check time.


      Set the query argument `html` to any value to retrieve the last HTML
      fetched, the system only keeps the last two

      (2) HTML files fetched.


      Use the Watch History API endpoint to get a list of timestamps to pass to
      this query.
  - name: Favicon
    description: >
      Retrieve favicon images associated with monitored web pages. These are
      used in the dashboard interface

      to visually identify different watches in your monitoring list.
  - name: Tag Management
    description: >
      Organize your watches using tags and groups. Tags (also known as Groups)
      allow you to categorize monitors, set group-wide

      notification preferences, and perform bulk operations like mass rechecking
      or status changes across

      multiple related watches.
  - name: Notifications
    description: >
      Configure global notification endpoints that can be used across all your
      watches. Supports various

      notification services including email, Discord, Slack, webhooks, and many
      other popular platforms.

      These settings serve as defaults that can be overridden at the individual
      watch or tag level.


      The notification syntax uses
      [https://github.com/caronc/apprise](https://github.com/caronc/apprise).
  - name: User Settings
    description: >
      Manage user-specific settings such as default recheck intervals. These
      settings are stored per API key

      and apply to all watches created by that user unless overridden at the
      watch level.
  - name: Search
    description: >
      Search and filter your watches by URL patterns, titles, or tags. Useful
      for quickly finding specific

      monitors in large collections or identifying watches that match certain
      criteria.
  - name: Import
    description: >
      Bulk import multiple URLs for monitoring. Accepts plain text lists of URLs
      and can automatically

      apply tags, proxy settings, and other configurations to all imported
      watches simultaneously.
  - name: System Information
    description: >
      Retrieve system status and statistics about your Site Spy instance,
      including total watch

      counts, uptime information, and version details.
  - name: Email Verification
    description: >
      Manage email notification settings for your API key. Each API key can have
      one email address

      associated with it for receiving notifications. The email must be verified
      before notifications

      can be sent to it.
  - name: Telegram Notifications
    description: >
      Connect your Telegram account to receive instant change notifications.

      Generate a connect link, open it in Telegram, tap Start — done. Free for
      all plans.
  - name: Web Push Notifications
    description: >
      Subscribe to browser push notifications for instant alerts when watched
      pages change.

      Uses the Web Push protocol (RFC 8030) with VAPID authentication. Free for
      all plans.
  - name: RSS Feeds
    description: >
      Manage per-user RSS feed access tokens and retrieve feed URLs. Each user
      can generate a

      personal RSS token that provides access to their watches via standard RSS
      readers. Feeds

      are scoped to the user's watches only, ensuring multi-tenant privacy.
  - name: API Key Management
    description: >
      Generate and manage API keys. API keys are used to authenticate all
      requests to the API.

      Each API key is associated with a unique user and their watches.
  - name: Feature Flags
    description: >
      Retrieve feature flags for the current API key. Feature flags control
      which features are

      enabled or disabled for specific users.
  - name: Authentication
    description: >
      User account registration and authentication. Users can create accounts
      with email/password

      and receive an API key that links to their account. This enables syncing
      watches across

      the browser extension and web dashboard.
  - name: Plan
    description: >
      Retrieve the current subscription plan and usage for the authenticated API
      key. Plans control

      the maximum number of watches a user can create (Free: 2, Starter: 25,
      Pro: 100).
  - name: Billing
    description: >
      Manage subscriptions via Lemon Squeezy. Create checkout sessions to
      upgrade, access the

      customer billing portal, and receive webhook events from Lemon Squeezy.
  - name: Feedback
    description: >
      Collect product research responses from authenticated users. One-time PMF
      (Sean Ellis)

      survey submission per user.
  - name: Screenshots
    description: >
      Retrieve the history of visual snapshots captured for a watch. Use the
      returned timestamps

      with the Visual Diff endpoints to compare any two captures.
  - name: Visual Diff
    description: >
      Retrieve individual screenshots and pixel-level visual comparisons between
      any two captured

      snapshots of a watch, including difference metadata such as changed
      regions.
paths:
  /plan:
    get:
      tags:
        - Plan
      summary: Get current plan and usage
      description: >-
        Returns the subscription plan, limits, and watch usage for the
        authenticated API key.
      operationId: getPlan
      responses:
        '200':
          description: Plan and usage information
          content:
            application/json:
              schema:
                type: object
                properties:
                  plan:
                    type: string
                    enum:
                      - free
                      - starter
                      - pro
                      - business
                      - pro_trial
                    example: free
                  limits:
                    type: object
                    properties:
                      max_watches:
                        type: integer
                        example: 5
                      history_retention_days:
                        type: integer
                        description: >-
                          Number of days snapshots are retained before automatic
                          cleanup
                        example: 30
                      max_snapshots_per_watch:
                        type: integer
                        description: >-
                          Maximum number of snapshots kept per watch before
                          oldest are pruned
                        example: 5
                      min_check_interval_seconds:
                        type: integer
                        description: >-
                          Minimum allowed recheck interval in seconds for this
                          plan
                        example: 21600
                      default_check_interval_seconds:
                        type: integer
                        description: >-
                          Default recheck interval in seconds for watches that
                          use plan or user defaults
                        example: 3600
                      max_fast_watches:
                        type: integer
                        description: >-
                          Maximum active watches allowed below the plan default
                          interval
                        example: 0
                      max_check_interval_seconds:
                        type: integer
                        description: >-
                          Maximum allowed recheck interval in seconds for this
                          plan
                        example: 604800
                      label:
                        type: string
                        example: Free
                      price_monthly:
                        type: integer
                        example: 0
                  usage:
                    type: object
                    properties:
                      watches:
                        type: integer
                        example: 3
                      fast_watches:
                        type: integer
                        description: >-
                          Number of active watches configured below the plan
                          default interval
                        example: 0
                  billing:
                    type: object
                    properties:
                      subscription_status:
                        type: string
                        nullable: true
                        example: active
                      ls_subscription_id:
                        type: string
                        nullable: true
                      ls_customer_portal_url:
                        type: string
                        nullable: true
                      current_period_end:
                        type: string
                        nullable: true
                  trial:
                    type: object
                    nullable: true
                    properties:
                      trial_ends_at:
                        type: number
                        nullable: true
                        description: Unix timestamp when trial expires
                      trial_active:
                        type: boolean
                        description: Whether the trial is currently active
                      days_remaining:
                        type: integer
                        description: Days remaining in the trial (0 if expired)
                  email_verified:
                    type: boolean
                    description: Whether the account email has been verified
                  created_at:
                    type: integer
                    nullable: true
                    description: >-
                      Unix timestamp of account creation (null for guest API
                      keys)
                  pmf_submitted:
                    type: boolean
                    description: Whether the user has already submitted the PMF survey
                  has_detected_change:
                    type: boolean
                    description: >-
                      Whether at least one of the user's watches has fired a
                      change notification
        '403':
          description: Unauthorized
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        API key for authentication. You can find your API key in the Site Spy
        dashboard under Settings → API.

````