JSON over HTTP
The parry.gg API can be called directly over HTTP with JSON bodies — no client library or Protocol Buffer tooling required. This is useful for shell scripts, quick experiments, or languages without a generated client.
This is not a REST API. Every call is a POST, the URL encodes the service and method name, and the request/response bodies are JSON representations of the underlying protobuf messages.
URL structure
https://grpcweb.parry.gg/parrygg.services.{Service}/{Method}
{Service}is the gRPC service name (e.g.UserService,GameService,TournamentService).{Method}is the method name on that service (e.g.UpdateUser,GetGames).- Every method is
POST, regardless of whether it reads or writes data.GetGamesis still aPOST.
Request format
| Header | Value |
|---|---|
Content-Type | application/json |
X-API-KEY | Your API key (how to get one) |
The JSON body mirrors the request message defined in the API reference, with field names converted to lowerCamelCase. For example, the proto field bio_md becomes bioMd in JSON.
Examples
GetGames
No request body is required:
curl -sS -X POST https://grpcweb.parry.gg/parrygg.services.GameService/GetGames \
-H 'Content-Type: application/json' \
-H 'X-API-KEY: YOUR_API_KEY'
UpdateUser
Nested messages are passed as nested JSON objects. Note bioMd (camelCase) for the proto field bio_md:
curl -sS -X POST https://grpcweb.parry.gg/parrygg.services.UserService/UpdateUser \
-H 'Content-Type: application/json' \
-H 'X-API-KEY: YOUR_API_KEY' \
-d '{"id":"USER_UUID","user":{"bioMd":"new user bio"}}'
Finding services and methods
The API reference is the source of truth for available services, methods, and field names. The proto service name (e.g. UserService) and method name (e.g. UpdateUser) map directly into the URL path; proto field names (snake_case) map to lowerCamelCase JSON keys.
Caveats
- No query strings or path parameters — all input goes in the JSON body.
- No REST-style status codes beyond
200for success and non-200for failure. Errors are returned as JSON with a message describing the problem. - Streaming RPCs are not supported over this proxy. Only unary (single request, single response) methods.