API 키 발급 방법
1
회원가입

이메일로 무료 계정을 만드세요. → 회원가입 바로가기

2
USDT 구독 결제

TRC20 네트워크로 USDT를 입금하고 TX 해시를 제출하세요. → 구독 페이지

3
API 키 확인

결제 승인 후 대시보드에서 API 키(BET14-XXXX...)를 확인하세요.

4
사이트에 iframe 삽입

아래 연동 방법을 참고해 베팅 사이트에 게임을 추가하세요.

제공 게임
게임명 주기 slug (embed URL)
🐉 Dragon Tiger 30초 dragontiger
🃏 Baccarat 30초 baccarat
🔮 Big Six Ball 1분 bigsixball
연동 방법 — 서버사이드 변수 주입 권장

API 키를 서버 환경변수(.env)에 저장하고, 페이지를 렌더링할 때 iframe src에 주입합니다. 소스 코드·Git에 키가 없고, 게임은 bet14 서버에서 직접 로드되므로 리소스 문제도 없습니다. 렌더링된 HTML에는 키가 보이지만, 이는 업계 표준 임베드 방식입니다.

Embed URL
https://bet14mini.com/embed/{slug}/?key={API_KEY}
.env / server config
BET14_API_KEY=YOUR_API_KEY
game.php
<?php $apiKey = getenv('BET14_API_KEY'); $slug = 'dragontiger'; // or dynamic ?> <iframe src="https://bet14mini.com/embed/<?= $slug ?>/?key=<?= htmlspecialchars($apiKey) ?>" allowfullscreen ></iframe>
.env + Express (EJS/Pug template)
# .env BET14_API_KEY=YOUR_API_KEY // routes/game.js router.get('/game/:slug', (req, res) => { const allowed = ['dragontiger', 'baccarat', 'bigsixball']; const slug = allowed.includes(req.params.slug) ? req.params.slug : 'dragontiger'; res.render('game', { embedUrl: `https://bet14mini.com/embed/${slug}/?key=${process.env.BET14_API_KEY}` }); }); // views/game.ejs <iframe src="<%- embedUrl %>" style="width:100%;aspect-ratio:830/553;border:none" allowfullscreen sandbox="allow-scripts allow-same-origin allow-popups"></iframe>
.env.local + Next.js Server Component
# .env.local BET14_API_KEY=YOUR_API_KEY // app/game/[slug]/page.jsx (Server Component) const ALLOWED = ['dragontiger', 'baccarat', 'bigsixball']; export default function GamePage({ params }) { const slug = ALLOWED.includes(params.slug) ? params.slug : 'dragontiger'; const apiKey = process.env.BET14_API_KEY; const src = `https://bet14mini.com/embed/${slug}/?key=${apiKey}`; return ( <iframe src={src} style={{ width: '100%', aspectRatio: '830/553', border: 'none' }} allowFullScreen sandbox="allow-scripts allow-same-origin allow-popups" /> ); }
.env + Nuxt 3 (SSR)
# .env BET14_API_KEY=YOUR_API_KEY // nuxt.config.ts export default defineNuxtConfig({ runtimeConfig: { bet14ApiKey: process.env.BET14_API_KEY, // server-only } }); // pages/game/[slug].vue <template> <iframe :src="embedUrl" style="width:100%;aspect-ratio:830/553;border:none" allowfullscreen sandbox="allow-scripts allow-same-origin allow-popups" /> </template> <script setup> const route = useRoute(); const config = useRuntimeConfig(); const slug = ['dragontiger','baccarat','bigsixball'].includes(route.params.slug) ? route.params.slug : 'dragontiger'; const embedUrl = `https://bet14mini.com/embed/${slug}/?key=${config.bet14ApiKey}`; </script>
appsettings.json + Razor Page
// appsettings.json (or env var Bet14ApiKey) { "Bet14ApiKey": "YOUR_API_KEY" } // Pages/Game.cshtml.cs public class GameModel : PageModel { public string EmbedUrl { get; private set; } = ""; private readonly IConfiguration _cfg; public GameModel(IConfiguration cfg) => _cfg = cfg; public IActionResult OnGet(string slug = "dragontiger") { var allowed = new[] { "dragontiger", "baccarat", "bigsixball" }; if (!allowed.Contains(slug)) slug = "dragontiger"; EmbedUrl = $"https://bet14mini.com/embed/{slug}/?key={_cfg["Bet14ApiKey"]}"; return Page(); } } // Pages/Game.cshtml <iframe src="@Model.EmbedUrl" style="width:100%;aspect-ratio:830/553;border:none" allowfullscreen sandbox="allow-scripts allow-same-origin allow-popups"></iframe>
💡 권장 비율: 가로 830 / 세로 553 px — 반응형: width:100%; aspect-ratio:830/553; border:none;
🔒 키는 .env에만 저장하고 Git에 커밋하지 마세요. (.gitignore.env 추가)
게임 서버 실시간 API

각 게임 서버는 300ms마다 폴링 가능한 상태 엔드포인트를 제공합니다. 베팅 사이트에서 이 데이터를 수신해 현재 라운드·페이즈·카드 결과를 자체 UI에 표시하거나 배당 계산에 활용할 수 있습니다.

엔드포인트
https://bet14mini.com/embed/{slug}/api/current ← 현재 라운드 상태https://bet14mini.com/embed/{slug}/api/results?limit=N ← 최근 N개 결과 이력

별도 인증 헤더 불필요. iframe 로드 시 키 검증이 선행된 이후 게임 서버 API는 자유롭게 호출됩니다.

공통 응답 필드
필드타입설명
roundinteger전체 누적 라운드 번호
daily_roundinteger오늘 날짜 기준 라운드 번호 (화면 표시용)
datestring서버 기준 날짜 (YYYY-MM-DD)
phasestring현재 페이즈 — 아래 표 참조
remainMsinteger현재 페이즈 남은 시간 (밀리초). betting 페이즈에서만 유효
phase 값 및 사이클
phase의미이때 추가되는 필드
betting베팅 접수 중 (타이머 카운트다운)remainMs 유효
revealing카드/결과 공개 중카드·점수 필드 등장
result결과 확정 — 최종 승패result 필드 확정
waiting다음 라운드 대기
GET /embed/dragontiger/api/current
{ "round": 13463, "daily_round": 2280, "date": "2026-05-17", "phase": "result", "remainMs": 0, "dragon": { "suit": "S", "value": "4" }, "tiger": { "suit": "C", "value": "2" }, "result": "dragon" }
필드타입설명
dragon.suitstring드래곤 카드 문양: S(스페이드) D(다이아) H(하트) C(클럽)
dragon.valuestring드래곤 카드 값: 2–10, J, Q, K, A
tiger.suit / tiger.valuestring타이거 카드 (동일 구조)
resultstring"dragon" | "tiger" | "tie"

dragon·tiger 필드는 revealing 페이즈부터 등장합니다. betting 페이즈에서는 null.

GET /embed/baccarat/api/current
{ "round": 8821, "daily_round": 1104, "date": "2026-05-17", "phase": "result", "remainMs": 0, "player_cards": [{"suit":"H","value":"5"}, {"suit":"D","value":"3"}], "banker_cards": [{"suit":"C","value":"K"}, {"suit":"S","value":"7"}], "player_total": 8, "banker_total": 7, "natural": true, "result": "player" }
필드타입설명
player_cardsarray플레이어 패 (2~3장, 각 {suit, value})
banker_cardsarray뱅커 패 (2~3장)
player_totalinteger플레이어 합계 (0~9)
banker_totalinteger뱅커 합계 (0~9)
naturalboolean내추럴(8 or 9) 여부
resultstring"player" | "banker" | "tie"

카드 필드는 revealing 페이즈부터 등장. player_totalnull이면 아직 공개 전.

GET /embed/bigsixball/api/current
{ "round": 5201, "daily_round": 420, "date": "2026-05-17", "phase": "result", "remainMs": 0, "result_map": { "manu": 1, "mancity": 2, "liverpool": 3, "chelsea": 4, "arsenal": 5, "tottenham": 6 } }
필드타입설명
result_mapobject팀 이름 → 순위(1=1등). result 페이즈에서 확정
team_orderarray발사 순서 인덱스 배열 (애니메이션용, 통상 불필요)

Teams: manu / mancity / liverpool / chelsea / arsenal / tottenham
1등 팀 = result_map에서 값이 1인 키.

GET /embed/{slug}/api/results?limit=N — 최근 결과 이력
Dragon Tiger
[ { "round":13463, "daily_round":2280, "date":"2026-05-17", "dragon":{"suit":"S","value":"4"}, "tiger":{"suit":"C","value":"2"}, "result":"dragon" }, { "round":13462, "daily_round":2279, "date":"2026-05-17", "dragon":{"suit":"H","value":"A"}, "tiger":{"suit":"D","value":"9"}, "result":"tiger" }, ... ]

최신 라운드가 배열 앞에 위치. 최대 limit개 반환.

💡 iframe postMessage 이벤트: 게임 iframe이 페이즈 변경 시 부모 페이지로 메시지를 전송합니다.
window.addEventListener('message', (e) => { // e.data.type = 'dragontiger_phase' | 'baccarat_phase' | 'bigsix_phase' const { type, round, daily_round, phase, remainMs } = e.data; if (type === 'dragontiger_phase' && phase === 'result') { // fetch /embed/dragontiger/api/current for card data } });
페이즈가 바뀔 때만 발생하므로, 카드 데이터는 이 이벤트 수신 후 /api/current를 추가 호출하여 얻어야 합니다.
에러 코드
HTTP의미원인 및 해결
401 Unauthorized API 키가 없거나 잘못된 경우 — 키를 다시 확인하세요
401 Expired 구독이 만료된 경우 — 갱신 — 갱신
404 Not Found 존재하지 않는 게임 slug — 유효한 slug를 확인하세요
503 Service Unavailable 게임 서버 점검 중 — 잠시 후 다시 시도하세요
주의사항