{"openapi":"3.1.0","info":{"title":"Gabox public API","version":"1","description":"A read-only API over the Gabox machine index: machines, their packs, draws and program-wide activity. A machine is a Pool (the machine that launched its coin) or a TokenMachine (a machine opened on a coin that already exists); `account` tells them apart. Every u64 amount is a decimal string. See GET /v1/program for the program's own facts. No key is needed: each IP address may send 30 requests a minute. An API key (`Authorization: Bearer gbx_...`) gives its own higher limit; ask at hello@gabox.fun. A key that is not valid answers 401."},"servers":[{"url":"https://actions.gabox.fun"}],"security":[{},{"apiKey":[]}],"paths":{"/v1/machines":{"get":{"summary":"List live machines, newest first: launch machines and machines opened on existing coins.","parameters":[{"name":"limit","in":"query","required":false,"description":"Page size, 1 to 50. Defaults to 20.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"cursor","in":"query","required":false,"description":"An opaque page cursor from a previous answer's `page.nextCursor`.","schema":{"type":"string","maxLength":1024}},{"name":"mint","in":"query","required":false,"description":"Only the machines on this coin: its launch machine, and every machine opened on it.","schema":{"type":"string"}}],"responses":{"200":{"description":"A page of machines.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/PoolMachine"},{"$ref":"#/components/schemas/TokenMachine"}],"discriminator":{"propertyName":"account","mapping":{"Pool":"#/components/schemas/PoolMachine","TokenMachine":"#/components/schemas/TokenMachine"}}}},"meta":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["1"]},"cluster":{"type":"string","enum":["devnet","mainnet-beta"]},"generatedAt":{"type":"string","format":"date-time"}}},"page":{"type":"object","properties":{"nextCursor":{"type":"string","nullable":true}}}},"required":["data","meta"]}}}},"400":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"401":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"404":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"429":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"500":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}}}}},"/v1/machines/{machine}":{"get":{"summary":"One machine by its address, or a coin's launch machine by the coin's mint.","parameters":[{"name":"machine","in":"path","required":true,"description":"A machine's own address, base58. A coin's mint also works: it names the coin's launch machine.","schema":{"type":"string"}}],"responses":{"200":{"description":"One machine.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"$ref":"#/components/schemas/PoolMachine"},{"$ref":"#/components/schemas/TokenMachine"}],"discriminator":{"propertyName":"account","mapping":{"Pool":"#/components/schemas/PoolMachine","TokenMachine":"#/components/schemas/TokenMachine"}}},"meta":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["1"]},"cluster":{"type":"string","enum":["devnet","mainnet-beta"]},"generatedAt":{"type":"string","format":"date-time"}}}},"required":["data","meta"]}}}},"400":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"401":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"404":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"429":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"500":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}}}}},"/v1/machines/{machine}/pulls":{"get":{"summary":"One machine's recent packs, newest first.","parameters":[{"name":"machine","in":"path","required":true,"description":"A machine's own address, base58. A coin's mint also works: it names the coin's launch machine.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size, 1 to 50. Defaults to 20.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"cursor","in":"query","required":false,"description":"An opaque page cursor from a previous answer's `page.nextCursor`.","schema":{"type":"string","maxLength":1024}}],"responses":{"200":{"description":"A page of packs.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"machine":{"type":"string"},"seq":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"draw":{"type":"string"},"purchaser":{"type":"string"},"at":{"type":"integer","description":"Unix milliseconds."},"slot":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"tokens":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"paid":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"tier":{"type":"integer","nullable":true},"payout":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string.","nullable":true},"timedOut":{"type":"boolean"}}}},"meta":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["1"]},"cluster":{"type":"string","enum":["devnet","mainnet-beta"]},"generatedAt":{"type":"string","format":"date-time"}}},"page":{"type":"object","properties":{"nextCursor":{"type":"string","nullable":true}}}},"required":["data","meta"]}}}},"400":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"401":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"404":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"429":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"500":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}}}}},"/v1/machines/{machine}/mega":{"get":{"summary":"A launch machine's newest Mega Pack rounds, newest first. A TokenMachine answers 404.","parameters":[{"name":"machine","in":"path","required":true,"description":"A machine's own address, base58. A coin's mint also works: it names the coin's launch machine.","schema":{"type":"string"}}],"responses":{"200":{"description":"The machine's Mega Pack rounds.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"mint":{"type":"string"},"pool":{"type":"string"},"graduated":{"type":"boolean"},"rounds":{"type":"array","items":{"type":"object","properties":{"round":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"quoteMint":{"type":"string"},"amount":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"startedAt":{"type":"number","description":"Unix time in milliseconds."},"paid":{"anyOf":[{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},{"type":"null"}]},"recipients":{"type":["number","null"]},"completedAt":{"type":["number","null"]}},"required":["round","quoteMint","amount","startedAt","paid","recipients","completedAt"]},"maxItems":8}},"required":["mint","pool","graduated","rounds"]},"meta":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["1"]},"cluster":{"type":"string","enum":["devnet","mainnet-beta"]},"generatedAt":{"type":"string","format":"date-time"}}}},"required":["data","meta"]}}}},"400":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"401":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"404":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"429":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"500":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}}}}},"/v1/machines/{machine}/brief.md":{"get":{"summary":"One machine's AI brief, as Markdown.","parameters":[{"name":"machine","in":"path","required":true,"description":"A machine's own address, base58. A coin's mint also works: it names the coin's launch machine.","schema":{"type":"string"}}],"responses":{"200":{"description":"The brief.","content":{"text/markdown":{"schema":{"type":"string"}}}},"401":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"404":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"429":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"500":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}}}}},"/v1/pulls/top":{"get":{"summary":"The best recent packs across every listed machine.","parameters":[],"responses":{"200":{"description":"The top pulls list.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"draw":{"type":"string"},"machine":{"type":"string","description":"The machine the pack was opened on."},"mint":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"imageUrl":{"type":"string"},"purchaser":{"type":"string"},"handle":{"type":"string","nullable":true},"multiplierBps":{"type":"integer"},"packUsdc":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string.","nullable":true}}}},"meta":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["1"]},"cluster":{"type":"string","enum":["devnet","mainnet-beta"]},"generatedAt":{"type":"string","format":"date-time"}}}},"required":["data","meta"]}}}},"400":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"401":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"404":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"429":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"500":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}}}}},"/v1/draws/{address}":{"get":{"summary":"One draw, open or settled, by its account address.","parameters":[{"name":"address","in":"path","required":true,"description":"A draw account's address, base58.","schema":{"type":"string"}}],"responses":{"200":{"description":"One draw.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"packTier":{"type":"integer","nullable":true},"prizeTier":{"type":"integer","nullable":true},"address":{"type":"string"},"machine":{"type":"string"},"purchaser":{"type":"string"},"seqStart":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"count":{"type":"integer"},"status":{"type":"string","enum":["pending","delivered"]},"requestSlot":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"lastAttemptSlot":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"attempts":{"type":"integer"},"tiers":{"type":"array","items":{"type":"object","properties":{"multiplierBps":{"type":"integer"},"tickets":{"type":"integer"}},"required":["multiplierBps","tickets"]}},"packTokens":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"freeSnapshot":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"reserved":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"settled":{"type":"boolean"},"paid":{"type":"boolean"},"owed":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"results":{"type":"array","items":{"type":"object","properties":{"tier":{"type":"integer"},"amount":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."}}}},"amount":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"randomness":{"type":"string","nullable":true},"timedOut":{"type":"boolean"},"resolvedTier":{"type":"integer","nullable":true},"delivered":{"type":"boolean"}}},"meta":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["1"]},"cluster":{"type":"string","enum":["devnet","mainnet-beta"]},"generatedAt":{"type":"string","format":"date-time"}}}},"required":["data","meta"]}}}},"400":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"401":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"404":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"429":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"500":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}}}}},"/v1/stats":{"get":{"summary":"Program-wide activity: machines, packs, volume.","parameters":[],"responses":{"200":{"description":"The activity summary.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"machines":{"type":"integer"},"machines24h":{"type":"integer"},"packsOpened":{"type":"integer"},"packs24h":{"type":"integer"},"quoteTotals":{"type":"array","items":{"type":"object","properties":{"quoteMint":{"type":"string"},"volumeQuote":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"volume24hQuote":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"vaultValueQuote":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"machinesWithVolume":{"type":"integer"},"machinesPriced":{"type":"integer"}}}},"onCurve":{"type":"integer"},"graduated":{"type":"integer"},"lastPullAt":{"type":"integer","nullable":true},"refreshedAt":{"type":"integer"},"top":{"type":"array","items":{"type":"object","properties":{"mint":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"imageUrl":{"type":"string"},"tokenDecimals":{"type":"integer"},"pullsTotal":{"type":"integer"},"quoteMint":{"type":"string"},"volumeQuote":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"topTierRank":{"type":"string","nullable":true,"enum":["common","rare","epic","mythic",null]}}}},"indexedSlot":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."}}},"meta":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["1"]},"cluster":{"type":"string","enum":["devnet","mainnet-beta"]},"generatedAt":{"type":"string","format":"date-time"}}}},"required":["data","meta"]}}}},"400":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"401":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"404":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"429":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"500":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}}}}},"/v1/program":{"get":{"summary":"The program's fixed facts: its address, pack fee, pack catalog, cluster.","parameters":[],"responses":{"200":{"description":"Program facts.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"programId":{"type":"string"},"cluster":{"type":"string","enum":["devnet","mainnet-beta"]},"packFeeBps":{"type":"integer"},"fixedPacks":{"type":"array","items":{"type":"object","properties":{"packTier":{"type":"integer"},"nominalUsdc":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"label":{"type":"string"}}}},"randomnessProvider":{"type":"string"},"idlUrl":{"type":"string"},"openapiUrl":{"type":"string"}}},"meta":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["1"]},"cluster":{"type":"string","enum":["devnet","mainnet-beta"]},"generatedAt":{"type":"string","format":"date-time"}}}},"required":["data","meta"]}}}},"400":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"401":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"404":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"429":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}},"500":{"description":"An error. `code` is one of bad_request, unauthorized, not_found, rate_limited, internal.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}}}}},"/v1/idl.json":{"get":{"summary":"The Gabox program's Anchor IDL, served as is.","responses":{"200":{"description":"The IDL.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/openapi.json":{"get":{"summary":"This document.","responses":{"200":{"description":"The OpenAPI 3.1 document.","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"gbx_..."}},"schemas":{"Machine":{"oneOf":[{"$ref":"#/components/schemas/PoolMachine"},{"$ref":"#/components/schemas/TokenMachine"}],"discriminator":{"propertyName":"account","mapping":{"Pool":"#/components/schemas/PoolMachine","TokenMachine":"#/components/schemas/TokenMachine"}}},"PoolMachine":{"type":"object","properties":{"account":{"type":"string","enum":["Pool"],"description":"The program account, as the IDL names it: the machine that launched its coin."},"address":{"type":"string","description":"The machine's own address."},"mint":{"type":"string"},"creator":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"imageUrl":{"type":"string"},"accent":{"type":"string","nullable":true},"quoteMint":{"type":"string","description":"What packs are priced in. Always USDC on a TokenMachine."},"seedTokens":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"tiers":{"type":"array","items":{"type":"object","properties":{"multiplierBps":{"type":"integer"},"tickets":{"type":"integer"}},"required":["multiplierBps","tickets"]}},"purchasesOn":{"type":"boolean"},"nextSeq":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"reserved":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"vaultAmount":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"tokenDecimals":{"type":"integer"},"tokenSupply":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string.","nullable":true},"lookupTable":{"type":"string","nullable":true},"createdAt":{"type":"integer","description":"Unix milliseconds."},"stats":{"type":"object","properties":{"pulls24h":{"type":"integer"},"pullsTotal":{"type":"integer"},"volumeQuote":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string.","nullable":true},"volume24hQuote":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string.","nullable":true},"lastPullAt":{"type":"integer","nullable":true},"hot":{"type":"boolean"}}},"seedLocked":{"type":"boolean","enum":[true],"description":"A launch seed buys the coin at launch and never comes back out."},"stage":{"type":"string","enum":["curve","migrating","damm"],"description":"The coin's stage."},"packTokens":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"seedQuoteAmount":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"seedNativeDebit":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"extraSeedTokens":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"venue":{"type":"string","enum":["dbc","damm"]},"curveTokensLeft":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string.","nullable":true},"graduationSqrtPrice":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string.","nullable":true},"curvePool":{"type":"string"},"referenceValuation":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"offer":{"type":"object","nullable":true,"properties":{"packTokens":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"count":{"type":"integer"},"quoteAmount":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"quoteMint":{"type":"string"},"solAmount":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string.","nullable":true},"venue":{"type":"string","enum":["dbc","damm"]},"prizes":{"type":"array","items":{"type":"object","properties":{"amount":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"tickets":{"type":"integer"}},"required":["amount","tickets"]}},"maximum":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"minimum":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"uncappedMaximum":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"freeSnapshot":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"reserved":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"perPackCaps":{"type":"array","items":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."}},"isFirstPack":{"type":"boolean"},"isSeeded":{"type":"boolean"},"packsLeftOnCurve":{"type":"integer","nullable":true},"minPacksLeftOnCurve":{"type":"integer","nullable":true}}},"topPack":{"type":"object","nullable":true,"properties":{"packTokens":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"maximum":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."}}},"recharge":{"type":"object","nullable":true,"description":"Machine recharge: part or all of the coin's creator trading fee buys the coin into the prize pool. null when it is off. Quote amounts are raw units of quoteMint; coin amounts are raw units of mint.","properties":{"machineBps":{"type":"integer","description":"The machine's part of the creator trading fee, in basis points (10,000 is 100%). It can go up later, never down."},"shareRecipient":{"type":"string","description":"The wallet that gets the rest of the fee."},"quoteCollected":{"type":"string","pattern":"^[0-9]+$","description":"Every creator fee collected so far."},"quoteToCreator":{"type":"string","pattern":"^[0-9]+$","description":"The part of quoteCollected that belongs to shareRecipient."},"creatorClaimed":{"type":"string","pattern":"^[0-9]+$","description":"The part of quoteToCreator that shareRecipient has claimed."},"creatorOwed":{"type":"string","pattern":"^[0-9]+$","description":"What shareRecipient can claim now."},"quoteSpent":{"type":"string","pattern":"^[0-9]+$","description":"Quote the machine spent on its coin."},"coinsAdded":{"type":"string","pattern":"^[0-9]+$","description":"Coins added to the prize pool."},"lastFeedSlot":{"type":"string","pattern":"^[0-9]+$","description":"The slot of the last feed. 0 before the first one."}},"required":["machineBps","shareRecipient","quoteCollected","quoteToCreator","creatorClaimed","creatorOwed","quoteSpent","coinsAdded","lastFeedSlot"]}},"required":["account","address","mint","seedLocked","stage","recharge"]},"TokenMachine":{"type":"object","properties":{"account":{"type":"string","enum":["TokenMachine"],"description":"The program account, as the IDL names it: a machine opened on a coin that already exists."},"address":{"type":"string","description":"The machine's own address."},"mint":{"type":"string"},"creator":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"imageUrl":{"type":"string"},"accent":{"type":"string","nullable":true},"quoteMint":{"type":"string","description":"What packs are priced in. Always USDC on a TokenMachine."},"seedTokens":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"tiers":{"type":"array","items":{"type":"object","properties":{"multiplierBps":{"type":"integer"},"tickets":{"type":"integer"}},"required":["multiplierBps","tickets"]}},"purchasesOn":{"type":"boolean"},"nextSeq":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"reserved":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"vaultAmount":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"tokenDecimals":{"type":"integer"},"tokenSupply":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string.","nullable":true},"lookupTable":{"type":"string","nullable":true},"createdAt":{"type":"integer","description":"Unix milliseconds."},"stats":{"type":"object","properties":{"pulls24h":{"type":"integer"},"pullsTotal":{"type":"integer"},"volumeQuote":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string.","nullable":true},"volume24hQuote":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string.","nullable":true},"lastPullAt":{"type":"integer","nullable":true},"hot":{"type":"boolean"}}},"seedLocked":{"type":["boolean","null"],"description":"true: nothing can withdraw the seed. false: the seed is the creator's deposit, which they can withdraw. null: not read yet."},"stage":{"type":"string","enum":["curve","migrating","damm"],"nullable":true,"description":"The coin's own stage when Gabox launched the coin, else null."},"id":{"type":"string","pattern":"^[0-9]+$","description":"The creator's own number for the machine, part of its address."},"vault":{"type":"string"},"coinTokenProgram":{"type":"string","description":"The coin's token program: classic SPL Token or Token-2022."},"verified":{"type":"boolean"},"packQuotes":{"type":"array","description":"What each pack price buys now. Empty until the first quote.","items":{"type":"object","properties":{"usdc":{"type":"string","pattern":"^[0-9]+$","description":"The pack's price in raw USDC, fee included."},"tokens":{"type":"string","pattern":"^[0-9]+$","description":"The coins the swap route quotes for it."}},"required":["usdc","tokens"]}},"packsQuotedAt":{"type":["integer","null"],"description":"Unix milliseconds."}},"required":["account","address","mint","seedLocked","stage"]},"Draw":{"type":"object","properties":{"packTier":{"type":"integer","nullable":true},"prizeTier":{"type":"integer","nullable":true},"address":{"type":"string"},"machine":{"type":"string"},"purchaser":{"type":"string"},"seqStart":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"count":{"type":"integer"},"status":{"type":"string","enum":["pending","delivered"]},"requestSlot":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"lastAttemptSlot":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"attempts":{"type":"integer"},"tiers":{"type":"array","items":{"type":"object","properties":{"multiplierBps":{"type":"integer"},"tickets":{"type":"integer"}},"required":["multiplierBps","tickets"]}},"packTokens":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"freeSnapshot":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"reserved":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"settled":{"type":"boolean"},"paid":{"type":"boolean"},"owed":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"results":{"type":"array","items":{"type":"object","properties":{"tier":{"type":"integer"},"amount":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."}}}},"amount":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"randomness":{"type":"string","nullable":true},"timedOut":{"type":"boolean"},"resolvedTier":{"type":"integer","nullable":true},"delivered":{"type":"boolean"}}},"Pull":{"type":"object","properties":{"machine":{"type":"string"},"seq":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"draw":{"type":"string"},"purchaser":{"type":"string"},"at":{"type":"integer","description":"Unix milliseconds."},"slot":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"tokens":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"paid":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"tier":{"type":"integer","nullable":true},"payout":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string.","nullable":true},"timedOut":{"type":"boolean"}}},"TopPull":{"type":"object","properties":{"draw":{"type":"string"},"machine":{"type":"string","description":"The machine the pack was opened on."},"mint":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"imageUrl":{"type":"string"},"purchaser":{"type":"string"},"handle":{"type":"string","nullable":true},"multiplierBps":{"type":"integer"},"packUsdc":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string.","nullable":true}}},"StatsSummary":{"type":"object","properties":{"machines":{"type":"integer"},"machines24h":{"type":"integer"},"packsOpened":{"type":"integer"},"packs24h":{"type":"integer"},"quoteTotals":{"type":"array","items":{"type":"object","properties":{"quoteMint":{"type":"string"},"volumeQuote":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"volume24hQuote":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"vaultValueQuote":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"machinesWithVolume":{"type":"integer"},"machinesPriced":{"type":"integer"}}}},"onCurve":{"type":"integer"},"graduated":{"type":"integer"},"lastPullAt":{"type":"integer","nullable":true},"refreshedAt":{"type":"integer"},"top":{"type":"array","items":{"type":"object","properties":{"mint":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"imageUrl":{"type":"string"},"tokenDecimals":{"type":"integer"},"pullsTotal":{"type":"integer"},"quoteMint":{"type":"string"},"volumeQuote":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"topTierRank":{"type":"string","nullable":true,"enum":["common","rare","epic","mythic",null]}}}},"indexedSlot":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."}}},"Program":{"type":"object","properties":{"programId":{"type":"string"},"cluster":{"type":"string","enum":["devnet","mainnet-beta"]},"packFeeBps":{"type":"integer"},"fixedPacks":{"type":"array","items":{"type":"object","properties":{"packTier":{"type":"integer"},"nominalUsdc":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"label":{"type":"string"}}}},"randomnessProvider":{"type":"string"},"idlUrl":{"type":"string"},"openapiUrl":{"type":"string"}}},"Mega":{"type":"object","properties":{"mint":{"type":"string"},"pool":{"type":"string"},"graduated":{"type":"boolean"},"rounds":{"type":"array","items":{"type":"object","properties":{"round":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"quoteMint":{"type":"string"},"amount":{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},"startedAt":{"type":"number","description":"Unix time in milliseconds."},"paid":{"anyOf":[{"type":"string","pattern":"^[0-9]+$","description":"A u64, as a decimal string."},{"type":"null"}]},"recipients":{"type":["number","null"]},"completedAt":{"type":["number","null"]}},"required":["round","quoteMint","amount","startedAt","paid","recipients","completedAt"]},"maxItems":8}},"required":["mint","pool","graduated","rounds"]},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","not_found","rate_limited","internal"]},"message":{"type":"string"}},"required":["code","message"]}}}}}}