Error codes
Every error code the server can return, its HTTP status and what it means.
REST calls fail with an HTTP status and a JSON body { "code", "message" }. Over the WebSocket the same failure arrives as { "t": "error", "code", "message" } and the socket stays open. The message is written for players and safe to show as a toast; branch on code.
This list is generated from the game server's source. A status of WS means the code is only sent over the WebSocket.
| Code | Status | Example message |
|---|---|---|
internal | WS | Something went wrong |
rate-limited | WS | Slow down |
bad-request | 400 | speciesId must be 1-151 or null / toUserId is required / offerUid is required |
battle-only-item | 400 | That item can only be used in battle |
challenge-not-found | 400 | Challenge not found or expired |
host-entry | 400 | The host can't enter their own tournament |
illegal-action | 400 | Illegal action |
invalid-handle | 400 | Invalid community handle |
invalid-json | 400 | Body must be valid JSON / Body must be a JSON object |
invalid-legendary | 400 | Only Articuno, Zapdos, Moltres, Mewtwo or Mew |
invalid-team | 400 | The champion has no team left |
invalid-type | 400 | Unknown Pokémon type |
no-effect | 400 | It won't have any effect. |
not-a-trainer | 400 | That user is not a Pokémon trainer yet |
not-dismissable | 400 | Only wild encounters can be dismissed |
not-entered | 400 | You are not entered |
not-for-sale | 400 | That item is not sold here |
own-gym | 400 | You are this gym's leader |
replace-index-required | 400 | Choose a move to forget |
self-challenge | 400 | You can't challenge yourself |
self-trade | 400 | You can't trade with yourself |
unauthorized | 401 | Gigaverse rejected the token |
insufficient-funds | 402 | You don't have enough money |
debug-disabled | 403 | Debug encounters are disabled |
host-unverifiable | 403 | Could not verify that you host this live |
not-host | 403 | Only the live host can do that / Only the host can do that |
not-in-battle | 403 | You are not in this battle |
not-live-host | 403 | Open your live page to start a legendary event |
not-owner | 403 | You can only offer your own Pokémon / You can only give your own Pokémon / Only the community owner can change the gym |
not-receiver | 403 | Only the receiver can decline / Only the receiver can accept |
not-sender | 403 | Only the sender can cancel |
battle-not-found | 404 | Battle not found |
community-not-found | 404 | Community not found |
not-found | 404 | Unknown endpoint |
pending-not-found | 404 | Decision not found |
pokemon-not-found | 404 | Requested Pokémon not found / Pokémon not found |
tournament-not-found | 404 | Tournament not found |
trade-not-found | 404 | Trade not found |
trainer-not-found | 404 | That trainer does not exist / Trainer not found |
method-not-allowed | 405 | Method not allowed |
already-started | 409 | The tournament has already started |
busy | 409 | You are already in a battle / The champion is busy in another battle |
challenge-pending | 409 | You already have a pending challenge |
evolution-invalid | 409 | This Pokémon can no longer evolve that way |
final-running | 409 | The final is already running |
in-battle | 409 | Trades are not possible during a battle / Not possible during a battle |
last-party-member | 409 | You can't release your last party Pokémon |
last-pokemon | 409 | You can't trade away your last Pokémon |
needs-starter | 409 | Choose a starter Pokémon first |
no-final | 409 | There is no final to start |
no-item | 409 | You don't have that item |
no-stage-request | 409 | No stage request is pending |
no-usable-pokemon | 409 | Your Pokémon need healing first |
not-enough-entrants | 409 | At least 2 trainers must enter |
not-your-turn | 409 | No action needed right now |
offline | 409 | That trainer is offline |
registration-closed | 409 | Registration is closed / You can only leave during registration |
stale-turn | 409 | |
starter-taken | 409 | You already have a starter |
tournament-active | 409 | A tournament is already running here |
tournament-full | 409 | The tournament is full |
tournament-over | 409 | The tournament is over |
trade-closed | 409 | |
payload-too-large | 413 | Request body too large |
backend-error | 502 | Unexpected Gigaverse account payload / Unexpected Gigaverse community payload |
backend-unavailable | 502 | Gigaverse backend is unavailable |
jwks-unavailable | 503 |
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