The 2026 Tabletop Games Balancing Competition

API Documentation

This page outlines all the different API calls available


Submit Run

Sends a run request to TAG. The game and chosen parameters must be provided, as well as a valid API Key. If sucesfull, a run ID will be returned which can be used to retrieve the results of the run after completion.

Run Type

Each run has a type, which determines how many matchups are played:

  • fast: 36 matchups
  • medium: 360 matchups
  • full: 3600 matchups

Request

  • URL: balance-competition.tabletopgames.ai/api/submit_run
  • Method: POST
  • Headers: All Required
    • Content-Type: application/json
  • Body: JSON (All required)
    • game: String - The game to be played, valid strings are: Dominion, ExplodingKittens, Wonders7, CantStop
    • params: JSON[String, String] - A map containg parameters and their chosen values
    • api_key: String - A valid API key
    • run_type: String - Which type of run this is

Response

  • Status:
    • 200 OK: Request completed sucesfully
    • 400 Bad Request: There was an issue with one of the provided parameters
    • 401 Unauthrorized: An invalid API key was provided
  • Body JSON
    • error: (400 / 401) String - Describes why the request couldn’t be completed
    • runID: (200 Only) Number - The ID of the created run

Example

Request

curl -i -X POST http://balance-competition.tabletopgames.ai/api/submit_run 
    -H "Content-Type: application/json" 
    -d '{"game": "Dominion", "params": {"HAND_SIZE": 3}, "api_key": "7079cc2c-2ced-4031-ba9a-6eac68945c22", "run_type":"fast"}'

Response

HTTP/1.1 200 OK
access-control-allow-origin: *
content-length: 12
content-type: application/json
Date: Thu, 17 Apr 2025 13:58:12 GMT
Connection: keep-alive
Keep-Alive: timeout=5

{"runID":13}

Query Run

A request to retrieve the status of a run. The status can be:

  • created: The run has been created and is in the queue
  • running: The run is currently being processed in TAG
  • results: TAG has finished running, and results are being calculated
  • error: There was a fatal error and the run could not complete
  • complete: Results have been calculated and can be retrieved

Request

  • URL: balance-competition.tabletopgames.ai/api/query_run
  • Method: GET
  • Params: (all required)
    • id: Number - The ID of the run to query

Response

  • Status:
    • 200 OK: Request completed sucesfully
    • 400 Bad Request: There ID was not provided or was not a number
    • 404 Not Found: No run with the provided ID was found
  • Body JSON
    • error: (400 / 404) String - Describes why the request couldn’t be completed
    • status: (200 Only) String - The run’s status

Example

Request

curl -i -X GET http://balance-competition.tabletopgames.ai/api/query_run?id=13

Response

HTTP/1.1 200 OK
access-control-allow-origin: *
content-length: 25
content-type: application/json
Date: Thu, 17 Apr 2025 14:15:12 GMT
Connection: keep-alive
Keep-Alive: timeout=5

{"run_status":"complete"}

Retrive Results

Allows you to retrieve the result of a run, this represents how balanced the game was. The higher this score the better.

Request

  • URL: balance-competition.tabletopgames.ai/api/retrieve_result
  • Method: GET
  • Params: (all required)
    • id: Number - The ID of the run to retrieve
    • api_key String - A valid API key

Response

  • Status:
    • 200 OK: Request completed sucesfully
    • 400 Bad Request: There was an issue with one of the provided params
    • 404 Not Found: The run was not found, or the results are not yet ready
  • Body JSON
    • error: (400 / 404) String - Describes why the request couldn’t be completed
    • score: (200 Only) Number - The score of the run (how balanced the game was)

Example

Request

curl -i -X GET http://balance-competition.tabletopgames.ai/api/retrieve_result?id=13&api_key=7079cc2c-2ced-4031-ba9a-6eac68945c22

Response

HTTP/1.1 200 OK
access-control-allow-origin: *
content-length: 49
content-type: application/json
Date: Thu, 17 Apr 2025 14:24:58 GMT
Connection: keep-alive
Keep-Alive: timeout=5

{"score":85}        

Leaderboard

  • 1) Jeanarn's Jean the CAT - 3675 pts
  • 2) jxucoder's probe-w7-lo - 3652 pts
  • 3) jxucoder's probe-w7-hi - 3648 pts
  • 4) jxucoder's probe-ek-895 - 3642 pts
  • 5) jxucoder's probe-w7-revert - 3638 pts
  • 6) jxucoder's probe-cs-revert - 3636 pts
  • 7) jxucoder's sub-B-dom-w7div - 3628 pts
  • 8) jxucoder's sub-A-dominion - 3620 pts
  • 9) dienn1's hello - 3613 pts
  • 10) jxucoder's medium-direct-v7 - 3607 pts
  • 11) jxucoder's medium-direct-v6 - 3606 pts
  • 12) mnn31's rayquaza - 3580 pts
  • 13) jbargu's alpha - 3576 pts
  • 14) mnn31's dialga - 3575 pts
  • 15) mnn31's giratina - 3574 pts
  • 16) mnn31's jessie - 3573 pts
  • 17) mnn31's tick - 3568 pts
  • 18) mnn31's arceus - 3566 pts
  • 19) mnn31's thwackey - 3563 pts
  • 20) jxucoder's medium-direct-v5 - 3562 pts
  • 21) mnn31's smithy-kingdom-b - 3559 pts
  • 22) mnn31's penny-1 - 3558 pts
  • 23) mnn31's carl - 3556 pts
  • 24) jxucoder's medium-direct-v4 - 3553 pts
  • 25) mnn31's grookey - 3552 pts
  • 26) mnn31's rillaboom-final - 3552 pts
  • 27) mnn31's colette-1 - 3551 pts
  • 28) mnn31's rosa - 3550 pts
  • 29) mnn31's rico - 3549 pts
  • 30) mnn31's nani - 3549 pts
  • 31) mnn31's bull - 3548 pts
  • 32) mnn31's spike - 3546 pts
  • 33) mnn31's charlie - 3545 pts
  • 34) mnn31's shade - 3545 pts
  • 35) mnn31's mico - 3543 pts
  • 36) mnn31's max-27 - 3543 pts
  • 37) mnn31's shelly - 3543 pts
  • 38) mnn31's drizzile - 3542 pts
  • 39) mnn31's cinderace - 3541 pts
  • 40) mnn31's gus-2 - 3540 pts
  • 41) mnn31's barley - 3540 pts
  • 42) mnn31's max-20 - 3540 pts
  • 43) mnn31's crow - 3539 pts
  • 44) mnn31's emz - 3539 pts
  • 45) mnn31's bo - 3538 pts
  • 46) mnn31's codex-mean-v1 - 3538 pts
  • 47) mnn31's sobble - 3538 pts
  • 48) mnn31's stu - 3537 pts
  • 49) mnn31's edgar - 3536 pts
  • 50) mnn31's 8-bit - 3535 pts
  • 51) mnn31's max-24 - 3535 pts
  • 52) mnn31's rillaboom - 3534 pts
  • 53) mnn31's poco - 3534 pts
  • 54) mnn31's colt - 3534 pts
  • 55) mnn31's combined-a - 3533 pts
  • 56) mnn31's el-primo - 3532 pts
  • 57) mnn31's melodie - 3532 pts
  • 58) mnn31's belle-2 - 3532 pts
  • 59) mnn31's bonnie - 3531 pts
  • 60) mnn31's jacky - 3531 pts
  • 61) mnn31's darryl - 3531 pts
  • 62) mnn31's meg - 3531 pts
  • 63) mnn31's max-28 - 3531 pts
  • 64) mnn31's squeak - 3530 pts
  • 65) mnn31's max-22 - 3530 pts
  • 66) mnn31's penny-3 - 3529 pts
  • 67) mnn31's willow - 3529 pts
  • 68) mnn31's eternatus - 3528 pts
  • 69) mnn31's nita - 3528 pts
  • 70) mnn31's max-16 - 3526 pts
  • 71) mnn31's gene - 3526 pts
  • 72) nik3348's attempt-1 - 3526 pts
  • 73) mnn31's max-3 - 3526 pts
  • 74) mnn31's frank - 3525 pts
  • 75) mnn31's fullstack-final - 3524 pts
  • 76) mnn31's brock - 3524 pts
  • 77) mnn31's max-10 - 3524 pts
  • 78) mnn31's piper-3 - 3524 pts
  • 79) mnn31's bighand-15 - 3524 pts
  • 80) mnn31's max-30 - 3524 pts
  • 81) mnn31's bibi - 3523 pts
  • 82) mnn31's inteleon - 3523 pts
  • 83) mnn31's max-7 - 3522 pts
  • 84) mnn31's hank - 3522 pts
  • 85) mnn31's zamazenta - 3522 pts
  • 86) mnn31's leon - 3521 pts
  • 87) mnn31's bea - 3521 pts
  • 88) mnn31's penny-2 - 3520 pts
  • 89) mnn31's max-1 - 3520 pts
  • 90) mnn31's max-13 - 3520 pts
  • 91) mnn31's belle-1 - 3519 pts
  • 92) mnn31's gray - 3519 pts
  • 93) mnn31's colette-2 - 3519 pts
  • 94) mnn31's raboot - 3519 pts
  • 95) mnn31's max-14 - 3519 pts
  • 96) mnn31's gus-3 - 3518 pts
  • 97) mnn31's chester - 3518 pts
  • 98) mnn31's kit - 3517 pts
  • 99) mnn31's max-2 - 3517 pts
  • 100) mnn31's pearl - 3516 pts
  • 101) mnn31's sandy - 3515 pts
  • 102) mnn31's max-25 - 3514 pts
  • 103) mnn31's doug - 3514 pts
  • 104) mnn31's zacian - 3514 pts
  • 105) mnn31's gale-3 - 3514 pts
  • 106) jxucoder's medium-direct-v3 - 3514 pts
  • 107) mnn31's max-21 - 3514 pts
  • 108) mnn31's lily - 3513 pts
  • 109) mnn31's pam - 3513 pts
  • 110) mnn31's gale-2 - 3513 pts
  • 111) mnn31's angelo - 3512 pts
  • 112) mnn31's sprout - 3512 pts
  • 113) mnn31's max-5 - 3512 pts
  • 114) mnn31's piper-2 - 3511 pts
  • 115) mnn31's gus-1 - 3510 pts
  • 116) mnn31's max-19 - 3510 pts
  • 117) mnn31's tara - 3509 pts
  • 118) mnn31's clancy - 3509 pts
  • 119) mnn31's chuck - 3508 pts
  • 120) mnn31's juju - 3508 pts
  • 121) moneshss's combined - 3508 pts
  • 122) mnn31's grom - 3507 pts
  • 123) mnn31's max-8 - 3507 pts
  • 124) mnn31's mr-p - 3507 pts
  • 125) mnn31's colette-3 - 3507 pts
  • 126) moneshss's kitten climb - 3506 pts
  • 127) mnn31's max-17 - 3506 pts
  • 128) moneshss's cant stop - 3505 pts
  • 129) mnn31's draco - 3504 pts
  • 130) mnn31's berry - 3504 pts
  • 131) moneshss's kitten climb - 3504 pts
  • 132) mnn31's max-15 - 3504 pts
  • 133) mnn31's max-9 - 3504 pts
  • 134) moneshss's tacocat - 3503 pts
  • 135) mnn31's byron - 3502 pts
  • 136) mnn31's max-4 - 3502 pts
  • 137) mnn31's moe - 3501 pts
  • 138) mnn31's max-11 - 3501 pts
  • 139) mnn31's max-18 - 3500 pts
  • 140) jbargu's alpha - 3499 pts
  • 141) mnn31's max - 3499 pts
  • 142) moneshss's perturbation - 3499 pts
  • 143) mnn31's griff - 3499 pts
  • 144) mnn31's max-29 - 3499 pts
  • 145) mnn31's ek-dodge - 3498 pts
  • 146) mnn31's mortis - 3498 pts
  • 147) mnn31's amber - 3497 pts
  • 148) mnn31's max-23 - 3496 pts
  • 149) mnn31's max-12 - 3495 pts
  • 150) mnn31's bighand-15b - 3495 pts
  • 151) mnn31's kenji - 3494 pts
  • 152) jxucoder's medium-confirmed-v2 - 3493 pts
  • 153) mnn31's max-26 - 3491 pts
  • 154) jxucoder's confirmed-n7-v1 - 3490 pts
  • 155) mnn31's gale-1 - 3489 pts
  • 156) mnn31's piper-1 - 3486 pts
  • 157) mnn31's max-6 - 3486 pts
  • 158) moneshss's dominion - 3479 pts
  • 159) moneshss's 7wonders - 3477 pts
  • 160) moneshss's exploding kittens - 3471 pts
  • 161) martinballa's hill-climb - 3468 pts
  • 162) moneshss's random run - 3437 pts
  • 163) mnn31's surge - 3433 pts
  • 164) moneshss's 2nd run - 3424 pts
  • 165) TaeHwaP's first - 3405 pts
  • 166) TaeHwaP's test - 3405 pts
  • 167) TaeHwaP's test - 3399 pts
  • 168) TaeHwaP's v2 - 3371 pts