Pick a channel for a match and it becomes available to every API customer on /v1/stream?id=… immediately. Auto matches come from the EPG (programme naming both teams at kick-off) and refresh every 5 min; a manual pick always wins. Use Tournament rules to cover a whole league with one channel.
| When | Sport | Tournament | Match | Stream |
|---|
🤖 Frame check: every live event's candidate channels are checked automatically — a frame is read by Claude, and a channel goes on air only after two frames a minute apart both show that match's scoreboard. It is re-checked while live and taken off air if the channel switches. Anything it cannot settle stays here for you. Each card shows the teams the sportsbook expects and a live frame from the channel the guide suggests (plus alternatives). Look at the scoreboard: if it is that match, press ✓ Confirm — the stream goes on air for that event only. If it is something else, use an alternative or press ✗ Wrong. Frames refresh every minute.
A rule maps every event of a tournament to one channel (e.g. Bundesliga → Sky Sport Bundesliga 1). An explicit per-event mapping always wins over a rule.
| Tournament | Channel |
|---|
| ID | Name | Category |
|---|
Your own Xtream-Codes logins: a customer enters host, username and password in any IPTV app (TiviMate, XCIPTV, IPTV Smarters, GSE, Kodi…) or loads the M3U link. Every distinct channel being watched takes one of the line's connections (shared with the sportsbook relays); viewers of the same channel share one. Raw .ts streams leave from this server; .m3u8 goes through the relay and the CDN.
| Username | Password | App code | Reseller | DNS | Status | Expires | Conn. | Now | Watching / last | GB this month | Note |
|---|
Open customer streams
| Channel | Viewers | Mbit/s | Up | Users |
|---|
StreamBox app panel
When set, every login created here also gets an activation code in StreamBox (its sbox_api.php), so the customer just types the code in the app. Create the token in StreamBox → Token codes.
Reseller API (trials from the app)
Paste these into StreamBox → Settings → API: Login API URL = , Reseller API URL = , API key = , Package ID = the trial package below. The app's "free trial" then creates a real login here, one per device.
| ID | Package | Days | Conn. | Credits | Trial |
|---|
Credits are what a reseller pays per connection for that package (1 credit = 1 month × 1 connection is the convention; trials cost 0).
Resellers sign in at , spend credits to create and extend lines (only their own), and get the app activation codes automatically. You top up credits here; every movement is in their ledger. Package prices are set on the Customers tab.
| Username | Name | Credits | Lines | Active | Status | Note |
|---|
| When | What | Line | Credits | Balance | By |
|---|
Every hostname whose DNS record points at this server (27.0.175.23) works for customers at once — nothing to configure here for that. This list decides what customers see: each customer has one DNS (its codes, M3U and app activation code use it) and the others appear as backups. When an ISP blocks a host, add a fresh one below and move the affected customers to it; the branded app follows automatically, Xtream-app users change the host once.
| Name | URL | Customers | Health | Default for new |
|---|
Move customers to another DNS
Also possible per customer from the DNS column on the Customers tab, and per line by resellers in their panel.
One upstream connection per running relay, regardless of viewer count. Relays stop by themselves 90 s after the last viewer leaves.
| Channel | Renditions | Viewers (HLS + WS) | CPU | Uptime | WS out/viewer (Mbit/s) | Idle | Last ffmpeg msg |
|---|
CPU is per relay (100 = one core). Bandwidth = per-viewer bitrate × viewers; with a CDN configured, HLS viewers cost the origin one fetch per segment per edge.
Log
Xtream source
Video ladder (transcode)
Applies to relays started from now on (use Restart in Active relays for running ones). Rule of thumb on this box: 720p ≈ 1–1.5 cores, 480p ≈ 0.5 core per channel; the WebSocket player receives the first rendition.
CDN for HLS
Playlists are cached 1 s and segments 60 s at the edge; the per-viewer master playlist always comes from here (signed). WebSocket viewers stay on this server.
EPG (TV guide)
Channel fixes (what you found when you looked at the picture — survives channel re-syncs)
| Channel | Fix | Since |
|---|
Viewer link lifetime
Customers request a fresh link from /v1/stream whenever a viewer opens a match; links expire after this many seconds.
How customers use it
GET https://api.euro365.bet/v1/streams(X-API-Key) → list of event ids that currently have a stream. Show a 📺 icon on those matches.- When a logged-in user opens a match: from your backend call
GET https://api.euro365.bet/v1/stream?id=<event_id>→embed_url,ws_url,hls_url,expires_at. - Easiest:
<iframe src="embed_url" allow="autoplay; fullscreen" allowfullscreen>. Or feedws_urlto mpegts.js /hls_urlto hls.js in your own player. - The key needs the stream permission (set per API key in the Odds API admin).