Keep identities together
Agents should load the canonical skill.md, our single agent instruction file, at the start of each session. Use the references here for integration details. Use a registeredAPI-KEY on backend requests and website JSON gateways. The shared product key system applies here too; keys are quota identities, while action-specific signatures authorize creator writes. See authentication and limits.
For cross-origin browser integrations, use the backend host and its existing CORS policy. Website discovery can be called from a server or CLI; this release does not broaden the website gateway’s cross-origin response access.
A drop ID is unique only inside its deployment. Retain at least chainId, market, factory, schema, runtimeId and dropId; retain the launch transaction when resolving slugs or reconciling onchain activity.
Read the configured source list and backend registry at startup. Do not choose the lexicographically greatest runtime ID. For new launches, use launchTarget; for an existing pack, use the graph returned by the slug resolver or its catalog record.
Before enabling transactions, verify that the catalog and runtime graphs match. If they do not, refresh discovery and keep transaction controls disabled. Reusing a cached graph from a different deployment can make a valid drop ID refer to the wrong contract.
Schema representations differ by surface: the website source version can carry an encoded schema hash, while the backend graph uses a name such as vibemarket.shared-pot.v6. Resolve the supported schema mapping from the matching integration code; do not compare a hash to a name as if they were the same encoding. Chain, market and factory identities still must agree.
Download the matching contract ABI
For a known canonical slug, preferhttps://vibechain.com/abis/vibemarket/packs/<canonical-slug>.json; Degen Fight Club is one exact example. Its pack entry contains the same graph identity and per-role contract bindings as the full public pack ABI catalog, with less data to fetch and inspect. Use the contract ABI guide to match an existing pack to its interface and verify a file’s SHA-256 digest. These static downloads are public and do not require an API key; runtime discovery and indexed JSON reads still require one. Do not infer a missing ABI from a truncated full-index preview.
This catalog is a release snapshot, not a live address registry. Resolve the current pack and runtime again, compare its chain and exact contract addresses, and fail closed if they differ. Do not choose an ABI by ticker, pack name, the greatest runtime ID or a shared function name.
Raw indexes versus board views
Use raw runtime lists for exact chain quantities and resource pagination. Use theboard route for display-oriented packs, quotes, cards, inventory, leaderboards, presence and aggregates.
The pull board resource resolves a pull ID. The card resource resolves a card ID through the claim index. These IDs can diverge after batch openings; never assume they are interchangeable.
Board quotes are indexed estimates, not signed orders. Validate fresh onchain conditions and user-selected limits before sending a transaction.
Pack fees are version-specific. The trading-fee guide distinguishes older SPORTS child trades from R7 Existing, explains the separate parent-pool fee, and shows how to read an R7 graph’s current onchain policy. Do not infer a fee from the shared token ticker or apply a dated snapshot instead of a fresh executable quote.
Resilience
- Cache public reads according to response headers and keep API keys partitioned where responses can vary by key.
- Use bounded batches and pagination. Do not loop over every token ID or poll entire catalogs per visitor.
- Subscribe to the runtime event stream, then refresh affected HTTP reads. Rebuild cached state after
reset. - Preserve already loaded packs on a partial catalog failure and offer retry. Do not silently present the failure as “no packs”.
- Check
health.readyand projection head freshness. HTTP 200 alone is not a readiness signal. - Back off on
429/503, honoringRetry-Afterwhen provided.
Shared services and images
Public shared-service calls use API-key-gated aliases under/api/vibemarket2/support: identity/profiles, identity/profiles/{address}, identity/profiles/x/{username}, image/upload, and pricing/eth-to-usd. These reuse the platform implementations while preserving their validation and any independent limits. Other products’ platform routes are unchanged.
Use returned public artwork/metadata URLs and follow redirects. Preserve the website’s image-proxy and sizing behavior; do not bypass it by rewriting every image to a direct storage-provider URL.
Do not cache keyed HTTP responses across API keys. The application retains its internal projection/data caches behind key admission; its narrow public presentation-image and NFT metadata gateways retain their own cache policies.
Scope of this reference
The public API uses/api/vibemarket2 throughout its URLs. Internal shared helper names are not public route contracts. First-party account, chat, direct-message, social-follow, invite/access and moderation workflows are intentionally not included. Neither are disabled editor routes, provider webhooks, keeper administration or operator tools.
For the published HTTP surface, use the complete operation reference.