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

# Recent rugs (all venues)

> Most-recent liquidity-rug / drain events across **all venues**, newest first, over a **7-day rolling window**. Reads the `rug_detected` rows the rug classifier persists. `drained_pct` is a **0..1 fraction** (not a percentage) and `lp_sol_pulled` is **already in SOL** (lamports ÷ 1e9). The live-only `reason`/`graduated` fields are **not** on this REST shape — use the [`rugs` WebSocket room](/streaming/websocket#the-global-rugs-room) for those. **Requires an API key** (header `X-API-Key`, or `?api_key=` / `Authorization: Bearer`).



## OpenAPI

````yaml /api-reference/openapi.json get /rugs
openapi: 3.1.0
info:
  title: Dexploit API
  version: 1.0.0
  description: Real-time and historical Solana DEX swap and OHLCV data.
servers:
  - url: https://api.dexploit.dev
    description: Production
security:
  - ApiKeyHeader: []
  - BearerAuth: []
  - ApiKeyQuery: []
paths:
  /rugs:
    get:
      tags:
        - Rugs
      summary: Recent rugs (all venues)
      description: >-
        Most-recent liquidity-rug / drain events across **all venues**, newest
        first, over a **7-day rolling window**. Reads the `rug_detected` rows
        the rug classifier persists. `drained_pct` is a **0..1 fraction** (not a
        percentage) and `lp_sol_pulled` is **already in SOL** (lamports ÷ 1e9).
        The live-only `reason`/`graduated` fields are **not** on this REST shape
        — use the [`rugs` WebSocket
        room](/streaming/websocket#the-global-rugs-room) for those. **Requires
        an API key** (header `X-API-Key`, or `?api_key=` / `Authorization:
        Bearer`).
      operationId: getRecentRugs
      parameters:
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 100
            minimum: 1
            maximum: 2000
          description: Page size (clamped 1..2000).
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            default: 0
          description: Page offset.
        - name: min_drained_pct
          in: query
          required: false
          schema:
            type: number
            format: float
            default: 0
            minimum: 0
            maximum: 1
          description: >-
            Only return rugs with `drained_pct >= ` this **0..1** fraction
            (default `0` = all). Clamped 0..1.
      responses:
        '200':
          description: Recent rug list
          content:
            application/json:
              schema:
                type: object
                properties:
                  rugs:
                    type: array
                    items:
                      type: object
                      properties:
                        token_mint:
                          type: string
                        pool_address:
                          type: string
                          description: On-chain pool / LP account that was drained.
                        dex:
                          type: string
                          description: >-
                            Venue name (e.g. `pumpswap`, `raydium_amm`,
                            `raydium_clmm`, `orca`, `meteora_damm_v2`,
                            `meteora_dlmm`).
                        classification:
                          type: string
                          enum:
                            - RUGGED
                            - LIQUIDITY_DRAINING
                          description: >-
                            `RUGGED` = a graduated/AMM pool drained past the rug
                            threshold (>95%); `LIQUIDITY_DRAINING` = a large
                            (50–95%) drain that isn't a full rug.
                        drained_pct:
                          type: number
                          format: float
                          description: >-
                            Fraction of pool liquidity removed, **0..1** (NOT a
                            0–100 percentage). e.g. `0.97` = 97%.
                        lp_sol_pulled:
                          type: number
                          description: >-
                            SOL liquidity removed, **already in SOL** (the
                            handler divides the raw `lamports` by `1e9` for you
                            — do **not** divide again).
                        signature:
                          type: string
                          description: Base58 signature of the triggering withdraw/burn.
                        slot:
                          type: integer
                          format: int64
                          description: Solana slot.
                        ts_ms:
                          type: integer
                          format: int64
                          description: Event time, epoch **milliseconds**.
                  count:
                    type: integer
                    description: >-
                      Full match total (`count() OVER ()`), independent of
                      `limit`/`offset`.
                  computed_at:
                    type: integer
                    description: Epoch milliseconds.
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
components:
  schemas:
    ErrorEnvelope:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          enum:
            - false
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              example: INVALID_PARAM
            message:
              type: string
              example: >-
                use pair_address; see /api/v1/pairs?token_address=X to discover
                pools
  securitySchemes:
    ApiKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        Preferred for swaps-api endpoints (`/swaps/*`, `/stats/*`, `/trending`,
        `/pool-events`).
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Required by the OHLCV endpoints (`/api/v1/*`) and accepted by every
        other endpoint. Send `Authorization: Bearer ohlcv_live_sk_<your_key>`.
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api_key
      description: >-
        Browser-friendly alternative to the Bearer header — accepted by every
        endpoint and required for WebSocket from the browser.

````