Skip to main content
The Parry.gg integration allows you to fetch tournament entrants and match sets from Parry.gg tournaments using gRPC.

Authentication

All Parry.gg endpoints require an API token to be configured in your boofstream config:
{
  "startgg": {
    "token": "your-parrygg-api-token"
  }
}
The API token is read from the startgg.token config field for backward compatibility.

GET /parrygg/init

Fetches tournament information and entrant data from a Parry.gg tournament.
url
string
required
The full Parry.gg tournament URL (e.g., https://parry.gg/genesis-9/melee-singles/main/bracket)

URL Format

The URL must follow the Parry.gg format:
https://parry.gg/{tournament-slug}/{event-slug}/{phase-slug}/{bracket-slug}

Response

Returns an object containing tournament players and their information:
{
  "players": [
    {
      "entrantId": "entrant-uuid",
      "player": {
        "sponsor": "",
        "name": "Mango",
        "pronouns": "he/him",
        "twitter": "",
        "score": 0,
        "losers": false,
        "country": "us",
        "state": "CA",
        "seed": 2
      }
    }
  ]
}

Example Request

curl "http://localhost:1337/parrygg/init?url=https://parry.gg/genesis-9/melee-singles/main/bracket"

Notes

  • Parry.gg does not provide sponsor tags or Twitter handles (returned as empty strings)
  • Only includes entrants with exactly one user (skips team entries)
  • Country codes are automatically converted to lowercase

GET /parrygg/sets

Fetches all match sets from a Parry.gg tournament bracket.
url
string
required
The full Parry.gg tournament URL (e.g., https://parry.gg/genesis-9/melee-singles/main/bracket)

Response

Returns an array of match sets:
[
  {
    "id": "match-uuid",
    "player1Id": "entrant-uuid-1",
    "player2Id": "entrant-uuid-2",
    "round": "Winners Round 1",
    "phase": "Bracket",
    "completed": false
  }
]

Example Request

curl "http://localhost:1337/parrygg/sets?url=https://parry.gg/genesis-9/melee-singles/main/bracket"

Notes

  • Only returns matches where both player slots are filled
  • Round names are automatically generated based on bracket position
  • The completed field checks if match state is MATCH_STATE_COMPLETED
  • Player IDs correspond to the entrantId values returned by /parrygg/init
  • Phase is always returned as “Bracket”

Error Handling

If the API token is invalid or missing, requests will fail with gRPC errors. Common errors:
  • Unauthenticated: Invalid or missing API token
  • Not Found: Tournament URL does not exist or bracket not found
  • Invalid Argument: Malformed tournament URL

Build docs developers (and LLMs) love