OpenSea Token Endpoints API

Token endpoints for getting token details, balances, and trending data

OpenAPI Specification

opensea-token-endpoints-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: OpenSea Account Endpoints Token Endpoints API
  description: The API for OpenSea
  contact:
    name: OpenSea
    url: https://www.opensea.io
    email: contact@opensea.io
  version: 2.0.0
servers:
- url: https://api.opensea.io
  description: Production server
security:
- ApiKeyAuth: []
tags:
- name: Token Endpoints
  description: Token endpoints for getting token details, balances, and trending data
paths:
  /api/v2/tokens/batch:
    post:
      tags:
      - Token Endpoints
      summary: Get tokens by contract identifiers
      description: Retrieve multiple tokens in a single request by providing a list of contract identifiers (chain and address). Not-found tokens are silently omitted from the response.
      operationId: get_tokens_batch
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchTokensRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/TokenBatchResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/tokens/trending:
    get:
      tags:
      - Token Endpoints
      summary: Get trending tokens
      description: Get trending tokens based on OpenSea's trending score algorithm. Returns tokens with high momentum including memecoins and newly popular assets.
      operationId: get_trending_tokens
      parameters:
      - name: limit
        in: query
        description: 'Number of results to return (default: 20, max: 100)'
        required: false
        schema:
          type: integer
          format: int32
          default: 20
        example: 20
      - name: chains
        in: query
        description: Filter by blockchain(s)
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ChainIdentifier'
        example: ethereum
      - name: cursor
        in: query
        description: Pagination cursor for next page
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/TokenPaginatedResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/tokens/top:
    get:
      tags:
      - Token Endpoints
      summary: Get top tokens
      description: Get top tokens ranked by 24-hour trading volume. Returns established tokens with high market activity.
      operationId: get_top_tokens
      parameters:
      - name: limit
        in: query
        description: 'Number of results to return (default: 20, max: 100)'
        required: false
        schema:
          type: integer
          format: int32
          default: 20
        example: 20
      - name: chains
        in: query
        description: Filter by blockchain(s)
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ChainIdentifier'
        example: ethereum
      - name: cursor
        in: query
        description: Pagination cursor for next page
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/TokenPaginatedResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/token-groups:
    get:
      tags:
      - Token Endpoints
      summary: Get token groups
      description: Get a paginated list of token groups sorted by market cap descending. Token groups represent equivalent currencies across different blockchains (e.g., ETH on Ethereum, Base, and Arbitrum are all in the "eth" token group).
      operationId: get_token_groups
      parameters:
      - name: limit
        in: query
        description: 'Number of results to return (default: 50, max: 100)'
        required: false
        schema:
          type: integer
          format: int32
          default: 50
        example: 50
      - name: cursor
        in: query
        description: Pagination cursor for next page
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/TokenGroupPaginatedResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/token-groups/{slug}:
    get:
      tags:
      - Token Endpoints
      summary: Get a token group by slug
      description: Get detailed information about a specific token group by its slug identifier.
      operationId: get_token_group
      parameters:
      - name: slug
        in: path
        description: The slug identifier of the token group
        required: true
        schema:
          type: string
        example: eth
      responses:
        '200':
          description: Successful response
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/TokenGroupResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/chain/{chain}/token/{address}:
    get:
      tags:
      - Token Endpoints
      summary: Get token details
      description: Get detailed information about a specific token by chain and contract address.
      operationId: get_token
      parameters:
      - name: chain
        in: path
        description: The blockchain on which the token exists
        required: true
        schema:
          type: string
        example: ethereum
      - name: address
        in: path
        description: The contract address of the token
        required: true
        schema:
          type: string
        example: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/TokenDetailedResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/chain/{chain}/token/{address}/price_history:
    get:
      tags:
      - Token Endpoints
      summary: Get token price history
      description: Get historical price data for a specific token.
      operationId: get_token_price_history
      parameters:
      - name: chain
        in: path
        description: The blockchain on which the token exists
        required: true
        schema:
          type: string
        example: ethereum
      - name: address
        in: path
        description: The contract address of the token
        required: true
        schema:
          type: string
        example: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
      - name: start_time
        in: query
        description: Start time for the price history window (ISO 8601)
        required: true
        schema:
          type: string
          format: date-time
        example: '2024-01-01T00:00:00Z'
      - name: end_time
        in: query
        description: End time for the price history window (ISO 8601, defaults to now)
        required: false
        schema:
          type: string
          format: date-time
        example: '2024-01-02T00:00:00Z'
      - name: bucket_size
        in: query
        description: Candle bucket size for aggregation (1s, 1m, 5m, 15m, 1h, 4h, 1d)
        required: false
        schema:
          type: string
        example: 1h
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PriceHistoryResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/chain/{chain}/token/{address}/ohlcv:
    get:
      tags:
      - Token Endpoints
      summary: Get token OHLCV candles
      description: Get OHLCV (Open, High, Low, Close, Volume) candlestick data for a specific token.
      operationId: get_token_ohlcv
      parameters:
      - name: chain
        in: path
        description: The blockchain on which the token exists
        required: true
        schema:
          type: string
        example: ethereum
      - name: address
        in: path
        description: The contract address of the token
        required: true
        schema:
          type: string
        example: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
      - name: start_time
        in: query
        description: Start time for the OHLCV window (ISO 8601)
        required: true
        schema:
          type: string
          format: date-time
        example: '2024-01-01T00:00:00Z'
      - name: end_time
        in: query
        description: End time for the OHLCV window (ISO 8601, defaults to now)
        required: false
        schema:
          type: string
          format: date-time
        example: '2024-01-02T00:00:00Z'
      - name: bucket_size
        in: query
        description: Candle bucket size (1s, 1m, 5m, 15m, 1h, 4h, 1d)
        required: true
        schema:
          type: string
        example: 1h
      - name: fill_time_window
        in: query
        description: Whether to fill empty time windows with zero-volume candles
        required: false
        schema:
          type: boolean
          default: false
        example: false
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OhlcvResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/chain/{chain}/token/{address}/liquidity-pools:
    get:
      tags:
      - Token Endpoints
      summary: Get token liquidity pools
      description: Get liquidity pools for a specific token.
      operationId: get_token_liquidity_pools
      parameters:
      - name: chain
        in: path
        description: The blockchain on which the token exists
        required: true
        schema:
          type: string
        example: ethereum
      - name: address
        in: path
        description: The contract address of the token
        required: true
        schema:
          type: string
        example: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
      - name: limit
        in: query
        description: 'Number of results to return (default: 20, max: 50)'
        required: false
        schema:
          type: integer
          format: int32
          default: 20
        example: 20
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/TokenLiquidityPoolsResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/chain/{chain}/token/{address}/holders:
    get:
      tags:
      - Token Endpoints
      summary: Get token holders
      description: Get paginated list of holders for a specific token, including quantity held and USD value.
      operationId: get_token_holders
      parameters:
      - name: chain
        in: path
        description: The blockchain on which the token exists
        required: true
        schema:
          type: string
        example: ethereum
      - name: address
        in: path
        description: The contract address of the token
        required: true
        schema:
          type: string
        example: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
      - name: limit
        in: query
        description: 'Number of results to return (default: 20, max: 100)'
        required: false
        schema:
          type: integer
          format: int32
          default: 20
        example: 20
      - name: cursor
        in: query
        description: Pagination cursor for next page
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/TokenHoldersResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/chain/{chain}/token/{address}/activity:
    get:
      tags:
      - Token Endpoints
      summary: Get token swap activity
      description: Get paginated swap activity for a specific token on a given chain.
      operationId: get_token_activity
      parameters:
      - name: chain
        in: path
        description: The blockchain on which the token exists
        required: true
        schema:
          type: string
        example: ethereum
      - name: address
        in: path
        description: The contract address of the token
        required: true
        schema:
          type: string
        example: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
      - name: limit
        in: query
        description: 'Number of results to return (default: 20, max: 50)'
        required: false
        schema:
          type: integer
          format: int32
          default: 20
        example: 20
      - name: cursor
        in: query
        description: Pagination cursor for next page
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/TokenSwapActivityPaginatedResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v2/account/{address}/tokens:
    get:
      tags:
      - Token Endpoints
      summary: Get token balances by account
      description: Get fungible token balances for a specific wallet address. Returns quantity (in display units, not raw/wei), USD value, and token metadata for each token held.
      operationId: get_token_balances_by_account
      parameters:
      - name: address
        in: path
        description: Wallet address
        required: true
        schema:
          type: string
        example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
      - name: limit
        in: query
        description: 'Number of results to return (default: 20, max: 100)'
        required: false
        schema:
          type: integer
          format: int32
          default: 20
        example: 20
      - name: chains
        in: query
        description: Filter by blockchain(s)
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ChainIdentifier'
        example: ethereum
      - name: sort_by
        in: query
        description: 'Sort field (default: usd_value)'
        required: false
        schema:
          type: string
          enum:
          - USD_VALUE
          - MARKET_CAP
          - ONE_DAY_VOLUME
          - PRICE
          - ONE_DAY_PRICE_CHANGE
          - SEVEN_DAY_PRICE_CHANGE
        example: usd_value
      - name: sort_direction
        in: query
        description: 'Sort direction (default: desc)'
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
        example: desc
      - name: disable_spam_filtering
        in: query
        description: When true, disables OpenSea's heuristic spam filtering and returns tokens that would normally be hidden (low liquidity, dust, flagged-as-spam, etc.). Tokens flagged for trust & safety enforcement or as malicious are still filtered out regardless. Surfaced tokens carry a `status` field on the response indicating why they would have been filtered.
        required: false
        schema:
          type: boolean
          default: false
        example: false
      - name: cursor
        in: query
        description: Pagination cursor for next page
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/TokenBalancePaginatedResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    BatchTokensRequest:
      type: object
      description: Request body for batch token retrieval by contract identifiers
      properties:
        contracts:
          type: array
          description: List of token contract identifiers to retrieve
          items:
            $ref: '#/components/schemas/TokenContractInput'
      required:
      - contracts
    TokenSwapActivityPaginatedResponse:
      type: object
      description: Paginated list of token swap activity events
      properties:
        swap_events:
          type: array
          description: List of swap activity events
          items:
            $ref: '#/components/schemas/TokenSwapActivityResponse'
        next:
          type: string
          description: Cursor for the next page of results
      required:
      - swap_events
    TokenBalancePaginatedResponse:
      type: object
      description: Paginated list of token balances
      properties:
        token_balances:
          type: array
          description: List of token balances
          items:
            $ref: '#/components/schemas/TokenBalanceResponse'
        next:
          type: string
          description: Cursor for the next page of results
      required:
      - token_balances
    TokenLiquidityPoolResponse:
      type: object
      description: A liquidity pool for a token
      properties:
        pool_type:
          type: string
          description: Pool protocol type (e.g. UNISWAP_V2, UNISWAP_V3)
        pool_identifier:
          type: string
          description: Unique identifier for the pool
        pool_address:
          type: string
          description: On-chain address of the pool contract
        base_token:
          type: string
          description: Base token contract identifier (chain/address)
        quote_token:
          type: string
          description: Quote token contract identifier (chain/address)
        base_reserve_usd:
          type: number
          description: USD value of base token reserves
        quote_reserve_usd:
          type: number
          description: USD value of quote token reserves
        total_reserve_usd:
          type: number
          description: Total USD value of reserves in the pool
        bonding_curve_progress:
          type: number
          format: float
          description: Bonding curve progress percentage (0-100)
        is_graduated:
          type: boolean
          description: Whether the token has graduated from its bonding curve
      required:
      - base_token
      - pool_identifier
      - pool_type
      - quote_token
    TokenHoldersResponse:
      type: object
      description: Paginated list of token holders
      properties:
        holders:
          type: array
          description: List of token holders
          items:
            $ref: '#/components/schemas/TokenHolderResponse'
        total_count:
          type: integer
          format: int32
          description: Total number of holders
        distribution:
          $ref: '#/components/schemas/TokenHolderDistributionResponse'
          description: Holder distribution health metrics
        next:
          type: string
          description: Cursor for the next page of results
      required:
      - holders
    TokenSocialsResponse:
      type: object
      description: Social media links for a token
      properties:
        website:
          type: string
          description: The token's website URL
        twitter_handle:
          type: string
          description: The token's Twitter/X handle
        telegram_identifier:
          type: string
          description: The token's Telegram identifier
        twitter_follower_count:
          type: integer
          format: int64
          description: Twitter/X follower count
    TokenAmountResponse:
      type: object
      description: Token amount with contract and value information
      properties:
        address:
          type: string
          description: Contract address of the token
        chain:
          type: string
          description: Blockchain the token is on
        amount_token:
          type: number
          format: double
          description: Amount in token units
        amount_usd:
          type: string
          description: Amount in USD
        amount_native:
          type: number
          format: double
          description: Amount in chain-native units
      required:
      - address
      - amount_native
      - amount_token
      - amount_usd
      - chain
    TokenGroupCurrencyResponse:
      type: object
      description: A currency within a token group
      properties:
        address:
          type: string
          description: The contract address of the currency
          example: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
        chain:
          type: string
          description: The blockchain the currency is on
          example: ethereum
        name:
          type: string
          description: The display name of the currency
          example: Wrapped Ether
        symbol:
          type: string
          description: The ticker symbol of the currency
          example: WETH
        image_url:
          type: string
          description: URL of the currency's image
        decimals:
          type: integer
          format: int32
          description: Number of decimal places
          example: 18
        usd_price:
          type: string
          description: Current price in USD
          example: 2345.67
      required:
      - address
      - chain
      - decimals
      - name
      - symbol
      - usd_price
    PriceHistoryResponse:
      type: object
      description: List of price history data points
      properties:
        prices:
          type: array
          description: List of price history points
          items:
            $ref: '#/components/schemas/PriceHistoryPointResponse'
      required:
      - prices
    TokenLiquidityPoolsResponse:
      type: object
      description: Paginated list of liquidity pools for a token
      properties:
        pools:
          type: array
          description: List of liquidity pools
          items:
            $ref: '#/components/schemas/TokenLiquidityPoolResponse'
        next:
          type: string
          description: Cursor for the next page of results
      required:
      - pools
    TokenPaginatedResponse:
      type: object
      description: Paginated list of tokens
      properties:
        tokens:
          type: array
          description: List of tokens
          items:
            $ref: '#/components/schemas/TokenResponse'
        next:
          type: string
          description: Cursor for the next page of results
      required:
      - tokens
    TokenResponse:
      type: object
      description: A token with summary market data
      properties:
        address:
          type: string
          description: The contract address of the token
          example: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
        chain:
          type: string
          description: The blockchain the token is on
          example: ethereum
        name:
          type: string
          description: The display name of the token
          example: USD Coin
        symbol:
          type: string
          description: The ticker symbol of the token
          example: USDC
        image_url:
          type: string
          description: URL of the token's image
        usd_price:
          type: string
          description: Current price in USD
          example: 1
        decimals:
          type: integer
          format: int32
          description: Number of decimal places
          example: 6
        opensea_url:
          type: string
          description: URL to the token page on OpenSea
        market_cap_usd:
          type: number
          format: double
          description: Market capitalization in USD
        volume_24h:
          type: number
          format: double
          description: 24-hour trading volume in USD
        price_change_24h:
          type: number
          format: double
          description: Price change percentage over the last 24 hours
      required:
      - address
      - chain
      - decimals
      - name
      - opensea_url
      - symbol
      - usd_price
    TokenGroupSocialsResponse:
      type: object
      description: Social media links for a token group
      properties:
        website:
          type: string
          description: The token group's website URL
        twitter:
          type: string
          description: The token group's Twitter/X handle
        discord:
          type: string
          description: The token group's Discord invite URL
        telegram:
          type: string
          description: The token group's Telegram identifier
        coinmarketcap:
          type: string
          description: CoinMarketCap listing URL
        coingecko:
          type: string
          description: CoinGecko listing URL
    TokenContractInput:
      type: object
      description: A token contract identifier consisting of chain and address
      properties:
        chain:
          type: string
          description: The blockchain the token is on
          example: ethereum
        address:
          type: string
          description: The contract address of the token
          example: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
      required:
      - address
      - chain
    ChainIdentifier:
      type: string
      default: ethereum
      description: Blockchain chain identifier. Use the chain slug (e.g., 'ethereum', 'polygon', 'arbitrum', 'optimism', 'base')
      enum:
      - blast
      - base
      - ethereum
      - zora
      - arbitrum
      - sei
      - avalanche
      - polygon
      - optimism
      - ape_chain
      - flow
      - b3
      - soneium
      - ronin
      - bera_chain
      - solana
      - shape
      - unichain
      - gunzilla
      - abstract
      - animechain
      - hyperevm
      - somnia
      - monad
      - hyperliquid
      - megaeth
      - ink
      example: ethereum
    OhlcvCandleResponse:
      type: object
      description: An OHLCV candle data point
      properties:
        time:
          type: string
          format: date-time
          description: Candle timestamp
        open:
          type: number
          description: Opening price in USD
        high:
          type: number
          description: Highest price in USD
        low:
          type: number
          description: Lowest price in USD
        close:
          type: number
          description: Closing price in USD
        volume:
          type: number
          description: Trading volume in USD
      required:
      - close
      - high
      - low
      - open
      - time
      - volume
    TokenBalanceResponse:
      type: object
      description: Token balance for a wallet address
      properties:
        address:
          type: string
          description: The contract address of the token
          example: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
        chain:
          type: string
          description: The blockchain the token is on
          example: ethereum
        name:
          type: string
          description: The display name of the token
          example: USD Coin
        symbol:
          type: string
          description: The ticker symbol of the token
          example: USDC
        image_url:
          type: string
          description: URL of the token's image
        usd_price:
          type: string
          description: Current price in USD
          example: 1
        decimals:
          type: integer
          format: int32
          description: Number of decimal places
          example: 6
        opensea_url:
          type: string
          description: URL to the token page on OpenSea
        quantity:
          type: string
          description: Token balance in display units (divided by 10^decimals), not raw/wei
          example: 1.5
        usd_value:
          type: string
          description: Total USD value of the balance (quantity * usd_price)
          example: 3518.51835185
        status:
          type: string
          default: OK
          description: 'Token status relative to OpenSea''s spam-classification rules. `OK` for tokens that pass all spam filters (the normal case); populated with a more specific value for tokens surfaced via `disable_spam_filtering=true` that would normally be hidden. Categories are intentionally broad and may evolve. Possible values, in decreasing severity: `WARNING` (flagged as risky/suspicious — caution advised), `SPAM` (flagged as spam), `LOW_LIQUIDITY` (insufficient pool liquidity), `LOW_VALUE` (dust holding < $0.01), `OK` (passes all filters).'
          enum:
          - OK
          - WARNING
          - SPAM
          - LOW_LIQUIDITY
          - LOW_VALUE
        base_token_liquidity_usd:
          type: string
          description: USD value of base token reserves in the top liquidity pool paired with a curated quote token
          example: 125000.5
        quote_token_liquidity_usd:
          type: string
          description: USD value of quote token reserves in the top liquidity pool paired with a curated quote token
          example: 125000.5
      required:
      - address
      - chain
      - decimals
      - name
      - opensea_url
      - quantity
      - symbol
      - usd_price
      - usd_value
    PriceHistoryPointResponse:
      type: object
      description: A price history data point
      properties:
        time:
          type: string
          format: date-time
          description: Timestamp of the price point
        usd_price:
          type: string
          description: Price in USD
          example: 1
      required:
      - time
      - usd_price
    TokenSwapActivityResponse:
      type: object
      description: A token swap activity event
      properties:
        id:
          type: string
          description: Unique identifier for the swap event
        timestamp:
          type: string
          format: date-time
          description: Timestamp of the swap
        sender_address:
          type: string
          description: Address of the sender
        from_token:
          $ref: '#/components/schemas/TokenAmountResponse'
          description: Token sold in the swap
        to_token:
          $ref: '#/components/schemas/TokenAmountResponse'
          description: Token bought in the swap
        transaction_hash:
          type: string
          description: Transaction hash
        user_op_hash:
          type: string
          description: User operation hash (for account abstraction)
        swap_protocol:
          type: string
          description: Swap protocol used
        chain:
          type: string
          description: Blockchain the swap occurred on
      required:
      - chain
      - from_token
      - id
      - sender_address
      - timestamp
      - to_token
      - transaction_hash
    TokenStatsResponse:
      type: object
      description: Market statistics for a token
      properties:
        market_cap_usd:
          type: number
          format: double
          description: Market capitalization in USD
        fdv_usd:
          type: number
          format: double
          description: Fully diluted valuation in USD
        circulating

# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/opensea/refs/heads/main/openapi/opensea-token-endpoints-api-openapi.yml