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

# Get token

`GET /evm/rh/token`

Get a single Bags V2 token on Robinhood Chain: indexed data plus live on-chain state.

**Returns `404` when the address is not a V2 token** — use this as the V1-vs-V2 routing signal. Freshly launched tokens can 404 for a few seconds while the subgraph indexes, so launch flows should route explicitly rather than relying on this endpoint immediately after launch.

## Query parameters

- `tokenAddress` string, required

## Response `200`

Successfully retrieved token

- object
  - `success` boolean, required
  - `response` object
    - `token` RhToken, required
      - `address` string, required — EIP-55 checksummed token address.
      - `name` string, required — Token name.
      - `symbol` string, required — Token symbol.
      - `metadataURI` string, required — Token metadata URI as stored on-chain (typically IPFS).
      - `metadata` RhTokenMetadata, required
        - `image` string, nullable, required — Resolved token image URL. Null when the metadata URI could not be resolved.
        - `description` string, nullable, required — Resolved token description. Null when the metadata URI could not be resolved.
      - `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) assigned at launch.
      - `creator` string, required — EIP-55 checksummed address of the token creator.
      - `partner` string, nullable, required — EIP-55 checksummed partner address. Null when the token was launched without a partner.
      - `partnerFeeBps` number, required — Partner's share of the creator-side fee half in basis points, snapshotted at launch.
      - `createdAtBlock` number, required — Block number of the launch transaction.
      - `createdAtTimestamp` number, required — Launch time as unix seconds.
      - `txHash` string, required — Transaction hash of the launch.
      - `migrated` boolean, required — Whether the token has graduated from the bonding curve to its Uniswap V4 pool.
      - `migratedAtBlock` number, nullable, required — Block number of the migration. Null while the token is still bonding.
      - `migratedAtTimestamp` number, nullable, required — Migration time as unix seconds. Null while the token is still bonding.
    - `state` RhTokenState, required
      - `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 (V1 or unknown)
- `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/versions/4a14b82cd39d/schema)
