OpenSea Token Endpoints API

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

Operations 12

POST /api/v2/tokens/batch Get tokens by contract identifiers #
GET /api/v2/tokens/top Get top tokens #
GET /api/v2/token-groups Get token groups #
GET /api/v2/token-groups/{slug} Get a token group by slug #
GET /api/v2/chain/{chain}/token/{address} Get token details #
GET /api/v2/chain/{chain}/token/{address}/price_history Get token price history #
GET /api/v2/chain/{chain}/token/{address}/ohlcv Get token OHLCV candles #
GET /api/v2/chain/{chain}/token/{address}/liquidity-pools Get token liquidity pools #
GET /api/v2/chain/{chain}/token/{address}/holders Get token holders #
GET /api/v2/chain/{chain}/token/{address}/activity Get token swap activity #
GET /api/v2/account/{address}/tokens Get token balances by account #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/opensea-token-endpoints-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

opensea-token-endpoints-api-openapi.yml Raw ↑
openapi: 3.2.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:
    TokenDetailedResponse:
      type: object
      description: Detailed token information including stats and social links
      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
        description:
          type: string
          description: A description of the token
        stats:
          $ref: '#/components/schemas/TokenStatsResponse'
          description: Market statistics for the token
        socials:
          $ref: '#/components/schemas/TokenSocialsResponse'
          description: Social media links for the token
        status:
          type: string
          default: OK
          description: 'Token safety status based on OpenSea''s spam-classification rules. `OK` for tokens that pass all safety checks (the normal case). 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 liquidity pool reserves), `OK` (passes all checks).'
          enum:
          - OK
          - WARNING
          - SPAM
          - LOW_LIQUIDITY
      required:
      - address
      - chain
      - decimals
      - name
      - opensea_url
      - symbol
      - usd_price
    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
    TokenHolderDistributionResponse:
      type: object
      description: Holder distribution health metrics for a token
      properties:
        total_holders:
          type: integer
          format: int32
          description: Total number of holders with a non-zero balance
        top_one_percent_concentration:
          type: number
          format: float
          description: Percentage of total supply held by the top 1% of holders (0-100)
        health_score:
          type: integer
          format: int32
          description: Health score from 0-100 (higher = more distributed)
        health_label:
          type: string
          description: Human-readable label for the health score
          enum:
          - STRONG
          - HEALTHY
          - CONCERNING
          - BAD
      required:
      - health_label
      - health_score
      - top_one_percent_concentration
      - total_holders
    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
    TokenGroupStatsResponse:
      type: object
      description: Market statistics for a token group
      properties:
        market_cap_usd:
          type: string
          description: Total market capitalization in USD
        volume_usd_24h:
          type: string
          description: 24-hour trading volume in USD
        price_usd:
          type: string
          description: Current price in USD (from primary currency)
        price_change_percent_24h:
          type: number
          format: double
          description: Price change percentage over the last 24 hours
        total_supply:
          type: string
          description: Total supply across all currencies in the group
        holders:
          type: integer
          format: int32
          description: Number of holders
        rolling_stats:
          $ref: '#/components/schemas/TokenGroupRollingStatsResponse'
          description: Rolling statistics over multiple time periods
      required:
      - market_cap_usd
      - volume_usd_24h
    OhlcvResponse:
      type: object
      description: List of OHLCV candle data points
      properties:
        candles:
          type: array
          description: List of OHLCV candles
          items:
            $ref: '#/components/schemas/OhlcvCandleResponse'
      required:
      - candles
    TokenBatchResponse:
      type: object
      properties:
        tokens:
          type: array
          items:
            $ref: '#/components/schemas/TokenDetailedResponse'
      required:
      - tokens
    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
    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_supply:
          type: number
          format: double
          description: Circulating supply of the token
        max_supply:
          type: number
          format: double
          description: Maximum supply of the token
        total_supply:
          type: number
          format: double
          description: Total supply of the token
        volume_24h:
          type: number
          format: double
          description: 24-hour trading volume in USD
        price_change_1h:
          type: number
          format: double
          description: Price change percentage over the last hour
        price_change_24h:
          type: number
          format: double
          description: Price change percentage over the last 24 hours
        price_change_7d:
          type: number
          format: double
          description: Price change percentage over the last 7 days
        price_change_30d:
          type: number
          format: double
          description: Price change percentage over the last 30 days
    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
    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
    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
    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
    TokenGroupRollingStatsResponse:
      type: object
      description: Rolling statistics for a token group over multiple time periods
      properties:
        volume_1d:
          type: string
          description: 1-day trading volume in USD
        volume_7d:
          type: string
          description: 7-day trading volume in USD
        volume_30d:
          type: string
          description: 30-day trading volume in USD
        price_change_1d:
          type: number
          format: double
          description: 1-day price change percentage
        price_change_7d:
          type: number
          format: double
          description: 7-day price change percentage
        price_change_30d:
          type: number
          format: double
          description: 30-day price change percentage
    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
    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
    TokenGroupPaginatedResponse:
      type: object
      description: Paginated list of token groups
      properties:
        token_groups:
          type: array
          description: List of token groups
          items:
            $ref: '#/components/schemas/TokenGroupResponse'
        next:
          type: string
          description: Cursor for the next page of results
      required:
      - token_groups
    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:

# --- 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