Skip to main content
vibe.market is an experimental protocol. Indexed holdings can lag the chain and values are display estimates, not execution quotes. Review the Terms.
Building with an agent? Start with the canonical skill.md, our single agent instruction file. This page is the human and API reference for wallet inventory.

The current holdings endpoint

There is no aggregate GET /api/vibemarket2/user/holdings route. That path returns HTTP 404. Holdings are graph-scoped because the same numeric drop or card ID can exist in more than one deployment. Use the inventory board resource for one wallet on one runtime graph:
It returns the wallet’s cards, sealed pack-token positions, pending pulls, estimated ETH totals and an opaque next cursor. It does not require a wallet signature or account session because this is indexed public blockchain data; it does require a registered API key.

Register an API key

The registration endpoint is outside the /api/vibemarket2 namespace. Send JSON with both fields:
A successful response has HTTP 200 and includes success: true, code: "201" and key. Store that key and send it as API-KEY; do not create a new key per request or page load. See authentication and limits.

Discover the runtime ID

Do not hardcode the latest-looking runtime name. Read discovery first:
Use a version’s runtimeId. For an existing pack or asset, use the graph recorded by its catalog entry or slug result; launchTarget is only the destination for new launches. Older graphs remain relevant to historical holdings.

Read one graph’s inventory

An empty inventory has this shape:
  • cards contains revealed claims and collected NFTs owned by the wallet.
  • tokens contains sealed pack-token positions with lot counts and the current indexed pack price when available.
  • pendingPulls contains openings that have not resolved yet.
  • cardsValueEth and tokensValueEth are decimal ETH strings. tokensValueEth can be null when a position cannot be priced; do not treat that as zero.
  • next is one opaque cursor spanning the claim, NFT and sealed-token indexes. Pass it back unchanged as before; stop only when it is null.
To build a wallet-wide view across market generations, make bounded inventory requests for each runtime your integration supports and qualify every item with chainId, market, runtimeId and its item ID. Do not merge two graphs merely because their numeric IDs or symbols match.

Raw wallet indexes

Use the raw indexes when you need exact projected rows rather than the display-oriented inventory: These return {items, next, head}. Their cursors are independent; never reuse a cursor between resources, wallets or runtimes.

Other core market APIs

Every request above uses the https://build.vibechain.com/api/vibemarket2 base and requires API-KEY. See reading the market for pagination, freshness, errors and stream reconnection behavior, or the complete operation reference for schemas.