16TMS
Beta16TMS is in open beta. Sign up and run your next event.

Your whole tournament.
One system.

Registration, structure, points, live scoring for your broadcast, casters and analysts, and an API to run it all inside your own app. Built for battle royale, ready for brackets.

  • Build any round structure

    Lobbies, groups, round robin, arena, brackets and Swiss, chained on one canvas

  • 16AI automated scoring

    Reads the kill feed live and scores every finish, knock and revive

  • Instant scoring, always right

    Points land as each finish posts; fix a misread and the match replays

  • Every screen in sync

    Broadcast, casters and analysts read the same numbers

  • Runs inside your app

    API with your own user IDs and signed webhooks

Night Circuit — Season 3Live scoringBeta
Live · Round 1 · M318 / 64 alive6 / 16 teamsASV 9 pts
  • 8518/64Assault rifle
    BRN|KadeIRB|Teal
    BRN|KadeFinishIRB|Teal
  • 8419/64Assault rifle
    CBW|BraeIRB|Orrin
    CBW|BraeFinishIRB|Orrin
  • 8320/64Grenade
    CBW|BraeIRB|Orrin
    CBW|BraeKnockIRB|Orrin
  • 8220/64Assault rifle
    GSW|NoxIRB|Grit
    GSW|NoxFinishIRB|Grit
#
Team
Place
Finishes
Kill pts
Place pts
Total
1
ASVAshveil
—
9
9
0
9
2
NFDNinefold
—
6
6
0
6
3
BRNBrine Wolves
—
5
5
0
5
4
PHBPale Harbor
9
4
4
0
4
5
KN9Kestrel Nine
11
4
4
0
4
6
EMLEmberlane
12
3
3
0
3
7
TDCTidecall
14
3
3
0
3
8
GSWGlasswing
—
3
3
0
3
9
HKTHollow Kite
—
3
3
0
3
10
NVNNorthvane
8
2
2
1
3
11
RVMRavenmoor
15
2
2
0
2
12
IRBIronbark
7
1
1
1
2
13
SLMSaltmarsh
13
1
1
0
1
14
CBWCobalt Ward
—
1
1
0
1
15
SJWStonejaw
10
0
0
0
0
16
LWFLowfield
16
0
0
0
0
row 85 / 108

Sample match, replayed from the scoring engine · fictional teams

Most events still run on spreadsheets, screenshots and DMs. 16TMS runs the whole tournament in one system.

Run the whole tournament

Beta

Build, run and rank the whole event from one console.

From a blank form to final standings: set the format, fill the groups, connect the rounds and decide what every placement is worth. Standings follow each recorded result, and your whole crew works in the same console.

  1. 01New tournament

    Five short steps from a blank form to a tournament.

    Basics, format, schedule and artwork, then one page that reviews every answer before you create it.

    TournamentsNew tournament

    New tournament

    Everything here can be changed later, except the game.

    1. Basics(completed)
    2. Format(completed)
    3. Schedule(completed)
    4. Artwork(completed)
    5. 5Review

    Basics

    Edit
    Name
    Night Circuit — Season 3
    Short name
    NCS3

    Format

    Edit
    Game
    Battlegrounds Mobile India
    Match type
    FFA
    Who competes
    Teams
    Roster
    4–5 per team

    Schedule

    Edit
    Entrant limit
    64
    Registration opens
    2 Nov 2026, 18:00
    Registration closes
    9 Nov 2026, 23:00
    Starts
    14 Nov 2026, 19:00
    Ends
    29 Nov 2026, 22:00

    Artwork

    Edit
    Logo
    NCS3
    Banner
    Create tournamentBackCancel
  2. 02Match type

    Lobbies of many, or two sides at a time.

    Pick how a match is played and who competes. The game decides which match types are on offer, and it is the one answer you cannot change later.

    New tournamentFormat

    Game

    Battlegrounds Mobile India

    Chosen from the tournament engine’s catalog. It decides which match types below are possible, and it cannot be changed later.

    Match type

    FFA (selected)A lobby of many. Battle royale and arena formats.
    DuelTwo sides per match. Brackets, Swiss, round robin.

    Who competes

    TeamsSolo

    Smallest roster

    4

    Largest roster

    5

    Squads register with a roster.

    ContinueBackCancel
  3. 03Participants

    Rosters spelled the way the kill feed spells them.

    Add competitors by hand or upload them as JSON, with every in-game name exactly as it appears in the game, clan tag included. Then fill the groups with Auto-assign, or Shuffle for a fresh draw.

    NCS3Participants

    Participants

    64 teamsUpload JSONAdd competitors

    Ashveil squad

    In-game names exactly as the killfeed shows them, clan tag and all. A name that does not match scores nothing.

    Players

    1. 1ASV|Viper
    2. 2ASV|Rift
    3. 3ASV|Juno
    4. 4ASV|Pike

    Round 1 · Qualifiers

    64 / 64 teams · 4 groups · 12 matches

    Auto-assignShuffle

    Group A

    16 of 16

    Full

    Group B

    16 of 16

    Full

    Group C

    16 of 16

    Full

    Group D

    16 of 16

    Full
  4. 04Structure

    The shape of the whole event, on one screen.

    Connect the rounds and say how many go through. Qualifier groups feed the semi-finals, and the semi-finals feed the grand final.

    NCS3Structure

    Structure

    How the rounds of this tournament feed into each other — the shape of the whole bracket, in one screen.

  5. 05Placement points

    Your points table, rank by rank.

    Start from the usual 10 · 6 · 5 · 4 · 3 · 2 · 1 · 1 and change any rank. Every finish adds points on top.

    NCS3Rules & points

    Placement points

    What each finishing position is worth in a lobby of this tournament. Set once — every live match scores on it, and kill points are added on top.

    10Rank 1
    6Rank 2
    5Rank 3
    4Rank 4
    3Rank 5
    2Rank 6
    1Rank 7
    1Rank 8

    Rank 9 and below scores no placement points — kills only.

    Points per finish1Set when live scoring starts.

    Round 1 · M1 · Ashveil10 + 6 × 1 = 16

    Reset to the usual tableSave placement points
  6. 06Standings

    One table across every match.

    Each recorded result rolls into the standings: played, points, average place and kills, overall or by round and group. Step through the sample lobby's three matches.

    NCS3Standings
    QualifiersGroup ASearch competitors
    #CompetitorPointsAvgKills
    111Ashveil1626501.02.01.761125
    432Ninefold819344.03.02.74918
    523Hollow Kite620305.03.03.33713
    244Brine Wolves1116282.04.03.75815
    355Glasswing915203.04.04.74710
    766Cobalt Ward311167.05.55.3268
    677Ironbark58106.07.07.0356
    888Northvane3698.07.57.7246
    1099Pale Harbor1379.09.59.3137
    111210Kestrel Nine12611.011.511.3126
    141111Emberlane02512.011.511.7025
    151412Tidecall01414.013.513.7014
    91013Stonejaw23310.09.59.7233
    131514Ravenmoor11315.015.515.3113
    121315Saltmarsh11213.013.513.3112
    161616Lowfield00016.015.515.7000
    Show the standings after match16 competitors · top 8 shown
  7. 07Roles

    Run it as a crew.

    Invite people by email and give each one a role. Casters and analysts get Viewer: they see every table and cannot change a score.

    OrganisationPeople

    Email

    caster@example.com

    Role

    Viewer
    Send invitation
    • Owner

      Everything an admin can do, plus deleting the organisation.

    • Admin

      Runs the organisation: invites, roles, settings.

    • Member

      Runs tournaments — entrants, rounds, results.

    • Viewer

      Reads everything. Changes nothing.

    MemberRoleJoined
    you@example.comOwner12 Oct
    referee@example.comMember20 Oct
    caster@example.comViewerpending
  8. 08Registration

    Sign-ups inside your own app.

    Players join from your product. Your backend registers them through the 16TMS API with your own user IDs, so nobody needs a separate 16TMS account, and reads the standings back for your own screens.

    Your backend16TMS API
    Your appYour backend16TMS API

    X-API-KEY: •••• · your own user ID

    Player
    POST/external/users
    Solo
    POST/tournaments/{id}/registrations/by-external-id
    Team
    POST/tournaments/{id}/registrations/teams/{teamId}
    Results
    GET/rounds/{roundId}/arena/standings

    The key stays on your server. Never ship it in a browser or an app.

    Coming soonA registrations queue in the console, with your own form fields and check-in.

    API reference

Console screens from the 16TMS beta · sample event, fictional teams

16AI · Automated scoring

16AI reads the kill feed and scores the lobby. You fix what it can't match.

16AI runs in the capture client. It reads the game's kill feed with computer vision and OCR and posts every finish, knock and revive to the engine. Names are matched to the rosters you registered. A name that matches no roster is held back and flagged Needs a fix, with the screenshot crop it came from.

Kill-feed scoring Beta
In the capture client. Every finish, knock and revive, matched to your rosters and scored.
Results-screenshot scoring Coming soon
Score a finished match from its results screen. You review before it counts.

Kill-feed scoring, row by row Beta

Watch row 101: the name doesn't match, so it waits for a person.

Beta

Animated replay of a sample match. Rows 99 to 104 pass through the four steps below. Row 101 reads ASV|Vlper, which matches no roster, so the row is held back and flagged Needs a fix until the operator corrects it to ASV|Viper and the match is recomputed.

  1. 01

    Read the kill feed

    Computer vision finds each new kill-feed line on screen. OCR reads the names.

  2. 02

    Extract the row

    Killer, Finish, Knock or Revive, victim and weapon type. The screenshot crop is saved with the row.

  3. 03

    Match the rosters

    Both names are checked against the rosters registered for this lobby, clan tag and all.

  4. 04

    Score it

    The engine scores matched rows: points per finish, placement points when a squad is wiped. A row it cannot match waits for a fix.

Replay of a sample match from the engine's own output (Night Circuit — Season 3, Round 1 · M3). Teams and players are fictional; weapons are shown by type.

A name it can't match waits for a person.

On row 101 the capture client read “ASV|Vlper”. No roster in this lobby has that name, so the row was held back and flagged Needs a fix, with the screenshot crop it came from. The operator reads the name off the crop and saves. The match is recomputed from that row onward, on every screen.

01Flagged

Needs a fix

10110/64Assault rifle
ASV|ViperBRN|Sol
ASV|VlperFinishBRN|Sol

That killer is not on any roster in this lobby.

  • The crop shows the game's own text; the name below it is what 16AI read.
  • The row is held back. The points table does not count it until it is fixed.

02Corrected

Correct row 101

Read the names off the screenshot. Saving recomputes the match from this row onward.

ASV|ViperBRN|Sol
KillerASV|Viper16AI read ASV|VlperVictimBRN|Sol
CancelSave correction

03Recomputed

Row 101 saved

ASV|Viper · Finish · BRN|Sol. Recomputed from row 101 onward.

#TeamFinishesTotal
1ASVAshveilwas #29 → 1010
2HKTHollow Kite610
3NFDNinefold99

Results-screenshot scoring

Coming soon

Drop in the results screen of a finished match. 16AI reads each team's placement and kills and fills the match's Team scores table. You check every row, edit what's wrong, and press Report result. Nothing counts before that.

  1. 01

    Drop in the results screen

    The screenshot of a finished match.

  2. 02

    16AI fills Team scores

    Placement and kills for every team, read off the screenshot.

  3. 03

    You confirm

    Edit any row, then Report result. Scores count from there.

Results screenRound 1 · M2
Match results16 teams
Team scoresFilled by 16AITo review
Team scores for Round 1 · M2, filled from the results screen and waiting for review
PlaceTeamKillsTotalEdit
1HKTHollow Kite414
2NFDNinefold511
3ASVAshveil510
4CBWCobalt Ward48
5GSWGlasswing36
6BRNBrine Wolves35
7NVNNorthvane23
8IRBIronbark23
8 more rows · check each, edit what's wrong

Concept preview with sample data from Round 1 · M2. Not available yet; kill-feed scoring above is in beta now.

Live scoring

Beta

Scored live from the kill feed. Checked by a person.

The capture client on your production PC watches the game. 16AI turns its kill feed into scored rows, matched to your rosters. Anything it cannot match waits for a person, and one correction replays the whole match.

Step through one match · Night Circuit — Season 3 · Round 1 · M3

Open the match and press Start live scoring. The lobby opens with all 16 teams on zero and an empty kill feed.

  1. Start live scoring
  2. Lobby open

The capture client on your production PC watches the game. 16AI reads each kill-feed line, matches the names to your registered rosters and posts the row with its screenshot crop.

  1. Game
  2. Capture client
  3. 16AI · vision + OCR
  4. Rosters
  5. Kill feed

“Rows appear here as the capture client reads them from the game.”Kill feed, before the first row

A finish adds a kill point to the team as its row lands. Knocks and revives change who is still up, so every player shows Alive, Knocked or Dead.

  • Finish+1 kill point for the team
  • Knockplayer shows Knocked
  • Reviveplayer back to Alive

When a squad is wiped it is placed, and its placement points land. Glasswing go out 6th for 2 points. The last team alive takes first.

1st10
2nd6
3rd5
4th4
5th3
6th2
7th1
8th1

Default table · editable · 9th and below: 0

Row 101 came in as ASV|Vlper, a name on no roster, so it scored nothing and was flagged. The operator checks the saved crop, sets ASV|Viper and saves. The whole match replays and every screen updates.

  1. Needs a fix
  2. Correct row
  3. Save correction

Before

1HKT10

2ASV9

After

1ASV10

2HKT10

With one team left, press End lobby & record result. The final table becomes the match result, and the tournament standings follow.

“Recorded as the match result — 16 teams scored. Standings follow.”ASV 24 · NFD 15 · BRN 12

Night Circuit — Season 3Round 1 · M3
Lobby open64 / 64 alive16 / 16 teams

Kill feed0 rows

    Rows appear here as the capture client reads them from the game.

    Points tableTop 5 of 16

    #
    Team
    Place
    Finishes
    Kill pts
    Place pts
    Total
    1
    ASVAshveil
    —
    0
    0
    0
    0
    2
    BRNBrine Wolves
    —
    0
    0
    0
    0
    3
    CBWCobalt Ward
    —
    0
    0
    0
    0
    4
    EMLEmberlane
    —
    0
    0
    0
    0
    5
    GSWGlasswing
    —
    0
    0
    0
    0
    6
    HKTHollow Kite
    —
    0
    0
    0
    0
    7
    IRBIronbark
    —
    0
    0
    0
    0
    8
    KN9Kestrel Nine
    —
    0
    0
    0
    0
    9
    LWFLowfield
    —
    0
    0
    0
    0
    10
    NFDNinefold
    —
    0
    0
    0
    0
    11
    NVNNorthvane
    —
    0
    0
    0
    0
    12
    PHBPale Harbor
    —
    0
    0
    0
    0
    13
    RVMRavenmoor
    —
    0
    0
    0
    0
    14
    SLMSaltmarsh
    —
    0
    0
    0
    0
    15
    SJWStonejaw
    —
    0
    0
    0
    0
    16
    TDCTidecall
    —
    0
    0
    0
    0

    Lobby open · 16 teams · 64 seats · 0 rows

    01 / 06
    Sample match from the scoring engine · fictional teams

    When the capture needs a hand

    • Insert a missed row

      If the capture missed a line, add it in its place in the kill feed. The match replays with it in.

      Add row
    • Rewind to a headcount

      Take the kill feed back to an earlier alive count and score on from there.

      Rewind the kill feed
    • No capture? Type it in

      Switch the match to Manual, enter each team’s result in Team scores and report it. The standings follow the same way.

      ManualTeam scoresReport result

    Live kill-feed scoring is built for battle-royale squad lobbies such as BGMI. 16AI reads the feed; your operators keep the final say on every row.

    On air

    Beta

    Every screen on air,
    in sync.

    Producers, casters and analysts read the same live numbers the admin sees, from read-only Viewer seats. Fix a misread row and every screen updates at once, so nobody calls an old table.

    The Viewer seat

    Read-only

    “Reads everything.
    Changes nothing.”

    Seat producers, casters and analysts as Viewers. They see every live number the admin sees; only your scoring crew can change one.

    • Owner
    • Admin
    • Member
    • Viewer
    Night Circuit — Season 3Viewer

    Pick a moment. All three screens move to the same row together, as they do on match day.

    Show the match at
    Live
    9 / 64 alive3 / 16 teamsHKT 10 pts1 row needs a fixRow 102FinishNFD|Kairo → HKT|Quill · Assault rifle · headshotHollow Kite out, placed 4
    8 / 64 alive3 / 16 teamsASV 10 ptsRow 101FixedASV|Vlper → ASV|Viper · match replayed
    8 / 64 alive3 / 16 teamsASV 10 ptsRow 103KnockNFD|Vex → BRN|Tide · Assault rifle
    6 / 64 alive2 / 16 teamsASV 12 ptsRow 105FinishASV|Rift → BRN|Kade · Assault rifleBrine Wolves out, placed 3
    4 / 64 alive1 / 16 teamsASV 24 ptsRow 108FinishASV|Viper → NFD|Vex · Assault rifleNinefold out, placed 2Ashveil placed 1
    Screen

    Broadcast

    Row 102
    Fix · row 101
    Row 103
    Row 105
    Row 108

    Points table · The table that goes on air.

    #
    Team
    Place
    Finishes
    Kill pts
    Place pts
    Total
    1
    HKTHollow Kite
    4
    6
    6
    4
    10
    2
    ASVAshveil
    —
    9
    9
    0
    9
    3
    NFDNinefold
    —
    9
    9
    0
    9
    4
    BRNBrine Wolves
    —
    7
    7
    0
    7
    5
    GSWGlasswing
    6
    3
    3
    2
    5
    6
    CBWCobalt Ward
    5
    2
    2
    3
    5
    7
    PHBPale Harbor
    9
    4
    4
    0
    4
    8
    KN9Kestrel Nine
    11
    4
    4
    0
    4
    9
    EMLEmberlane
    12
    3
    3
    0
    3
    10
    TDCTidecall
    14
    3
    3
    0
    3

    + 6 more teams, all out

    #
    Team
    Place
    Finishes
    Kill pts
    Place pts
    Total
    1
    ASVAshveil
    —
    10
    10
    0
    10
    2
    HKTHollow Kite
    4
    6
    6
    4
    10
    3
    NFDNinefold
    —
    9
    9
    0
    9
    4
    BRNBrine Wolves
    —
    7
    7
    0
    7
    5
    GSWGlasswing
    6
    3
    3
    2
    5
    6
    CBWCobalt Ward
    5
    2
    2
    3
    5
    7
    PHBPale Harbor
    9
    4
    4
    0
    4
    8
    KN9Kestrel Nine
    11
    4
    4
    0
    4
    9
    EMLEmberlane
    12
    3
    3
    0
    3
    10
    TDCTidecall
    14
    3
    3
    0
    3

    + 6 more teams, all out

    #
    Team
    Place
    Finishes
    Kill pts
    Place pts
    Total
    1
    ASVAshveil
    —
    10
    10
    0
    10
    2
    HKTHollow Kite
    4
    6
    6
    4
    10
    3
    NFDNinefold
    —
    9
    9
    0
    9
    4
    BRNBrine Wolves
    —
    7
    7
    0
    7
    5
    GSWGlasswing
    6
    3
    3
    2
    5
    6
    CBWCobalt Ward
    5
    2
    2
    3
    5
    7
    PHBPale Harbor
    9
    4
    4
    0
    4
    8
    KN9Kestrel Nine
    11
    4
    4
    0
    4
    9
    EMLEmberlane
    12
    3
    3
    0
    3
    10
    TDCTidecall
    14
    3
    3
    0
    3

    + 6 more teams, all out

    #
    Team
    Place
    Finishes
    Kill pts
    Place pts
    Total
    1
    ASVAshveil
    —
    12
    12
    0
    12
    2
    BRNBrine Wolves
    3
    7
    7
    5
    12
    3
    HKTHollow Kite
    4
    6
    6
    4
    10
    4
    NFDNinefold
    —
    9
    9
    0
    9
    5
    GSWGlasswing
    6
    3
    3
    2
    5
    6
    CBWCobalt Ward
    5
    2
    2
    3
    5
    7
    PHBPale Harbor
    9
    4
    4
    0
    4
    8
    KN9Kestrel Nine
    11
    4
    4
    0
    4
    9
    EMLEmberlane
    12
    3
    3
    0
    3
    10
    TDCTidecall
    14
    3
    3
    0
    3

    + 6 more teams, all out

    #
    Team
    Place
    Finishes
    Kill pts
    Place pts
    Total
    1
    ASVAshveil
    1
    14
    14
    10
    24
    2
    NFDNinefold
    2
    9
    9
    6
    15
    3
    BRNBrine Wolves
    3
    7
    7
    5
    12
    4
    HKTHollow Kite
    4
    6
    6
    4
    10
    5
    GSWGlasswing
    6
    3
    3
    2
    5
    6
    CBWCobalt Ward
    5
    2
    2
    3
    5
    7
    PHBPale Harbor
    9
    4
    4
    0
    4
    8
    KN9Kestrel Nine
    11
    4
    4
    0
    4
    9
    EMLEmberlane
    12
    3
    3
    0
    3
    10
    TDCTidecall
    14
    3
    3
    0
    3

    + 6 more teams, all out

    Placement points

    1. 1st10
    2. 2nd6
    3. 3rd5
    4. 4th4
    5. 5th3
    6. 6th2
    7. 7th1
    8. 8th1

    Plus 1 point per finish. Placement lands when a squad is wiped; the last team standing takes first.

    Casters

    Row 102
    Fix · row 101
    Row 103
    Row 105
    Row 108

    Teams · Who is alive, knocked or dead.

    #1HKTHollow Kite
    Placed 410
    6 finishes · 5 knocks · 4 placement
    HKT|Moth0F 0KDead
    HKT|Lark0F 0KDead
    HKT|Fen0F 0KDead
    HKT|Quill6F 5KDead
    #2ASVAshveil
    4 up9
    9 finishes · 3 knocks · 0 placement
    ASV|Viper3F 1KAlive
    ASV|Rift2F 1KAlive
    ASV|Juno2F 0KAlive
    ASV|Pike2F 1KAlive
    #3NFDNinefold
    2 up9
    9 finishes · 8 knocks · 0 placement
    NFD|Kairo4F 3KAlive
    NFD|Echo0F 0KDead
    NFD|Vex4F 4KAlive
    NFD|Sable1F 1KDead
    #4BRNBrine Wolves
    3 up7
    7 finishes · 6 knocks · 0 placement
    BRN|Sol2F 1KKnocked
    BRN|Tide2F 2KAlive
    BRN|Kade2F 2KAlive
    BRN|Wren1F 1KDead
    #1ASVAshveil
    4 up10
    10 finishes · 3 knocks · 0 placement
    ASV|Viper3F 1KAlive
    ASV|Rift2F 1KAlive
    ASV|Juno2F 0KAlive
    ASV|Pike3F 1KAlive
    #2HKTHollow Kite
    Placed 410
    6 finishes · 5 knocks · 4 placement
    HKT|Moth0F 0KDead
    HKT|Lark0F 0KDead
    HKT|Fen0F 0KDead
    HKT|Quill6F 5KDead
    #3NFDNinefold
    2 up9
    9 finishes · 8 knocks · 0 placement
    NFD|Kairo4F 3KAlive
    NFD|Echo0F 0KDead
    NFD|Vex4F 4KAlive
    NFD|Sable1F 1KDead
    #4BRNBrine Wolves
    2 up7
    7 finishes · 6 knocks · 0 placement
    BRN|Sol2F 1KDead
    BRN|Tide2F 2KAlive
    BRN|Kade2F 2KAlive
    BRN|Wren1F 1KDead
    #1ASVAshveil
    4 up10
    10 finishes · 3 knocks · 0 placement
    ASV|Viper3F 1KAlive
    ASV|Rift2F 1KAlive
    ASV|Juno2F 0KAlive
    ASV|Pike3F 1KAlive
    #2HKTHollow Kite
    Placed 410
    6 finishes · 5 knocks · 4 placement
    HKT|Moth0F 0KDead
    HKT|Lark0F 0KDead
    HKT|Fen0F 0KDead
    HKT|Quill6F 5KDead
    #3NFDNinefold
    2 up9
    9 finishes · 9 knocks · 0 placement
    NFD|Kairo4F 3KAlive
    NFD|Echo0F 0KDead
    NFD|Vex4F 5KAlive
    NFD|Sable1F 1KDead
    #4BRNBrine Wolves
    2 up7
    7 finishes · 6 knocks · 0 placement
    BRN|Sol2F 1KDead
    BRN|Tide2F 2KKnocked
    BRN|Kade2F 2KAlive
    BRN|Wren1F 1KDead
    #1ASVAshveil
    4 up12
    12 finishes · 3 knocks · 0 placement
    ASV|Viper4F 1KAlive
    ASV|Rift3F 1KAlive
    ASV|Juno2F 0KAlive
    ASV|Pike3F 1KAlive
    #2BRNBrine Wolves
    Placed 312
    7 finishes · 6 knocks · 5 placement
    BRN|Sol2F 1KDead
    BRN|Tide2F 2KDead
    BRN|Kade2F 2KDead
    BRN|Wren1F 1KDead
    #3HKTHollow Kite
    Placed 410
    6 finishes · 5 knocks · 4 placement
    HKT|Moth0F 0KDead
    HKT|Lark0F 0KDead
    HKT|Fen0F 0KDead
    HKT|Quill6F 5KDead
    #4NFDNinefold
    2 up9
    9 finishes · 9 knocks · 0 placement
    NFD|Kairo4F 3KAlive
    NFD|Echo0F 0KDead
    NFD|Vex4F 5KAlive
    NFD|Sable1F 1KDead
    #1ASVAshveil
    4 up24
    14 finishes · 4 knocks · 10 placement
    ASV|Viper5F 1KAlive
    ASV|Rift3F 1KAlive
    ASV|Juno3F 1KAlive
    ASV|Pike3F 1KAlive
    #2NFDNinefold
    Placed 215
    9 finishes · 9 knocks · 6 placement
    NFD|Kairo4F 3KDead
    NFD|Echo0F 0KDead
    NFD|Vex4F 5KDead
    NFD|Sable1F 1KDead
    #3BRNBrine Wolves
    Placed 312
    7 finishes · 6 knocks · 5 placement
    BRN|Sol2F 1KDead
    BRN|Tide2F 2KDead
    BRN|Kade2F 2KDead
    BRN|Wren1F 1KDead
    #4HKTHollow Kite
    Placed 410
    6 finishes · 5 knocks · 4 placement
    HKT|Moth0F 0KDead
    HKT|Lark0F 0KDead
    HKT|Fen0F 0KDead
    HKT|Quill6F 5KDead

    Analysts

    Row 102
    Fix · row 101
    Row 103
    Row 105
    Row 108

    Weapons · Finishes, knocks and headshots.

    Weapon
    Finishes
    Knocks
    Headshots
    Assault rifle
    41
    32
    22
    SMG
    9
    6
    0
    Grenade
    2
    2
    0
    Shotgun
    2
    2
    0
    Unidentified gun
    2
    2
    2

    By player

    Player
    Finishes
    Knocks
    Headshots
    HKT|Quill
    6
    5
    2
    NFD|Vex
    4
    4
    2
    NFD|Kairo
    4
    3
    2
    ASV|Viper
    3
    1
    1
    BRN|Kade
    2
    2
    1
    BRN|Tide
    2
    2
    0
    ASV|Rift
    2
    1
    1
    Weapon
    Finishes
    Knocks
    Headshots
    Assault rifle
    42
    32
    23
    SMG
    9
    6
    0
    Grenade
    2
    2
    0
    Shotgun
    2
    2
    0
    Unidentified gun
    2
    2
    2

    By player

    Player
    Finishes
    Knocks
    Headshots
    HKT|Quill
    6
    5
    2
    NFD|Vex
    4
    4
    2
    NFD|Kairo
    4
    3
    2
    ASV|Viper
    3
    1
    2
    ASV|Pike
    3
    1
    0
    BRN|Kade
    2
    2
    1
    BRN|Tide
    2
    2
    0
    Weapon
    Finishes
    Knocks
    Headshots
    Assault rifle
    42
    33
    23
    SMG
    9
    6
    0
    Grenade
    2
    2
    0
    Shotgun
    2
    2
    0
    Unidentified gun
    2
    2
    2

    By player

    Player
    Finishes
    Knocks
    Headshots
    HKT|Quill
    6
    5
    2
    NFD|Vex
    4
    5
    2
    NFD|Kairo
    4
    3
    2
    ASV|Viper
    3
    1
    2
    ASV|Pike
    3
    1
    0
    BRN|Kade
    2
    2
    1
    BRN|Tide
    2
    2
    0
    Weapon
    Finishes
    Knocks
    Headshots
    Assault rifle
    44
    33
    23
    SMG
    9
    6
    0
    Grenade
    2
    2
    0
    Shotgun
    2
    2
    0
    Unidentified gun
    2
    2
    2

    By player

    Player
    Finishes
    Knocks
    Headshots
    HKT|Quill
    6
    5
    2
    NFD|Vex
    4
    5
    2
    NFD|Kairo
    4
    3
    2
    ASV|Viper
    4
    1
    2
    ASV|Rift
    3
    1
    1
    ASV|Pike
    3
    1
    0
    BRN|Kade
    2
    2
    1
    Weapon
    Finishes
    Knocks
    Headshots
    Assault rifle
    46
    34
    23
    SMG
    9
    6
    0
    Grenade
    2
    2
    0
    Shotgun
    2
    2
    0
    Unidentified gun
    2
    2
    2

    By player

    Player
    Finishes
    Knocks
    Headshots
    HKT|Quill
    6
    5
    2
    ASV|Viper
    5
    1
    2
    NFD|Vex
    4
    5
    2
    NFD|Kairo
    4
    3
    2
    ASV|Juno
    3
    1
    1
    ASV|Rift
    3
    1
    1
    ASV|Pike
    3
    1
    0

    Sample match, replayed from the scoring engine · fictional teams · weapons shown by class

    For your graphics team

    Your overlay, our numbers.

    16TMS feeds the live data; the on-air graphic stays your own. There is no overlay package and no plug-in to install, so your team keeps its look and its tools.

    Per change
    Every row that lands and every fix sends one fresh snapshot to every connected screen, over WebSocket.
    Read-only
    Screens connect with a short-lived, read-only viewer token. They can read the match and never change it.
    Counts
    Alive and knocked come as separate counts, so an overlay can say “12 alive, 3 knocked”.
    Partner key
    Read the live snapshot and the live points table from your own backend.Coming soon
    Live data pathWebSocket · one snapshot per change
    16TMS

    Live scoring engine

    Row 102
    Fix · row 101
    Row 103
    Row 105
    Row 108
    • Broadcast

      Points table

      HKT leads · 10 ptsASV leads · 10 ptsASV leads · 10 ptsASV leads · 12 ptsASV leads · 24 pts

    • Casters

      Teams

      3 teams up · 9 players3 teams up · 8 players3 teams up · 8 players2 teams up · 6 players1 team up · 4 players

    • Analysts

      Weapons

      Assault rifle · 41 finishesAssault rifle · 42 finishesAssault rifle · 42 finishesAssault rifle · 44 finishesAssault rifle · 46 finishes

    • Your overlayYours

      Your design, your tool

      8 alive, 1 knocked8 alive, 0 knocked7 alive, 1 knocked6 alive, 0 knocked4 alive, 0 knocked

    The dashed box is yours: 16TMS sends the numbers, your graphics team draws them.

    Formats

    Beta

    Every format your event needs, battle royale first.

    FFA puts a whole lobby in every match. Duel puts two sides in every match. Choose how the field is grouped, paired or knocked out, then set best of N per match or round.

    FFA

    A lobby of many. Battle royale and arena formats.

    3 formats
    01

    Normal

    Split the field into groups that each play a set number of matches.

    64 squads → 4 groups of 16 · 3 matches each

    02

    Round robin

    Every group meets every other group; each lobby is two groups combined.

    4 groups of 8 → 6 lobbies of 16

    03

    Arena

    Open play. No groups, no fixtures — you enter the leaderboard.

    Arena rounds take standings directly

    Duel

    Two sides per match. Brackets, Swiss, round robin.

    4 formats
    QF · BO1SF · BO3FINAL · BO51ASV18KN904HKT15GSW03BRN16CBW02NFD17PHB0ASV2HKT1BRN0NFD2ASV3NFD13RD · BO3BRN2HKT1
    04

    Single elimination

    A knockout tree. One loss and you are out.

    8 teams · Bo1 → Bo3 → Bo5

    UPPERUPPER FINALLOWERLOWER FINALGRAND FINALLOSSLOSS1ASV24HKT02NFD23BRN1ASV2NFD1HKT0BRN2NFD2BRN1ASV3NFD2
    05

    Double elimination

    Two brackets — a loss drops you to the lower one, a second ends it.

    Upper · lower · grand final

    GROUP AW–L1ASV3–02HKT2–13GSW1–24KN90–3GROUP BW–L1NFD3–02BRN2–13PHB1–24CBW0–3SEMI · BO3FINAL · BO5A1ASV2B2BRN0B1NFD2A2HKT1ASV3NFD1
    06

    Groups into a bracket

    Groups play every pair inside themselves, then the top finishers meet in a knockout.

    2 groups of 4 · top 2 advance

    Swiss sample after two rounds: each team's results, its win–loss record, and its round 3 opponent on the same record.
    TeamR1R2W–LR3
    ASVAshveilWW2–0plays NFD
    NFDNinefoldWW2–0
    HKTHollow KiteWL1–1plays PHB
    PHBPale HarborWL1–1
    BRNBrine WolvesLW1–1plays GSW
    GSWGlasswingLW1–1
    CBWCobalt WardLL0–2plays KN9
    KN9Kestrel NineLL0–2
    07

    Swiss

    Pair from standings each round. One loss does not end it.

    Round 3 · paired by record

    Squad lobby

    A battle-royale lobby seats 16 squads of 4 players: 64 seats.

    Placement points

    The editor lists 16 ranks from the usual table, plus points per finish. Edit both.

    Who competes

    Teams or Solo, chosen when you create the tournament.

    Best of

    Set best of N per match or per round.

    ASV · Ashveil, the demo match winner, traced in redSample settings · fictional teams from the demo match

    Side by side

    The tournament core you expect. Built for battle royale.

    Brackets, lobbies, points, results, standings and a crew to run them: the core is all here. Then 16TMS scores the lobby while it is still being played, and puts the same numbers on every screen.

    Capability
    Typical tournament platform
    16TMS
    01Where 16TMS is differentBuilt around the battle-royale lobby, and around your app.

    Live kill-feed scoring

    BGMI lobbies · capture client

    Not typical

    Results arrive after the match: typed in by an admin, or pulled from a game API.

    Beta

    16AI reads the in-game kill feed and scores every finish, knock and revive as it lands. Misread names are flagged “Needs a fix” for a person to correct, and ending the lobby records the result.

    Finish · Knock · Revive

    Corrections that replay the match

    One fix, every screen

    Partly

    Edit the saved result, and the standings recompute.

    Beta

    Correct a row from its saved screenshot, insert a missed one, or rewind to a headcount. The whole match replays, and every screen watching it updates.

    Correct row → Save correction

    Placement-point lobbies

    Groups · Round robin · Arena

    Partly

    FFA stages with placement and kill points. Lobby pairings and point tables may need setting up by hand or by request.

    Beta

    Split the field into groups, or let every group meet every other: the A×B, A×C and B×C lobbies are generated for you. Placement points and points per finish are yours to edit.

    10 · 6 · 5 · 4 · 3 · 2 · 1 · 1

    Read-only broadcast seats

    Production · Casters · Analysts

    Not typical

    Standings move when a result is saved. No alive or knocked counts during play.

    Beta

    Viewer seats follow the live points table, who is alive or knocked, and teams left, without being able to change a score. Your graphics team builds the on-air look.

    Viewer · Reads everything. Changes nothing.

    API with your own user IDs

    Runs inside your app

    Partly

    Often limited to higher-priced plans. Players usually need an account on the platform.

    Included

    Your backend calls the API with your own user IDs, so players never make a 16TMS account. The key stays on your server.

    POST /external/users

    Signed webhooks

    Match day, pushed to your app

    Partly

    Not always offered. Where they are, they come with the API plan.

    Included

    Signed with HMAC-SHA256 when you set a secret. Subscribe per event, send a test ping and read the delivery log. Assignments, announcements and room credentials reach your app.

    X-Webhook-Signature: sha256=••••

    16AI screenshot scoring

    Screenshot in. Scores out.

    Not typical

    Results typed in by hand.

    Coming soon

    Drop in a match’s results screen. 16AI reads placements and kills, and you review every score before it counts.

    02The tournament coreThe parts every tournament runs on.

    Duel brackets

    Knockouts · Groups · Swiss

    Standard
    Beta

    Single and double elimination, groups into a bracket and Swiss, with best-of and a third-place play-off.

    Best of · Third-place play-off

    Results by hand

    Manual mode

    Standard
    Beta

    Type team scores on the match page and report the result. Arena rounds take a typed standings table.

    Team scores → Report result

    Standings

    Overall · By round · By group

    Standard
    Beta

    Points, average placement and kills, overall or by round or group. They update with every recorded result.

    Points · Avg. place · Kills

    Seeding and draws

    Fair draws, on the record

    Standard
    Beta

    Auto-assign teams to groups, or shuffle with a recorded seed, so a disputed draw can be re-derived exactly.

    Auto-assign · Shuffle

    Registration

    In your app

    Standard

    Sign-up pages hosted on the platform.

    Included

    Players sign up inside your app through the API: solo, with a team invite, or a whole squad at once.

    Crew roles

    Run it as a crew

    Standard
    Beta

    Invite your crew by email and give each person a role.

    Owner · Admin · Member · Viewer

    How to read this

    • The middle column sums up what general-purpose tournament platforms document publicly, as of October 2026. It varies by platform and plan.
    • Live kill-feed scoring is built for BGMI lobbies and needs the capture client running.
    • 16TMS hosts no public tournament pages. Results show in the console and in your own app.
    • Beta marks what is new in the 16TMS beta. Coming soon means not available yet.

    Developers · API and webhooks

    Built to run inside your product.

    Keys stay on your server. Your users keep your IDs. Signed webhooks tell you when anything changes.

    General API flow

    01

    Client App

    • Your app, your login, your user IDs
    • Never holds the API key
    Your own API

    02

    Your Backend

    • Holds your X-API-KEY
    • Names each player by externalId
    Call API (Key + Ext ID)
    Signed webhooks

    03

    16TMS API

    • api.16tms.com/api/v1
    • Replies with success, message, data and meta
    1. 01A player taps Join in your app. Your app calls your own backend, the way it already does.
    2. 02Your backend calls the 16TMS API with your X-API-KEY and the player’s externalId.
    3. 03When an event you subscribed to fires, 16TMS posts it to your backend, signed with your secret.

    Examples · from the docs

    Create a player, then hear back by webhook

    One POST with your externalId creates or updates the player, so your users never make a separate 16TMS account. Later, deliveries such as room credentials arrive at your endpoint.

    curl -X POST 'https://api.16tms.com/api/v1/external/users' \  -H 'X-API-KEY: ••••' \  -H 'Content-Type: application/json' \  -d '{      "externalId": "user_123",      "displayName": "John Doe"    }'
    X-API-KEY
    From the 16TMS console. Keep it on your server, never in client code.
    Content-Type
    Bodies are JSON.
    externalId
    Your own user ID. Later calls name the player by it.
    displayName
    The name the player goes by.
    TrimmedThe docs example also sends email.

    Webhooks

    Know when anything changes

    JSON POSTs to your endpoint for registrations, assignments, matches, announcements and room credentials. Subscribe per event.

    1. tournament.team.joined

      A team registered for the tournament.

    2. participant.assigned.group

      A player or team was placed in a group.

    3. id.pass.announcement

      Room ID and password for the lobby.

    4. match.announcement

      A message for a match, such as “Match starts in 5 minutes.”

    5. match.updated

      A match’s details changed.

    X-Webhook-Signature: sha256=…

    X-Webhook-Id: …

    Check your endpoint with Send Test Ping, shape the body with a custom payload template, and see each delivery in the Delivery Logs.

    API reference · live today

    The main jobs, by endpoint

    Tournaments, registration, assignments, matches and standings, all called from your backend. Players are named by your own ID.

    Base URL
    https://api.16tms.com/api/v1
    Every request
    X-API-KEY: ••••

    Players

    • Create or updatePOST/external/users
    • Link in-game IDPOST/external/user-game-ids?externalId=…

    Teams

    • CreatePOST/teams
    • Invite linkGET/teams/{teamId}/invite
    • Join by invitePOST/teams/invites/{token}/join

    Tournaments

    • ListGET/tournaments
    • DetailsGET/tournaments/{id}
    • Points systemGET/tournaments/{id}/points-system

    Registration

    • SoloPOST/tournaments/{tournamentId}/registrations/by-external-id
    • TeamPOST/tournaments/{tournamentId}/registrations/teams/{teamId}
    • Bulk squadsPOST/tournaments/{tournamentId}/registrations/instant-registration

    Assignments

    • My tournamentsGET/tournaments/my-tournaments
    • FFAGET/tournaments/{tournamentId}/ffa/assigned-details
    • DuelGET/tournaments/{tournamentId}/duel/assigned-details

    Matches

    • FFAGET/matches/ffa
    • DuelGET/matches/duel

    Standings

    • ArenaGET/rounds/{roundId}/arena/standings
    • DuelGET/tournaments/{tournamentId}/duel/standings

    Bracket Viewer

    Drop a live Duel bracket into your app

    An iframe on the web, a WebView on mobile. Style it in the console with Customize Bracket.

    Duel (1v1) onlyiframeWebView
    brackets.16tms.com/{tournament_id}
    SemifinalFinalLive
    Ashveil2
    Hollow Kite0
    Ninefold2
    Brine Wolves1
    Ashveil1
    Ninefold1

    Sample bracket · fictional teams

    <iframe
      src="https://brackets.16tms.com/{tournament_id}">
    </iframe>

    Results in your UI

    Standings, with the viewer’s row flagged

    Arena standings per round, Duel standings with wins, losses and draws. The viewer’s own row comes back with isMe.

    GET/tournaments/{tournamentId}/duel/standings
    Sample Duel standings with the viewer’s row flagged
    #TeamWLD
    1Ashveil300
    2NinefoldisMe210
    3Brine Wolves021
    4Hollow Kite021

    Sample standings · fictional teams

    Who it is for

    Built for the people
    who run the event.

    Organisers build and score the event in the console. Production follows it live from read-only seats. Platforms run tournaments inside their own product, through the API.

    Organisers

    Beta

    Build it, fill it, score it, rank it.

    Esports organisations, league and cup operators, scrim and community hosts.

    Night Circuit — Season 3Standings
    OverallRound 1
    After 3 matches
    #CompetitorPointsAvg. placeKills
    1ASVAshveil501.725
    2NFDNinefold342.718
    3HKTHollow Kite303.313
    4BRNBrine Wolves283.715
    Overall, by round or by group · fictional teams
    Build
    A five-step wizard: Basics, Format, Schedule, Artwork, Review. Everything can be changed later, except the game.
    Formats
    Battle-royale lobbies in groups, round robin or open arena. Duels in single or double elimination, groups into a bracket, or Swiss. Best of N.
    Rosters
    Add competitors or import JSON, with in-game names exactly as the kill feed shows them, clan tag and all. Auto-assign or shuffle into groups.
    Scoring
    16AI scores BGMI-style lobbies live from the kill feed and flags misreads for a person to fix. For everything else, type team scores and report the result.
    Points
    Placement points from the usual 10 · 6 · 5 · 4 · 3 · 2 · 1 · 1, plus points per finish. Change both to fit your rules.
    Crew
    Invite staff by email as Owner, Admin, Member or Viewer. A Member runs entrants, rounds and results; a Viewer only reads.

    Coming soonA registrations queue with your own form fields, check-in, and match reports.

    Broadcast and production

    Beta

    Read the live lobby. Change nothing.

    Producers, observers, casters and analysts.

    Night Circuit — Season 3Live scoring
    Live · Round 1 · M37 / 64 alive1 knocked3 / 16 teams
    #4BRNBrine Wolves
    2 up7
    7 finishes · 6 knocks · 0 placement
    BRN|Sol2F 1KDead
    BRN|Tide2F 2KKnocked
    BRN|Kade2F 2KAlive
    BRN|Wren1F 1KDead
    ViewerReads everything. Changes nothing.
    Late game · sample match · fictional teams
    Points table
    Place, finishes, kill points, place points and total for every team, re-ranked as each kill-feed row lands.
    Players
    Every player shown Alive, Knocked or Dead, how many are still up on each team, and each team’s place once it is wiped.
    Weapons
    Finishes, knocks and headshots per weapon and per player, for the analyst desk.
    Corrections
    Fix a misread name and the match replays from that row. Every screen updates together, so nobody calls an old table.
    Seats
    Invite producers, casters and analysts by email as Viewers. They see the same live table the admin sees, and cannot edit it.
    Your graphics
    Alive and knocked are kept as separate counts, so a graphic can say “7 alive, 1 knocked”. The on-air look is yours: 16TMS ships no overlay, HUD or plug-in.

    Coming soonThe live snapshot and points table by API key, for your graphics system.

    Platforms and partners

    Your app, your brand, our tournament engine.

    Game developers and publishers, and apps and communities with their own players.

    Webhooks
    Your app
    Your backend
    16TMS API

    X-API-KEY: •••• · externalId

    X-Webhook-Signature: sha256=••••

    Delivery logsSend test ping
    tournament.team.joinedSigned
    participant.assigned.groupSigned
    id.pass.announcementSigned

    "messageContent": "Room ID: 123456, PASS: abcd"

    Flow and events from the docs · key masked
    Your user IDs
    One call creates or updates a player from your own externalId. Your players need no separate 16TMS account.
    Registration
    Players join solo, as a team through a join token, or as whole squads in one bulk call.
    Assignments
    Each player’s tournaments, then their FFA or Duel rounds, groups, matches and schedules.
    Standings
    Arena and Duel standings back in your UI, with the viewing player’s own row flagged.
    Webhooks
    JSON posts for registrations, assignments, matches, announcements and room credentials, signed with HMAC-SHA256 when you set a secret. Test ping and delivery logs included.
    Brackets
    Embed a real-time Duel bracket in an iframe or WebView, styled to match your app.

    Coming soonOrganisation keys with scopes, and OAuth 2.0 client credentials.

    Games

    Beta

    Built for battle royale.
    Ready for brackets.

    Live kill-feed scoring is built for BGMI-style battle-royale lobbies. The rest of the catalog runs in FFA lobbies and Duel brackets, with results entered by hand.

    Battle royale

    FFA lobbies · placement and finishes

    • Battlegrounds Mobile IndiaLive · 16AI
    • PUBG Mobile
    • PUBG: Battlegrounds
    • Free Fire
    • Call of Duty: Mobile
    • Call of Duty: Warzone
    • Apex Legends
    • Fortnite

    Live · 16AILive kill-feed scoring with 16AI is built for BGMI-style battle-royale lobbies. Other titles run on results entered by hand.

    Other genres

    Tactical and hero shooters
    ValorantCounter-Strike 2Rainbow Six SiegeOverwatch 2
    MOBA
    Dota 2League of LegendsMobile Legends: Bang BangPokemon UNITE
    Mobile strategy and arena
    Clash RoyaleClash of ClansBrawl Stars
    Sports and racing
    Rocket LeagueEA Sports FCeFootball
    Fighting
    Tekken 8Street Fighter 6
    Party and auto-battler
    Teamfight TacticsFall Guys
    Board and casual
    ChessLudoCarrom8 Ball Pool

    How results come in

    • Live · 16AI

      Live from the kill feed

      BGMI-style battle-royale lobbies

      The capture client reads the in-game kill feed and 16AI posts every finish, knock and revive. Misread names are flagged “Needs a fix” for a person to correct.

    • Entered by hand

      Lobbies and brackets

      Type team scores on the match page and report the result. Arena rounds take a standings table directly. Standings follow either way.

    • Coming soon

      Sent from your backend

      Through the API

      Post results from your own system with your API key, and the standings update the same way.

    Game names are trademarks of their respective owners.

    The film · 1:20

    From registration to final standings, in 80 seconds.

    The whole product in one story: set up the event, score it with 16AI and the live kill feed, put it on air, and run it inside your own app.

    FAQ

    Before you run your first event.

    Games, formats, live scoring, 16AI and the API. Everything here works in the open beta unless it is marked Coming soon.

    The product

    06 questions

    What is 16TMS?

    A tournament management system for esports. You build the event, score every match, publish standings, and can run all of it inside your own app.

    It is in open beta now. Sign up, then set up your first event in the console.

    Which games can I run?

    Tournaments for the titles in our catalog, across battle royale, shooters, MOBAs, sports, fighting and more.

    Live kill-feed scoring with 16AI is built for BGMI-style battle-royale lobbies. Other titles run on results entered by hand.

    Which formats are supported?

    Pick the match type first: a battle-royale lobby puts the whole field in every match, and Duel puts two sides in every match. Then build each stage from the formats below.

    Battle royale
    NormalRound robinArena
    Duel
    Single eliminationDouble eliminationGroups into a bracketSwiss
    Options
    Best ofThird-place play-offTeams or solo

    How are points calculated?

    With your rules. Placement points start from the usual table below, finishes add points on top, and you can edit both. Reset to the usual table puts the defaults back.

    Default placement points for places 1 to 8
    Place12345678
    Points106543211
    Default table · finishes add on top
    Sample match, final top three: placement points plus finishes
    TeamPlacePlace + finishes
    Ashveil1st10 + 14 = 24
    Ninefold2nd6 + 9 = 15
    Brine Wolves3rd5 + 7 = 12
    Sample match · 1 point per finish

    Can I enter results by hand?

    Yes. On the match page, choose Manual, fill in Team scores and press Report result. The standings follow. For an Arena round you can type the standings table itself.

    Can my whole team run it?

    Yes. Invite people by email as Owner, Admin, Member or Viewer. A Member Runs tournaments — entrants, rounds, results. A Viewer reads everything and changes nothing.

    Live scoring and 16AI

    Beta
    05 questions

    How does live scoring work?

    Press Start live scoring on a match. The capture client on your production PC watches the game, and 16AI reads the in-game kill feed with computer vision and OCR. Every finish, knock and revive is posted, names are matched to your registered rosters, and the points table updates on every screen watching the match.

    Placement points land when a squad is wiped, and the last team alive takes first. End lobby & record result records the match result, and the standings follow.

    It is built for BGMI-style battle-royale lobbies, and a person on your crew can check and correct any row.

    1. 01

      Capture client

      Watches the game on your production PC.

    2. 02

      16AI

      Reads each kill-feed row: finish, knock or revive.

    3. 03

      Rosters

      Matches every name to a registered player.

    4. 04

      Every screen

      The points table updates for everyone watching.

    What if 16AI misreads a name?

    The row is flagged Needs a fix and keeps the screenshot crop it was read from. Someone on your crew opens Correct row, reads the names off the screenshot and presses Save correction. The match replays from that row onward, and every screen updates.

    Row 101 · Needs a fix

    10110/64Assault rifle
    ASV|VlperBRN|Sol
    ASV|VlperFinishBRN|Sol

    That killer is not on any roster in this lobby.

    Save correction
    ASV|VlperASV|Viper
    Replay
    From row 101
    Points table
    Ashveil2nd1st
    Sample match · fictional teams · engine output

    Is 16AI results-screenshot scoring available?Coming soon

    16AI results-screenshot scoring is coming soon. You drop in a match’s results screen, 16AI reads placements and kills, and you review every score before it counts.

    Until then, score live from the kill feed or enter results by hand.

    Can casters and analysts follow without touching scores?

    Yes. Give them the Viewer role: it Reads everything. Changes nothing. They follow the same live points table as the admin, with every player shown alive, knocked or dead.

    Do you make the stream overlay?

    No. 16TMS feeds the live numbers, and your graphics team builds the on-air look. There is no overlay package or broadcast plug-in to install.

    Developers

    05 questions

    Can I run tournaments inside my own app?

    Yes. Your backend calls the 16TMS API with your own user IDs, and signed webhooks tell you when anything changes. Duel brackets can be embedded with the Bracket Viewer.

    Read the API reference

    Do my players need a 16TMS account?

    No. One call, POST /external/users, creates or updates a player from your own externalId, so players keep the account they already have with you.

    How do I get an API key?

    An admin creates it in the console. Send it as the X-API-KEY header from your server, and never ship it in a browser or an app build.

    Can players sign themselves up?

    Yes, inside your app through the API: solo, as a team with a join token, or as whole squads in bulk.

    Coming soonA registrations queue in the console, with your own form fields and check-in.

    How do I know a webhook is really from 16TMS?

    Set a secret, and every delivery carries X-Webhook-Signature: an HMAC-SHA256 of the raw body. Check it before you trust the payload, and drop repeats by X-Webhook-Id.

    Send a test.ping from the console to try your endpoint first.

    Read the webhooks guide

    Still have questions?

    The docs walk through the API, the registration flows and webhooks.

    Read the docs

    Sample match, Round 1 · M3: 16 of 64 players alive, 6 of 16 teams.

    16TMS

    Run your next tournament on 16TMS.

    16TMS is in open beta. Sign up to build your first event, or read the docs to run tournaments inside your own app.

    From registration to final standings