Request Message
REQUEST.active- Information about active PokémonREQUEST.side- Information about your teamREQUEST.rqid- Optional request ID (only when using server, not direct simulator)
Example Request Object
Request Structure
Active Pokémon Data
REQUEST.active is an array (one element per active slot) containing:
Move Information
move- Display nameid- Internal identifierpp- Current PPmaxpp- Maximum PPtarget- Target type (normal,self,allySide, etc.)disabled- Whether the move is currently disabled
Side Data
REQUEST.side contains:
name- Player nameid- Player ID (p1,p2, etc.)pokemon- Array of all team Pokémon
Pokémon Object
ident- Pokémon identifierdetails- Species, level, gender (see Battle Protocol)condition- Current HP and status (227/227or150/227 par)active- Whether currently on the fieldstats- Current stat valuesmoves- Array of move IDsbaseAbility- Original abilityability- Current abilityitem- Held itempokeball- Pokéball type
Sending Decisions
Using the Client
Using the Simulator API
With Request ID
When using a Pokémon Showdown server, append the request ID:Choice Syntax
Team Preview
TEAMSPEC is a list of Pokémon slot numbers.
Examples:
team 213456- Swap first two Pokémonteam 5231- Select first 4 Pokémon in custom order (VGC)team 2, 1, 3, 4, 5, 6, 7, 8, 9, 10- With 10+ Pokémon, use commas
Auto-Choose
This is what happens in VGC when you run out of Move Time.
Undo
Singles Decisions
In Singles, send a singlePOKEMONCHOICE:
Move
Move with Mega Evolution
Move with Z-Move
Move with Dynamax
Switch
Skip (in Doubles/Triples)
Doubles/Triples Decisions
Delimit decisions with,:
- First Pokémon: Mega Evolve and use Thunderbolt at opponent slot 1
- Second Pokémon: Use Helping Hand on ally slot 1
Move Specification
MOVESPEC Format
MOVESLOTSPEC
Either:- Move name (case/space insensitive):
Thunderbolt,thunderbolt,Thunder Bolt - 1-based slot number:
1,2,3,4
TARGETSPEC (Doubles/Triples Only)
1-based slot number with prefix:+N- Opponent slot (e.g.,+1,+2)-N- Ally slot (e.g.,-1,-2)
Slot Layout
Triples:In Singles, target specification is unnecessary (never choose target).
Examples
Switch Specification
SWITCHSPEC Format
Either:- Pokémon nickname or species name
- 1-based slot number
Examples
Complete Examples
Singles
Doubles
Team Preview
Error Handling
Invalid Choice
This occurs for invalid syntax or impossible choices.
Unavailable Choice
Common Errors
Decision Flow
Special Cases
Forced Switches
When a Pokémon faints, you’ll receive a request withREQUEST.forceSwitch:
Wait State
If your decision depends on opponent’s choice (e.g., Pursuit), you may need to wait. The request will indicate this.Mega Evolution Eligibility
The request includescanMegaEvo if Mega Evolution is available:
Z-Move Eligibility
The request includescanZMove array indicating which moves can become Z-Moves:
Dynamax Eligibility
The request includescanDynamax if Dynamax is available:
Debugging Tips
The official client logs all decisions in the JavaScript console (F12). This helps you see the exact syntax being used.
Common Issues
- Wrong slot numbers: Remember slots are 1-based, not 0-based
- Missing target: In Doubles/Triples, many moves require explicit targets
- Invalid RQID: Make sure you’re using the current
rqid, not an old one - Case sensitivity: Move names are case-insensitive, but IDs must match exactly
Next Steps
Battle Protocol
Learn about battle messages and game state updates
Team Format
Understand how teams are encoded for battles
