curl --request GET \
--url https://build.vibechain.com/api/vibemarket2/runtime/{version}/board \
--header 'API-KEY: <api-key>'import requests
url = "https://build.vibechain.com/api/vibemarket2/runtime/{version}/board"
headers = {"API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'API-KEY': '<api-key>'}};
fetch('https://build.vibechain.com/api/vibemarket2/runtime/{version}/board', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://build.vibechain.com/api/vibemarket2/runtime/{version}/board",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://build.vibechain.com/api/vibemarket2/runtime/{version}/board"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://build.vibechain.com/api/vibemarket2/runtime/{version}/board")
.header("API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://build.vibechain.com/api/vibemarket2/runtime/{version}/board")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"dropId": 123,
"slug": "<string>",
"name": "<string>",
"symbol": "<string>",
"creator": "<string>",
"token": "<string>",
"packPriceEth": "<string>",
"cards": "<string>",
"pool": "<string>",
"poolId": "<string>",
"packArt": "<string>",
"launchPriceEth": "<string>",
"changeSinceLaunchBps": 123,
"change24hBps": 123,
"mcapEth": "<string>",
"vol24hEth": "<string>",
"packsOpened": 123,
"cardsOutstanding": 123,
"cardsCollected": 123,
"createdAt": "2023-11-07T05:31:56Z",
"lastPullAt": "<string>",
"odds": [
{
"rarity": 123,
"label": "<string>",
"oddsBps": 123,
"multBps": 123,
"art": "<string>"
}
],
"virtual": {
"openingEnabled": true,
"freeCapitalEth": "<string>",
"bonusReserveEth": "<string>",
"realSellReserveEth": "<string>",
"virtualQuoteEth": "<string>",
"inventoryTokens": "<string>"
},
"createdTx": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Read display-oriented board data
Resource-dependent response, without a universal data envelope.
Required selectors:
- drop, trades, candles, holders, eventHolders, eventActivity, quoteBuy, packActivity: dropId
- quoteSell, pull, card: cardId (pull interprets this selector as a pull ID; card interprets it as a card ID)
- inventory: owner
Use resource=inventory&owner= for one graph’s wallet holdings; /user/holdings is not a route. IDs can diverge after batch openings. Quotes are indexed display estimates, not transaction execution guarantees. quoteBuy returns ETH decimal strings, not wei. Inventory’s next cursor covers three indexes; preserve it unchanged. leaderboard has a maximum limit of 50 (default 20); other resources default to 100, maximum 100.
curl --request GET \
--url https://build.vibechain.com/api/vibemarket2/runtime/{version}/board \
--header 'API-KEY: <api-key>'import requests
url = "https://build.vibechain.com/api/vibemarket2/runtime/{version}/board"
headers = {"API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'API-KEY': '<api-key>'}};
fetch('https://build.vibechain.com/api/vibemarket2/runtime/{version}/board', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://build.vibechain.com/api/vibemarket2/runtime/{version}/board",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://build.vibechain.com/api/vibemarket2/runtime/{version}/board"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://build.vibechain.com/api/vibemarket2/runtime/{version}/board")
.header("API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://build.vibechain.com/api/vibemarket2/runtime/{version}/board")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"dropId": 123,
"slug": "<string>",
"name": "<string>",
"symbol": "<string>",
"creator": "<string>",
"token": "<string>",
"packPriceEth": "<string>",
"cards": "<string>",
"pool": "<string>",
"poolId": "<string>",
"packArt": "<string>",
"launchPriceEth": "<string>",
"changeSinceLaunchBps": 123,
"change24hBps": 123,
"mcapEth": "<string>",
"vol24hEth": "<string>",
"packsOpened": 123,
"cardsOutstanding": 123,
"cardsCollected": 123,
"createdAt": "2023-11-07T05:31:56Z",
"lastPullAt": "<string>",
"odds": [
{
"rarity": 123,
"label": "<string>",
"oddsBps": 123,
"multBps": 123,
"art": "<string>"
}
],
"virtual": {
"openingEnabled": true,
"freeCapitalEth": "<string>",
"bonusReserveEth": "<string>",
"realSellReserveEth": "<string>",
"virtualQuoteEth": "<string>",
"inventoryTokens": "<string>"
},
"createdTx": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Registered Vibechain application key. Required in addition to wallet/session credentials. Obtain your own key via POST https://build.vibechain.com/apikey/create; see Authentication and consent. Missing/invalid keys: 401; exhausted quota: 429; lookup outage: 503.
Path Parameters
Runtime id from /runtime/versions or catalog/sources; never infer the newest revision from its name.
Query Parameters
Selects the response shape.
deployment, presets, drops, drop, pulls, pull, card, trades, candles, holders, eventHolders, eventActivity, stats, inventory, quoteBuy, quoteSell, leaderboard, presence, packActivity, table ^[1-9][0-9]{0,77}$^[1-9][0-9]{0,77}$^0x[0-9a-fA-F]{40}$Optional comma-separated pack IDs for resources that support a bounded pack set.
100^[1-9][0-9]{0,77}$Default 100, except leaderboard default 20 and maximum 50.
1 <= x <= 10016001 <= x <= 101m, 5m, 1h 24h, all Response
Successful response.
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
- Option 9
- Option 10
- Option 11
- Option 12
Resource-specific display response, not a universal data envelope. Examples: drops -> {drops,next}; trades -> {trades}; candles -> {candles}; holders -> {holders}; pulls/pull/card -> {pulls}; leaderboard -> {window,pulls}; table -> {asOf,rows}; quoteBuy -> BuyQuote. resource=inventory&owner={wallet} returns BoardInventory for one runtime graph. Its composite next cursor advances claims, NFTs and sealed positions together. See the board operation's resource rules.
^0x[0-9a-fA-F]{40}$^0x[0-9a-fA-F]{40}$^0x[0-9a-fA-F]{40}$^0x[0-9a-fA-F]{40}$Show child attributes
Show child attributes
Show child attributes
Show child attributes