---
title: "Get token state"
method: GET
path: "/evm/rh/token-state"
tags: ["Robinhood Chain"]
---

# Get token state

`GET /evm/rh/token-state`

Get live on-chain state for a Bags V2 token on Robinhood Chain (via the V2 lens), with no subgraph dependency. Returns `404` for non-V2 tokens.

## Query parameters

- `tokenAddress` string, required

## Response `200`

Successfully retrieved token state

- object
  - `success` boolean, required
  - `response` object
    - `exists` boolean, required — Whether the address is a Bags V2 token.
    - `migrated` boolean, required — Whether the token has graduated from the bonding curve to its Uniswap V4 pool.
    - `curve` string, required — Address of the token's bonding curve contract.
    - `feeShare` string, required — Address of the token's fee-share contract.
    - `poolId` string, required — Uniswap V4 pool ID (bytes32 hex string).
    - `thresholdQuoteWei` string, required — ETH (wei) needed to graduate, as string to support bigint.
    - `realQuoteReservesWei` string, required — Real ETH reserves currently held by the curve (wei), as string to support bigint.
    - `realTokenReservesWei` string, required — Tokens left on the curve (base units), as string to support bigint.
    - `virtualTokenReservesWei` string, required — Virtual token reserve used by the curve math (base units), as string to support bigint.
    - `virtualQuoteReservesWei` string, required — Virtual ETH reserve used by the curve math (wei), as string to support bigint.
    - `priceEthPerToken` string, nullable, required — Live spot price as an 1e18 fixed-point decimal string (ETH per whole token). Null for migrated tokens when the pool read is unavailable — render as "unavailable", never 0.
    - `bondingProgressPct` number, required — Bonding-curve graduation progress, 0-99 while bonding and 100 once migrated.
    - `totalRaisedWei` string, required — Cumulative ETH raised into the curve over its lifetime (wei), measured against `thresholdQuoteWei`, as string to support bigint.

## Other responses

- `400` — Bad request - Invalid token address
- `401` — Unauthorized - Invalid or missing API key
- `404` — Not found - The address is not a Bags V2 token
- `500` — Internal server error

---

[API](https://skmtc.net/bags/apis/bags-public-api-v2.md) · [All operations](https://skmtc.net/bags/apis/bags-public-api-v2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bags/bags-public-api-v2/revisions/4a14b82cd39d/schema)
