---
title: "Alias of /rhc/lp-events?token= (PRO+)"
method: GET
path: "/rhc/tokens/{address}/lp-events"
tags: ["Robinhood Chain"]
---

# Alias of /rhc/lp-events?token= (PRO+)

`GET /rhc/tokens/{address}/lp-events`

## Request

- Base URL: `https://madeonsol.com/api/v1`
- URL: `https://madeonsol.com/api/v1/rhc/tokens/{address}/lp-events`
- Auth: HTTP bearer

Path alias: liquidity removals for one token. Delegates to /rhc/lp-events with token pinned to the path segment; pagination, enrichment and the removals-only honesty block are identical. Tier: **PRO+**.

## Path parameters

- `address` string, required

## Query parameters

- `limit` integer
- `before` string
- `dex` 'uniswap-v2' | 'uniswap-v3' | 'uniswap-v4'
- `action` 'remove' | 'add' | 'pool_created' | 'all'

## Response `200`

Identical to /rhc/lp-events?token={address}.

- object
  - `chain` 'robinhood'
  - `events` object[]
    - `event` 'remove' | 'add' | 'pool_created': The row's action. Always `remove` on a request without `action`.
    - `pool` string
    - `dex` 'uniswap-v2' | 'uniswap-v3' | 'uniswap-v4'
    - `fee_tier` integer, nullable
    - `token_address` string
    - `token_symbol` string, nullable
    - `token_name` string, nullable
    - `token_decimals` integer, nullable
    - `launchpad` string, nullable
    - `provider` string, nullable: Wallet that removed liquidity.
    - `provider_is_token_deployer` boolean: True when the provider is the token's own deployer — the classic rug shape.
    - `provider_deployer_tier` string, nullable
    - `provider_kol_name` string, nullable
    - `liquidity` string, nullable: Raw liquidity units removed (v3/v4). String — uint256.
    - `amount0` string, nullable: Raw token0 amount (v2/v3 only). String.
    - `amount1` string, nullable: Raw token1 amount (v2/v3 only). String.
    - `token0` string, nullable
    - `token1` string, nullable
    - `token_amount_raw` string, nullable: amount0 or amount1, whichever is the token side.
    - `quote_token` string, nullable
    - `quote_amount_raw` string, nullable
    - `block_number` integer
    - `block_time` string, date-time: Exact block header timestamp.
    - `tx_hash` string
    - `log_index` integer
    - `tick_lower` integer, nullable: Position range lower tick (v3/v4); null on v2 (full range) and on rows written before 2026-09-23.
    - `tick_upper` integer, nullable: Position range upper tick (v3/v4).
    - `liquidity_delta` string, nullable: Signed liquidity change (+ add, - remove), v3/v4. String — int256.
    - `in_range` boolean, nullable: tick_lower <= current tick < tick_upper just before the event; null when the pool's tick was unknown.
    - `active_liquidity_delta` string, nullable: Change to ACTIVE liquidity: liquidity_delta when in range, "0" out of range, null when unknown.
    - `active_share` number, nullable: |active delta| / active liquidity before (v3/v4). 0 for an out-of-range change; adds can exceed 1; null when unknown.
    - `share_of_reserves` number, nullable: v2 only: amount / reserve before, from the pair's Sync; null for a pair's first liquidity or when the Sync was not found.
    - `material` boolean, nullable: true = a REMOVAL of at least 25 % of reserves (v2) or active liquidity (v3/v4); false = a removal with a known smaller share; null for adds, pool creations and unknown shares.
  - `count` integer
  - `has_more` boolean
  - `next_before` string, nullable
  - `coverage` object: Honesty block: events (the actions this response covers — [remove] by default), adds_persisted (true since 2026-09-23), adds_retention_days (7), note, since.

## Other responses

- `400`: Invalid EVM token address.
- `401`: Missing or invalid API key, or an expired free-tier key. Authentication-stage error: no `X-RateLimit-*` headers, no `_rid`.
- `403`: Forbidden. One of: the key's tier is below this endpoint's or parameter's gate (`tier_required` with an `upgrade` block); the public demo key used outside its allow-list (`demo_key_endpoint_not_allowed`); an invalid or revoked key; an origin-restricted key called from a disallowed origin (`code` `origin_not_allowed` / `origin_required`). `X-RateLimit-*` headers are present only on `tier_required`.
- `429`: Too many requests. Every 429 carries `Retry-After`. A quota 429 (`rate_limit_exceeded`, with `X-RateLimit-*`), a heavy-query concurrency 429 (`error_kind` `concurrency`/`capacity`), or the per-IP authentication-failure block (30 failed auths/min; plain `error` + `retry_after_seconds`, no `X-RateLimit-*`).
- `500`: Unexpected server error from the route (`Internal server error`, with `_rid`). Safe to retry with backoff. A failed API-key lookup is a 503 `auth_backend_unavailable`, never a 500.
- `503`: Temporarily unavailable — a Postgres statement timeout while the dataset is under load or maintenance (`statement_timeout`, with `X-RateLimit-*` and `_rid`), or the API-key lookup itself unavailable (`auth_backend_unavailable`, authentication stage: no `X-RateLimit-*`, no `_rid`, not counted as a failed authentication). Always carries `Retry-After`; honour it.

---

[API](https://skmtc.dev/madeonsol/apis/madeonsol-api.md) · [All operations](https://skmtc.dev/madeonsol/apis/madeonsol-api/llms.txt) · [OpenAPI document](https://skmtc.dev/madeonsol/apis/madeonsol-api/revisions/96ce84657f55?raw)
