REST API
Every HTTP route the game server answers, with its request body and response.
All routes live under /pokemon-api and take a Authorization: Bearer <ID token> header: the same sign-in token the TapIn app already holds. Bodies are JSON. A failed call answers with an HTTP status and { "code": string, "message": string }; the codes are listed in Error codes.
This page is generated from the PokemonRestApi type in net/protocol.ts. Type names link to Data types.
Trainer
| Route | Body | Response |
|---|---|---|
GET /me | null | MeResponse |
POST /starter | { speciesId: number; nickname: string | null } | TrainerState |
PATCH /settings | Partial<TrainerSettings> | TrainerState |
Other trainers
| Route | Body | Response |
|---|---|---|
GET /trainers/:userId | null | TrainerSummary & { party: Array<{ uid?: string; speciesId: number; level: number; shiny: boolean; nickname: string | null }>; }; |
POST /trainers/batch | { userIds: string[] } | Record<string, TrainerSummary> |
POST /trainers/by-identity | { identities: string[] } | Record<string, TrainerSummary> |
Pokémon and items
| Route | Body | Response |
|---|---|---|
GET /pokedex | null | PokedexEntryState[] |
GET /box | null | OwnedPokemon[] |
POST /party | { uids: string[] } | TrainerState |
PATCH /pokemon/:uid | { nickname: string | null } | OwnedPokemon |
POST /pokemon/:uid/held-item | { item: ItemId | null } | TrainerState |
DELETE /pokemon/:uid | null | TrainerState |
POST /center/heal | null | TrainerState |
GET /mart | null | Array<{ item: ItemId; price: number }> |
POST /mart/buy | { item: ItemId; quantity: number } | TrainerState |
POST /items/use | { item: ItemId; uid: string; moveIndex: number | null } | TrainerState |
POST /pending/:id | { accept: boolean; replaceMoveIndex: number | null } | TrainerState |
Communities and leaderboards
| Route | Body | Response |
|---|---|---|
GET /leaderboard | null | LeaderboardEntry[] |
GET /communities/:handle/gym | null | GymView |
PATCH /communities/:handle/gym | { type: PokemonType } | GymView |
GET /communities/:handle/leaderboard | null | LeaderboardEntry[] |
Trades
| Route | Body | Response |
|---|---|---|
GET /trades | null | TradeView[] |
POST /trades | { toUserId: string; offerUid: string; requestUid: string | null } | TradeView |
POST /trades/:id | { action: "accept" | "decline" | "cancel"; offerUid: string | null } | TradeView |
Tournaments
| Route | Body | Response |
|---|---|---|
GET /tournaments/:handle | null | TournamentView | null |
TapIn Pokémon is an unofficial fan project. Pokémon and all related names and artwork are trademarks and © of Nintendo, Game Freak and Creatures. Legal