Challonge API Docs
  1. Challonge Connect
Challonge API Docs
  • Guides
    • Welcome
    • Changelog
    • Upgrading
      • Upgrading from v2.0 to v2.1
    • Sample Use Cases
      • Running a Two-Stage Tournament
    • Challonge Connect
      • About
      • Game Integration (beta)
      • Connect Request Signing
  • API v2.1
    • Getting Started
    • Authorization
    • Error Responses
    • Resource Scoping
    • OAuth
      • Scopes
      • Grant Request
      • Token Request
      • Refresh Token Request
      • Device Grant Authorization Request
      • Device Grant Access Token Request
    • Tournament API
      • Tournaments
        • Tournament States
        • List Tournaments
        • Create Tournament
        • Get Tournament
        • Update Tournament
        • Delete Tournament
        • Change Tournament State
      • Participants
        • List Participants
        • Create Participant
        • Get Participant
        • Update Participant
        • Delete Participant
        • Bulk Create Participants
        • Clear All Participants
        • Randomize Participants
        • Register Me
      • Matches
        • List Matches
        • Get Match
        • Update Match
        • Change Match State
      • Match Attachments
        • List Match Attachments
        • Create Match Attachment
        • Delete Match Attachment
    • Race API
      • Races
        • List Races
        • Create Race
        • Get Race
        • Update Race
        • Delete Race
        • Change Race State
      • Rounds
        • List Rounds
        • Get Round
        • Update Round
      • Elapsed Times
        • List Elapsed Times
        • Get Elapsed Time
        • Update Elapsed Time
        • Bulk Update Elapsed Times
    • Get User
      GET
    • List Communities
      GET
    • Schemas
      • MatchAttachmentModel
      • MatchAttachmentInput
      • MatchAttachmentOutput
      • MatchAttachment
      • ParticipantModel
      • ParticipantOutput
      • ParticipantInput
      • ParticipantBulkInput
      • Participant
      • TournamentModel
      • TournamentInput
      • Tournament
      • TournamentStateInput
      • CommunityModel
      • Community
      • MatchModel
      • MatchInput
      • MatchOutput
      • Match
      • MatchStateInput
      • ErrorModel
      • UserModel
      • User
      • ElapsedTimeBulkInput
      • ElapsedTimeWithID
      • ElapsedTimeOutput
      • ElaspedTimeInput
      • Timestamps
      • RelationshipLink
      • RoundOutput
      • RoundStateInput
      • RacingOutput
      • RacingInput
      • RacingStateInput
  • Bracket JSAPI v1.0
    • Getting Started
    • Broadcasted Events
    • API Actions
      • scrollToCoordinates
      • scrollToMatchIdentifier
      • setZoomScale
      • zoomToCoordinate
      • zoomToMatchIdentifier
      • loadTheme
      • filterRounds
      • loadIntegrationData
      • setBracketSettings
  • API v2.0 (deprecated)
    • About
    • Deprecated Endpoints
      • Tournament
        • findTournaments
        • createTournament
        • showTournament
        • updateTournament
        • deleteTournament
        • changeStateTournament
      • Match
        • findMatches
        • showMatch
        • updateMatch
        • changeStateTournament
      • Participant
        • findParticipants
        • createParticipant
        • showParticipant
        • updateParticipant
        • deleteParticipant
        • bulkCreateParticipant
        • clearAllParticipants
        • randomizeParticipants
      • Match Attachment
        • findMatchAttachments
        • createMatchAttachments
        • deleteMatchAttachment
      • Race
        • findRaces
        • createRace
        • showRace
        • updateRace
        • deleteRace
        • changeStateRace
      • Round
        • findRounds
        • showRound
        • updateRound
      • Elapsed Time
        • findElapsedTime
        • showElapsedTime
        • updateElapsedTime
        • bulkUpdateElapsedTime
      • User
        • findUser
        • findCommunities
    • Schemas
      • MatchAttachmentModel
      • MatchAttachmentInput
      • MatchAttachmentOutput
      • MatchAttachment
      • ParticipantModel
      • ParticipantOutput
      • ParticipantInput
      • ParticipantBulkInput
      • Participant
      • TournamentModel
      • TournamentInput
      • Tournament
      • TournamentStateInput
      • CommunityModel
      • Community
      • MatchModel
      • MatchInput
      • MatchOutput
      • Match
      • MatchStateInput
      • ErrorModel
      • UserModel
      • User
      • ElapsedTimeBulkInput
      • ElapsedTimeWithID
      • ElapsedTimeOutput
      • ElaspedTimeInput
      • Timestamps
      • RelationshipLink
      • RoundOutput
      • RoundStateInput
      • RacingOutput
      • RacingInput
      • RacingStateInput
  • API v1 (deprecated)
    • About
    • Deprecated Endpoints
      • Tournaments
        • List tournaments
        • Create a tournament
        • Get a tournament
        • Update a tournament
        • Delete a tournament
        • Process check-in results for a tournament
        • Abort check-in for a tournament
        • Start a tournament
        • Finalize a tournament
        • Reset a tournament
        • Open for predictions
      • Participants
        • List a tournament's participants
        • Create a participant
        • Bulk create participants
        • Get a participant
        • Update a participant
        • Check in a participant
        • Undo check-in for a participant
        • Delete/deactivate a participant
        • Clear/delete all participants
        • Randomize a tournament's participants
      • Matches
        • List a tournament's matches
        • Get a match
        • Update a match
        • Reopen a match
        • Mark a match as underway
        • Unmark a match as underway
      • Match Attachments
        • List a match's attachments
        • Create a match attachment
        • Get a match attachment
        • Update a match attachment
        • Delete a match attachment
  1. Challonge Connect

Connect Request Signing

For games and mobile apps, we offer an additional layer of protection to prevent fake score reporting and other attack vectors that impact distributed client-side applications.
⚠️ This feature is currently in closed beta and only available for API v2, but please reach out to us if you’re interested in trying it out.
To sign your POST & PUT match requests and protect your app from forgeries, follow the steps below. This is especially critical if you’re reporting match scores from client-side applications.
1.
Obtain a validation secret for your app. This can be found in our Developer Portal at https://connect.challonge.com.
2.
If you’re using the Challonge Connect Unity Asset, plug your validation secret into your configuration and you’re done! If not, you have a little more work to do — continue on to step 3.
3.
Generate a checksum for your request. To do this, you’ll need to hash your request body using SHA-256. This is typically a 1-liner in most languages and will look similar to the Ruby code below. Make sure the request body you’re hashing is exactly what you end up sending, including any line feeds (\n) and carriage returns (\r).
4.
Encode a JSON Web Token (JWT). https://jwt.io/ has a handy debugger that you can use to test the encoding and decoding of your signatures.
For generating the JWT, here’s what you’ll need:
Signing algorithm: HS256
HMAC secret: Your “validation secret” from step #1
The checksum from step #3
The format of your JWT’s payload should be as follows:
{
    "data": {
        "checksum": "ff72e46fbadb325f3127b4d465d144d89b42cead8c0718d050f87bb6182f0336"
    }
}
Similar to generating the checksum, encoding a JWT is typically painless. Most languages have libraries that make this simple. Here’s an example in Ruby to illustrate:
JWTs offer additional protections that we can enable for your app. We’ll document them here as we add UI support for enabling them, but in the meantime, don’t hesitate to reach out.
5.
Add your JWT to your request as a “Signature” header.
6.
Test. When you provide a “Signature” header, Challonge will validate it, whether or not you’ve configured your app to require request signing. If you have an app that’s live in production, we strongly recommend creating a development/test app for testing your implementation first.
If a signature you send doesn’t validate, you’ll get the following 401 response:
{
  "errors": {
    "detail": "Signature is invalid",
    "status": "401"
  }
}
7.
Once you’re ready to require this protection and sleep better at night, you can do so by toggling this option from the Challonge Developer Portal @ https://connect.challonge.com.
Modified at 2025-11-03 21:08:11
Previous
Game Integration (beta)
Next
Getting Started
Built with