Phantom-native TCG endpoints
List Phantom packs
Native Phantom endpoint returning { packs } for the TCG pack catalog.
Response Source
CollectorCryptClient.getMachines() -> Collector Crypt /api/machines
curl
curl -sS -i -X GET 'http://127.0.0.1:4030/tcg/packs'
Response Headers
HTTP/1.1 200 OK
Content-Security-Policy: default-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: validator.swagger.io;script-src 'self' https: 'unsafe-inline';report-uri https://rt.phantom.app/csp;base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Origin-Agent-Cluster: ?1
Referrer-Policy: no-referrer
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-DNS-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: none
X-XSS-Protection: 0
access-control-allow-origin: *
cache-control: public, max-age=60
content-type: application/json; charset=utf-8
content-length: 22575
Date: Fri, 12 Jun 2026 17:44:50 GMT
Connection: keep-alive
Keep-Alive: timeout=75
Response Body
{
"packs": [
{
"code": "pokemon_50",
"name": "Elite Pokémon Gacha Pack",
"price": 50,
"shortName": "PKMN 50",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/pokemon_50.png",
"videoSrc": "https://gacha.collectorcrypt.com/pokemon_50.webm",
"videoHevc": "https://gacha.collectorcrypt.com/pokemon_50.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 85,
"freeSpins": true,
"turboMode": true,
"pointsMultiplier": 1,
"odds": {
"common": 0.8,
"uncommon": 0.15,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 154,
"uncommon": 182,
"rare": 98,
"epic": 761
},
"tierRanges": {
"common": {
"start": 30,
"end": 60
},
"uncommon": {
"start": 60,
"end": 110
},
"rare": {
"start": 110,
"end": 250
},
"epic": {
"start": 250,
"end": 5001
}
},
"ev": 55.092700028524135
},
{
"code": "pokemon_2500",
"name": "Mythic Pokémon Gacha Pack",
"price": 2500,
"shortName": "PKMN 2500",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/pokemon_2500.png",
"videoSrc": "https://gacha.collectorcrypt.com/pokemon_2500.webm",
"videoHevc": "https://gacha.collectorcrypt.com/pokemon_2500.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 93,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 50,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 187,
"uncommon": 202,
"rare": 90,
"epic": 60
},
"tierRanges": {
"common": {
"start": 1250,
"end": 2500
},
"uncommon": {
"start": 2500,
"end": 5000
},
"rare": {
"start": 5000,
"end": 10000
},
"epic": {
"start": 10000,
"end": 150000
}
},
"ev": 2538.6083611508207
},
{
"code": "pokemon_250",
"name": "Legendary Pokémon Gacha Pack",
"price": 250,
"shortName": "PKMN 250",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/pokemon_250.png",
"videoSrc": "https://gacha.collectorcrypt.com/pokemon_250.webm",
"videoHevc": "https://gacha.collectorcrypt.com/pokemon_250.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 90,
"freeSpins": true,
"turboMode": true,
"pointsMultiplier": 5,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 330,
"uncommon": 610,
"rare": 660,
"epic": 175
},
"tierRanges": {
"common": {
"start": 150,
"end": 250
},
"uncommon": {
"start": 250,
"end": 400
},
"rare": {
"start": 400,
"end": 2000
},
"epic": {
"start": 2000,
"end": 50000
}
},
"ev": 261.34185785909074
},
{
"code": "onepiece_50",
"name": "One Piece Ocean Blue Pack",
"price": 50,
"shortName": "ONEPIECE 50",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/onepiece_50.png",
"videoSrc": "https://gacha.collectorcrypt.com/onepiece_50.webm",
"videoHevc": "https://gacha.collectorcrypt.com/onepiece_50.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 85,
"freeSpins": true,
"turboMode": true,
"pointsMultiplier": 1,
"odds": {
"common": 0.8,
"uncommon": 0.15,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 24,
"uncommon": 18,
"rare": 16,
"epic": 201
},
"tierRanges": {
"common": {
"start": 30,
"end": 60
},
"uncommon": {
"start": 60,
"end": 110
},
"rare": {
"start": 110,
"end": 250
},
"epic": {
"start": 250,
"end": 5001
}
},
"ev": 53.77914179104478
},
{
"code": "pokemon_1000",
"name": "Grail Pokémon Gacha Pack",
"price": 1000,
"shortName": "PKMN 1000",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/pokemon_1000.png",
"videoSrc": "https://gacha.collectorcrypt.com/pokemon_1000.webm",
"videoHevc": "https://gacha.collectorcrypt.com/pokemon_1000.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 93,
"freeSpins": true,
"turboMode": true,
"pointsMultiplier": 20,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 283,
"uncommon": 84,
"rare": 204,
"epic": 31
},
"tierRanges": {
"common": {
"start": 600,
"end": 1000
},
"uncommon": {
"start": 1000,
"end": 1600
},
"rare": {
"start": 1600,
"end": 8000
},
"epic": {
"start": 8000,
"end": 50000
}
},
"ev": 1013.40719882208
},
{
"code": "onepiece_250",
"name": "One Piece Gacha Pack",
"price": 250,
"shortName": "ONEPIECE 250",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/onepiece_250.png",
"videoSrc": "https://gacha.collectorcrypt.com/onepiece_250.webm",
"videoHevc": "https://gacha.collectorcrypt.com/onepiece_250.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 90,
"freeSpins": true,
"turboMode": true,
"pointsMultiplier": 5,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 48,
"uncommon": 4,
"rare": 355,
"epic": 185
},
"tierRanges": {
"common": {
"start": 150,
"end": 250
},
"uncommon": {
"start": 250,
"end": 400
},
"rare": {
"start": 400,
"end": 2000
},
"epic": {
"start": 2000,
"end": 50000
}
},
"ev": 257.1466309002665
},
{
"code": "pokemon_25",
"name": "Starter Pokémon Gacha Pack",
"price": 25,
"shortName": "PKMN 25",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/pokemon_25.png",
"videoSrc": "https://gacha.collectorcrypt.com/pokemon_25.webm",
"videoHevc": "https://gacha.collectorcrypt.com/pokemon_25.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 85,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 0.5,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 49,
"uncommon": 175,
"rare": 64,
"epic": 17
},
"tierRanges": {
"common": {
"start": 13,
"end": 30
},
"uncommon": {
"start": 30,
"end": 55
},
"rare": {
"start": 55,
"end": 125
},
"epic": {
"start": 125,
"end": 500
}
},
"ev": 27.73046968787515
},
{
"code": "comic_25",
"name": "Comic 25",
"price": 25,
"shortName": "COMIC 25",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/comic_25.png",
"videoSrc": "https://gacha.collectorcrypt.com/comic_25.webm",
"videoHevc": "https://gacha.collectorcrypt.com/comic_25.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 85,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 0.5,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 53,
"uncommon": 5,
"rare": 13,
"epic": 27
},
"tierRanges": {
"common": {
"start": 13,
"end": 30
},
"uncommon": {
"start": 30,
"end": 55
},
"rare": {
"start": 55,
"end": 125
},
"epic": {
"start": 125,
"end": 500
}
},
"ev": 27.823223136053326
},
{
"code": "sns_25",
"name": "Sns 25",
"price": 25,
"shortName": "SNS 25",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/sns_25.png",
"videoSrc": "https://gacha.collectorcrypt.com/sns_25.webm",
"videoHevc": "https://gacha.collectorcrypt.com/sns_25.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 85,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 0.5,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 0,
"uncommon": 0,
"rare": 0,
"epic": 0
},
"tierRanges": {
"common": {
"start": 13,
"end": 30
},
"uncommon": {
"start": 30,
"end": 55
},
"rare": {
"start": 55,
"end": 125
},
"epic": {
"start": 125,
"end": 500
}
},
"ev": 0
},
{
"code": "comic_50",
"name": "Comic 50",
"price": 50,
"shortName": "COMIC 50",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/comic_50.png",
"videoSrc": "https://gacha.collectorcrypt.com/comic_50.webm",
"videoHevc": "https://gacha.collectorcrypt.com/comic_50.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 85,
"freeSpins": true,
"turboMode": true,
"pointsMultiplier": 1,
"odds": {
"common": 0.8,
"uncommon": 0.15,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 16,
"uncommon": 75,
"rare": 20,
"epic": 85
},
"tierRanges": {
"common": {
"start": 30,
"end": 60
},
"uncommon": {
"start": 60,
"end": 110
},
"rare": {
"start": 110,
"end": 250
},
"epic": {
"start": 250,
"end": 5001
}
},
"ev": 57.67494117647059
},
{
"code": "football_50",
"name": "Football Gacha Pack",
"price": 50,
"shortName": "FOOTBALL 50",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/football_50.png",
"videoSrc": "https://gacha.collectorcrypt.com/football_50.webm",
"videoHevc": "https://gacha.collectorcrypt.com/football_50.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 85,
"freeSpins": true,
"turboMode": true,
"pointsMultiplier": 1,
"odds": {
"common": 0.8,
"uncommon": 0.15,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 0,
"uncommon": 0,
"rare": 0,
"epic": 0
},
"tierRanges": {
"common": {
"start": 30,
"end": 60
},
"uncommon": {
"start": 60,
"end": 110
},
"rare": {
"start": 110,
"end": 250
},
"epic": {
"start": 250,
"end": 5001
}
},
"ev": 0
},
{
"code": "basketball_50",
"name": "Basketball Gacha Pack",
"price": 50,
"shortName": "BASKETBALL 50",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/basketball_50.png",
"videoSrc": "https://gacha.collectorcrypt.com/basketball_50.webm",
"videoHevc": "https://gacha.collectorcrypt.com/basketball_50.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 85,
"freeSpins": true,
"turboMode": true,
"pointsMultiplier": 1,
"odds": {
"common": 0.8,
"uncommon": 0.15,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 0,
"uncommon": 0,
"rare": 0,
"epic": 0
},
"tierRanges": {
"common": {
"start": 30,
"end": 60
},
"uncommon": {
"start": 60,
"end": 110
},
"rare": {
"start": 110,
"end": 250
},
"epic": {
"start": 250,
"end": 5001
}
},
"ev": 0
},
{
"code": "baseball_50",
"name": "Baseball Gacha Pack",
"price": 50,
"shortName": "BASEBALL 50",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/baseball_50.png",
"videoSrc": "https://gacha.collectorcrypt.com/baseball_50.webm",
"videoHevc": "https://gacha.collectorcrypt.com/baseball_50.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 85,
"freeSpins": true,
"turboMode": true,
"pointsMultiplier": 1,
"odds": {
"common": 0.8,
"uncommon": 0.15,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 0,
"uncommon": 0,
"rare": 0,
"epic": 0
},
"tierRanges": {
"common": {
"start": 30,
"end": 60
},
"uncommon": {
"start": 60,
"end": 110
},
"rare": {
"start": 110,
"end": 250
},
"epic": {
"start": 250,
"end": 5001
}
},
"ev": 0
},
{
"code": "gachopia_50",
"name": "Elite Gachopia Pack",
"price": 50,
"shortName": "GACHOPIA 50",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/gachopia_50.png",
"videoSrc": "https://gacha.collectorcrypt.com/gachopia_50.webm",
"videoHevc": "https://gacha.collectorcrypt.com/gachopia_50.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 85,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 1,
"odds": {
"common": 0.8,
"uncommon": 0.15,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 0,
"uncommon": 5,
"rare": 19,
"epic": 15
},
"tierRanges": {
"common": {
"start": 30,
"end": 60
},
"uncommon": {
"start": 60,
"end": 110
},
"rare": {
"start": 110,
"end": 250
},
"epic": {
"start": 250,
"end": 5001
}
},
"ev": 23.739333333333335
},
{
"code": "pikachu_50",
"name": "Pikachu Gacha Pack",
"price": 50,
"shortName": "PIKACHU 50",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/pikachu_50.png",
"videoSrc": "https://gacha.collectorcrypt.com/pikachu_50.webm",
"videoHevc": "https://gacha.collectorcrypt.com/pikachu_50.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 85,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 1,
"odds": {
"common": 0.8,
"uncommon": 0.15,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 3,
"uncommon": 63,
"rare": 24,
"epic": 18
},
"tierRanges": {
"common": {
"start": 30,
"end": 60
},
"uncommon": {
"start": 60,
"end": 110
},
"rare": {
"start": 110,
"end": 250
},
"epic": {
"start": 250,
"end": 5001
}
},
"ev": 74.25896825396825
},
{
"code": "charizard_50",
"name": "Charizard Gacha Pack",
"price": 50,
"shortName": "CHARIZARD 50",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/charizard_50.png",
"videoSrc": "https://gacha.collectorcrypt.com/charizard_50.webm",
"videoHevc": "https://gacha.collectorcrypt.com/charizard_50.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 85,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 1,
"odds": {
"common": 0.8,
"uncommon": 0.15,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 0,
"uncommon": 53,
"rare": 11,
"epic": 22
},
"tierRanges": {
"common": {
"start": 30,
"end": 60
},
"uncommon": {
"start": 60,
"end": 110
},
"rare": {
"start": 110,
"end": 250
},
"epic": {
"start": 250,
"end": 5001
}
},
"ev": 24.06403087478559
},
{
"code": "gengar_50",
"name": "Gengar Gacha Pack",
"price": 50,
"shortName": "GENGAR 50",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/gengar_50.png",
"videoSrc": "https://gacha.collectorcrypt.com/gengar_50.webm",
"videoHevc": "https://gacha.collectorcrypt.com/gengar_50.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 85,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 1,
"odds": {
"common": 0.8,
"uncommon": 0.15,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 0,
"uncommon": 34,
"rare": 5,
"epic": 4
},
"tierRanges": {
"common": {
"start": 30,
"end": 60
},
"uncommon": {
"start": 60,
"end": 110
},
"rare": {
"start": 110,
"end": 250
},
"epic": {
"start": 250,
"end": 5001
}
},
"ev": 31.427058823529407
},
{
"code": "anime_75",
"name": "Anime Pop Culture Gacha",
"price": 75,
"shortName": "ANIME 75",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/anime_75.png",
"videoSrc": "https://gacha.collectorcrypt.com/anime_75.webm",
"videoHevc": "https://gacha.collectorcrypt.com/anime_75.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 85,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 1.5,
"odds": {
"common": 0.8,
"uncommon": 0.15,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 140,
"uncommon": 133,
"rare": 405,
"epic": 208
},
"tierRanges": {
"common": {
"start": 40,
"end": 80
},
"uncommon": {
"start": 80,
"end": 150
},
"rare": {
"start": 150,
"end": 375
},
"epic": {
"start": 375,
"end": 5001
}
},
"ev": 84.4691698682247
},
{
"code": "sealed_80",
"name": "Sealed Gacha Pack",
"price": 80,
"shortName": "SEALED 80",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/sealed_80.png",
"videoSrc": "https://gacha.collectorcrypt.com/sealed_80.webm",
"videoHevc": "https://gacha.collectorcrypt.com/sealed_80.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 90,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 1.6,
"odds": {
"common": 0.8,
"uncommon": 0.15,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 48,
"uncommon": 96,
"rare": 16,
"epic": 61
},
"tierRanges": {
"common": {
"start": 40,
"end": 80
},
"uncommon": {
"start": 80,
"end": 160
},
"rare": {
"start": 160,
"end": 400
},
"epic": {
"start": 400,
"end": 5001
}
},
"ev": 82.81642076502733
},
{
"code": "basketball_100",
"name": "Basketball 100 Gacha Pack",
"price": 100,
"shortName": "BASKSETBALL 100",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/basketball_100.png",
"videoSrc": "https://gacha.collectorcrypt.com/basketball_100.webm",
"videoHevc": "https://gacha.collectorcrypt.com/basketball_100.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 90,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 2,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 32,
"uncommon": 58,
"rare": 93,
"epic": 111
},
"tierRanges": {
"common": {
"start": 50,
"end": 100
},
"uncommon": {
"start": 100,
"end": 200
},
"rare": {
"start": 200,
"end": 500
},
"epic": {
"start": 500,
"end": 5001
}
},
"ev": 114.61578147077833
},
{
"code": "firegrass_100",
"name": "Fire & Grass Pack",
"price": 100,
"shortName": "FIREGRASS 100",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/firegrass_100.png",
"videoSrc": "https://gacha.collectorcrypt.com/firegrass_100.webm",
"videoHevc": "https://gacha.collectorcrypt.com/firegrass_100.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 90,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 2,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 8,
"uncommon": 29,
"rare": 18,
"epic": 18
},
"tierRanges": {
"common": {
"start": 50,
"end": 100
},
"uncommon": {
"start": 100,
"end": 200
},
"rare": {
"start": 200,
"end": 500
},
"epic": {
"start": 500,
"end": 15001
}
},
"ev": 107.98053639846742
},
{
"code": "dragonite_100",
"name": "Dragonite + Friends",
"price": 100,
"shortName": "DRAGON 100",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/dragonite_100.png",
"videoSrc": "https://gacha.collectorcrypt.com/dragonite_100.webm",
"videoHevc": "https://gacha.collectorcrypt.com/dragonite_100.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 90,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 2,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 18,
"uncommon": 15,
"rare": 2,
"epic": 2
},
"tierRanges": {
"common": {
"start": 50,
"end": 100
},
"uncommon": {
"start": 100,
"end": 200
},
"rare": {
"start": 200,
"end": 500
},
"epic": {
"start": 500,
"end": 5001
}
},
"ev": 105.71499999999999
},
{
"code": "baseball_100",
"name": "Baseball 100 Gacha Pack",
"price": 100,
"shortName": "BASEBALL 100",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/baseball_100.png",
"videoSrc": "https://gacha.collectorcrypt.com/baseball_100.webm",
"videoHevc": "https://gacha.collectorcrypt.com/baseball_100.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 90,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 2,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 44,
"uncommon": 91,
"rare": 96,
"epic": 99
},
"tierRanges": {
"common": {
"start": 50,
"end": 100
},
"uncommon": {
"start": 100,
"end": 200
},
"rare": {
"start": 200,
"end": 500
},
"epic": {
"start": 500,
"end": 5001
}
},
"ev": 116.70866910866911
},
{
"code": "sports_100",
"name": "Sports Gacha Pack",
"price": 100,
"shortName": "SPORTS 100",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/sports_100.png",
"videoSrc": "https://gacha.collectorcrypt.com/sports_100.webm",
"videoHevc": "https://gacha.collectorcrypt.com/sports_100.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 90,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 2,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 117,
"uncommon": 201,
"rare": 246,
"epic": 326
},
"tierRanges": {
"common": {
"start": 50,
"end": 100
},
"uncommon": {
"start": 100,
"end": 200
},
"rare": {
"start": 200,
"end": 500
},
"epic": {
"start": 500,
"end": 10001
}
},
"ev": 105.94969003181012
},
{
"code": "football_100",
"name": "Football 100 Gacha Pack",
"price": 100,
"shortName": "FOOTBALL 100",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/football_100.png",
"videoSrc": "https://gacha.collectorcrypt.com/football_100.webm",
"videoHevc": "https://gacha.collectorcrypt.com/football_100.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 90,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 2,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 50,
"uncommon": 111,
"rare": 132,
"epic": 198
},
"tierRanges": {
"common": {
"start": 50,
"end": 100
},
"uncommon": {
"start": 100,
"end": 200
},
"rare": {
"start": 200,
"end": 500
},
"epic": {
"start": 500,
"end": 5001
}
},
"ev": 109.7207562107562
},
{
"code": "water_100",
"name": "Water Pack",
"price": 100,
"shortName": "WATER 100",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/water_100.png",
"videoSrc": "https://gacha.collectorcrypt.com/water_100.webm",
"videoHevc": "https://gacha.collectorcrypt.com/water_100.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 90,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 2,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 86,
"uncommon": 44,
"rare": 33,
"epic": 62
},
"tierRanges": {
"common": {
"start": 50,
"end": 100
},
"uncommon": {
"start": 100,
"end": 200
},
"rare": {
"start": 200,
"end": 500
},
"epic": {
"start": 500,
"end": 10001
}
},
"ev": 107.08197663052128
},
{
"code": "comic_250",
"name": "Comic 250",
"price": 250,
"shortName": "COMIC 250",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/comic_250.png",
"videoSrc": "https://gacha.collectorcrypt.com/comic_250.webm",
"videoHevc": "https://gacha.collectorcrypt.com/comic_250.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 90,
"freeSpins": true,
"turboMode": true,
"pointsMultiplier": 5,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 102,
"uncommon": 457,
"rare": 644,
"epic": 19
},
"tierRanges": {
"common": {
"start": 150,
"end": 250
},
"uncommon": {
"start": 250,
"end": 400
},
"rare": {
"start": 400,
"end": 2000
},
"epic": {
"start": 2000,
"end": 50000
}
},
"ev": 259.73712415892857
},
{
"code": "mew_250",
"name": "Mew + Friends",
"price": 250,
"shortName": "MEW 250",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/mew_250.png",
"videoSrc": "https://gacha.collectorcrypt.com/mew_250.webm",
"videoHevc": "https://gacha.collectorcrypt.com/mew_250.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 90,
"freeSpins": false,
"turboMode": true,
"pointsMultiplier": 5,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 0,
"uncommon": 1,
"rare": 7,
"epic": 2
},
"tierRanges": {
"common": {
"start": 150,
"end": 250
},
"uncommon": {
"start": 250,
"end": 400
},
"rare": {
"start": 400,
"end": 2000
},
"epic": {
"start": 2000,
"end": 50000
}
},
"ev": 131.585
},
{
"code": "basketball_250",
"name": "Basketball 250 Pack",
"price": 250,
"shortName": "BASKETBALL 250",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/basketball_250.png",
"videoSrc": "https://gacha.collectorcrypt.com/basketball_250.webm",
"videoHevc": "https://gacha.collectorcrypt.com/basketball_250.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 90,
"freeSpins": true,
"turboMode": true,
"pointsMultiplier": 5,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 35,
"uncommon": 41,
"rare": 58,
"epic": 35
},
"tierRanges": {
"common": {
"start": 150,
"end": 250
},
"uncommon": {
"start": 250,
"end": 400
},
"rare": {
"start": 400,
"end": 2000
},
"epic": {
"start": 2000,
"end": 50000
}
},
"ev": 258.01432944851615
},
{
"code": "football_250",
"name": "Football 250 Pack",
"price": 250,
"shortName": "FOOTBALL 250",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/football_250.png",
"videoSrc": "https://gacha.collectorcrypt.com/football_250.webm",
"videoHevc": "https://gacha.collectorcrypt.com/football_250.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 90,
"freeSpins": true,
"turboMode": true,
"pointsMultiplier": 5,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 77,
"uncommon": 26,
"rare": 122,
"epic": 45
},
"tierRanges": {
"common": {
"start": 150,
"end": 250
},
"uncommon": {
"start": 250,
"end": 400
},
"rare": {
"start": 400,
"end": 2000
},
"epic": {
"start": 2000,
"end": 50000
}
},
"ev": 261.3964431451972
},
{
"code": "baseball_250",
"name": "Baseball 250 Gacha Pack",
"price": 250,
"shortName": "BASEBALL 250",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/baseball_250.png",
"videoSrc": "https://gacha.collectorcrypt.com/baseball_250.webm",
"videoHevc": "https://gacha.collectorcrypt.com/baseball_250.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 90,
"freeSpins": true,
"turboMode": true,
"pointsMultiplier": 5,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 49,
"uncommon": 15,
"rare": 54,
"epic": 28
},
"tierRanges": {
"common": {
"start": 150,
"end": 250
},
"uncommon": {
"start": 250,
"end": 400
},
"rare": {
"start": 400,
"end": 2000
},
"epic": {
"start": 2000,
"end": 50000
}
},
"ev": 258.094724111867
},
{
"code": "sf_2500",
"name": "Mythic Pokémon Gacha Pack",
"price": 2500,
"shortName": "PKMN 2500",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/sf_2500.png",
"videoSrc": "https://gacha.collectorcrypt.com/sf_2500.webm",
"videoHevc": "https://gacha.collectorcrypt.com/sf_2500.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 93,
"freeSpins": true,
"turboMode": true,
"pointsMultiplier": 0,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 228,
"uncommon": 202,
"rare": 90,
"epic": 61
},
"tierRanges": {
"common": {
"start": 1250,
"end": 2500
},
"uncommon": {
"start": 2500,
"end": 5000
},
"rare": {
"start": 5000,
"end": 10000
},
"epic": {
"start": 10000,
"end": 150000
}
},
"ev": 2542.0878892614455
},
{
"code": "pokemon_5000",
"name": "Celestial Pokémon Gacha Pack",
"price": 5000,
"shortName": "PKMN 5000",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/pokemon_5000.png",
"videoSrc": "https://gacha.collectorcrypt.com/pokemon_5000.webm",
"videoHevc": "https://gacha.collectorcrypt.com/pokemon_5000.hevc.mp4",
"contains": 1,
"public": false,
"instantBuyback": 93,
"freeSpins": true,
"turboMode": true,
"pointsMultiplier": 20,
"odds": {
"common": 0.75,
"uncommon": 0.2,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 0,
"uncommon": 0,
"rare": 0,
"epic": 0
},
"tierRanges": {
"common": {
"start": 2500,
"end": 5000
},
"uncommon": {
"start": 5000,
"end": 10000
},
"rare": {
"start": 10000,
"end": 20000
},
"epic": {
"start": 20000,
"end": 200000
}
},
"ev": 0
}
]
}
Get Phantom pack detail
Native Phantom endpoint returning a single pack by Collector Crypt machine code.
Response Source
CollectorCryptClient.getMachines() -> Collector Crypt /api/machines, filtered by pack code
curl
curl -sS -i -X GET 'http://127.0.0.1:4030/tcg/packs/pokemon_50'
Response Headers
HTTP/1.1 200 OK
Content-Security-Policy: default-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: validator.swagger.io;script-src 'self' https: 'unsafe-inline';report-uri https://rt.phantom.app/csp;base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Origin-Agent-Cluster: ?1
Referrer-Policy: no-referrer
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-DNS-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: none
X-XSS-Protection: 0
access-control-allow-origin: *
cache-control: public, max-age=60
content-type: application/json; charset=utf-8
content-length: 684
Date: Fri, 12 Jun 2026 17:44:50 GMT
Connection: keep-alive
Keep-Alive: timeout=75
Response Body
{
"code": "pokemon_50",
"name": "Elite Pokémon Gacha Pack",
"price": 50,
"shortName": "PKMN 50",
"image": "",
"thumbnailUrl": "https://gacha.collectorcrypt.com/pokemon_50.png",
"videoSrc": "https://gacha.collectorcrypt.com/pokemon_50.webm",
"videoHevc": "https://gacha.collectorcrypt.com/pokemon_50.hevc.mp4",
"contains": 1,
"public": true,
"instantBuyback": 85,
"freeSpins": true,
"turboMode": true,
"pointsMultiplier": 1,
"odds": {
"common": 0.8,
"uncommon": 0.15,
"rare": 0.04,
"epic": 0.01
},
"stock": {
"common": 154,
"uncommon": 182,
"rare": 98,
"epic": 761
},
"tierRanges": {
"common": {
"start": 30,
"end": 60
},
"uncommon": {
"start": 60,
"end": 110
},
"rare": {
"start": 110,
"end": 250
},
"epic": {
"start": 250,
"end": 5001
}
},
"ev": 55.092700028524135
}
Get purchased pack counts
Authenticated Phantom endpoint returning purchased/gifted pack counts keyed by pack code.
Response Source
CollectorCryptClient.getPurchasedPacks() -> Collector Crypt /api/purchasedPacks
curl
curl -sS -i -X GET -H 'x-forwarded-user: 550e8400-e29b-41d4-a716-446655440000' 'http://127.0.0.1:4030/tcg/packs/purchased?wallet=AzZtQzZYHYPNrntcCeCrAg4LnWLzLc8icrmnWfvfymUv'
Response Headers
HTTP/1.1 200 OK
Content-Security-Policy: default-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: validator.swagger.io;script-src 'self' https: 'unsafe-inline';report-uri https://rt.phantom.app/csp;base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Origin-Agent-Cluster: ?1
Referrer-Policy: no-referrer
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-DNS-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: none
X-XSS-Protection: 0
access-control-allow-origin: *
content-type: application/json; charset=utf-8
content-length: 2496
Date: Fri, 12 Jun 2026 17:44:51 GMT
Connection: keep-alive
Keep-Alive: timeout=75
Response Body
{
"pokemon_50": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"pokemon_2500": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"pokemon_250": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"onepiece_50": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"pokemon_1000": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"onepiece_250": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"pokemon_25": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"comic_25": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"sns_25": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"comic_50": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"football_50": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"basketball_50": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"baseball_50": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"gachopia_50": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"pikachu_50": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"charizard_50": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"gengar_50": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"anime_75": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"sealed_80": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"basketball_100": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"firegrass_100": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"dragonite_100": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"baseball_100": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"sports_100": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"football_100": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"water_100": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"comic_250": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"mew_250": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"basketball_250": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"football_250": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"baseball_250": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"sf_2500": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
},
"pokemon_5000": {
"purchased": 0,
"gifted": 0,
"used_purchased": 0,
"used_gifted": 0
}
}
Create pack transaction
Authenticated Phantom endpoint generating the pack purchase transaction the wallet signs.
Response Source
CollectorCryptClient.generatePack() -> Collector Crypt /api/generatePack
curl
curl -sS -i -X POST -H 'content-type: application/json' -H 'x-forwarded-user: 550e8400-e29b-41d4-a716-446655440000' --data '{"playerAddress":"AzZtQzZYHYPNrntcCeCrAg4LnWLzLc8icrmnWfvfymUv","packType":"pokemon_50","turbo":false}' 'http://127.0.0.1:4030/tcg/packs/create'
Request Body
{
"playerAddress": "AzZtQzZYHYPNrntcCeCrAg4LnWLzLc8icrmnWfvfymUv",
"packType": "pokemon_50",
"turbo": false
}
Response Headers
HTTP/1.1 201 Created
Content-Security-Policy: default-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: validator.swagger.io;script-src 'self' https: 'unsafe-inline';report-uri https://rt.phantom.app/csp;base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Origin-Agent-Cluster: ?1
Referrer-Policy: no-referrer
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-DNS-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: none
X-XSS-Protection: 0
access-control-allow-origin: *
content-type: application/json; charset=utf-8
content-length: 712
Date: Fri, 12 Jun 2026 17:44:51 GMT
Connection: keep-alive
Keep-Alive: timeout=75
Response Body
{
"memo": "phantom-452dafcd-9b0a-4e3d-b18d-14afdc8e10e3",
"transaction": "AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABs/yyBkxQflmr3lksA2QqvAxzOT+SltH5jKpJFv7Nr6HNvudBmQQhZfk7R7t7z90LEpPN20OlGo1OCedlb92ENAgEDB5R4eShzeAb6DeIpml9KUkDh9NVbZWlaaGAfwRqIBBrD53vWE3CfH8/Yy2QxY+m59WiXVQxtqqNSDj0ZCHa+/P60ZZixMVlRqHnYNISHKdTl580S6MkAGrPXlw7oTWukD+RtZuzk2DIcRV4kTK7iruc9oLwc/QSdoQfGo3LNBHnxAwZGb+UhFzL/7K26csOb57yM5bvF9xJrLEObOkAAAAAFSlNamSkhBk0k6HFg2jh8fDW13bySu4HkH6hAQQVEjQbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCpiU36Rtokip/KG8albZev8BVl8yjMkQSZuRAG4zrxxM4EBAAFAlDDAAAFAQExcGhhbnRvbS00NTJkYWZjZC05YjBhLTRlM2QtYjE4ZC0xNGFmZGM4ZTEwZTM6b3BlbgYEAwIAAAkDgPD6AgAAAAAEAAkDECcAAAAAAAA="
}
Open generated pack
Authenticated Phantom endpoint opening the generated memo and returning the won NFT payload.
Response Source
CollectorCryptClient.openPack() -> Collector Crypt /api/openPack
Execution
Not executed in live-key report mode because opening a generated pack can advance the pack flow.
curl
curl -sS -i -X POST -H 'content-type: application/json' -H 'x-forwarded-user: 550e8400-e29b-41d4-a716-446655440000' --data '{"memo":"phantom-452dafcd-9b0a-4e3d-b18d-14afdc8e10e3"}' 'http://127.0.0.1:4030/tcg/packs/open'
Request Body
{
"memo": "phantom-452dafcd-9b0a-4e3d-b18d-14afdc8e10e3"
}
Build buyback transaction
Authenticated Phantom endpoint building a sell-back transaction for a won NFT.
Response Source
CollectorCryptClient.buyback() -> Collector Crypt /api/buyback
Execution
Not executed in live-key report mode because buyback builds a transaction against an NFT address.
curl
curl -sS -i -X POST -H 'content-type: application/json' -H 'x-forwarded-user: 550e8400-e29b-41d4-a716-446655440000' --data '{"playerAddress":"AzZtQzZYHYPNrntcCeCrAg4LnWLzLc8icrmnWfvfymUv","nftAddress":"J3LVMQMrnSW1xdo3b8hZBXYPAQ95Xhgkv2SnaGxDibpE"}' 'http://127.0.0.1:4030/tcg/packs/buyback'
Request Body
{
"playerAddress": "AzZtQzZYHYPNrntcCeCrAg4LnWLzLc8icrmnWfvfymUv",
"nftAddress": "J3LVMQMrnSW1xdo3b8hZBXYPAQ95Xhgkv2SnaGxDibpE"
}
Submit signed transaction
Authenticated Phantom endpoint submitting a wallet-signed Collector Crypt transaction.
Response Source
CollectorCryptClient.submitTransaction() -> Collector Crypt /api/submitTransaction
Execution
Not executed in live-key report mode because submitTransaction sends a signed transaction payload upstream.
curl
curl -sS -i -X POST -H 'content-type: application/json' -H 'x-forwarded-user: 550e8400-e29b-41d4-a716-446655440000' --data '{"signedTransaction":"mock-signed-transaction"}' 'http://127.0.0.1:4030/tcg/packs/submit-transaction'
Request Body
{
"signedTransaction": "mock-signed-transaction"
}
Missing auth validation
Confirms authenticated Phantom write endpoints reject callers without x-forwarded-user.
Response Source
Real AuthGuard response; this does not depend on Collector Crypt or local mock data.
curl
curl -sS -i -X POST -H 'content-type: application/json' --data '{"playerAddress":"AzZtQzZYHYPNrntcCeCrAg4LnWLzLc8icrmnWfvfymUv","packType":"pokemon_50","turbo":false}' 'http://127.0.0.1:4030/tcg/packs/create'
Request Body
{
"playerAddress": "AzZtQzZYHYPNrntcCeCrAg4LnWLzLc8icrmnWfvfymUv",
"packType": "pokemon_50",
"turbo": false
}
Response Headers
HTTP/1.1 401 Unauthorized
Content-Security-Policy: default-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: validator.swagger.io;script-src 'self' https: 'unsafe-inline';report-uri https://rt.phantom.app/csp;base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Origin-Agent-Cluster: ?1
Referrer-Policy: no-referrer
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-DNS-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: none
X-XSS-Protection: 0
access-control-allow-origin: *
content-type: application/json; charset=utf-8
content-length: 43
Date: Fri, 12 Jun 2026 17:44:51 GMT
Connection: keep-alive
Keep-Alive: timeout=75
Response Body
{
"message": "Unauthorized",
"statusCode": 401
}