/AgarProtocol

The Latest Agario Protocol Decoded

Primary LanguageJavaScript

Agar.io Protocol v13

Types

  • Unsigned Char (uint8)
  • Unsigned Short (uint16)
  • Unsigned Int (uint32)
  • Signed Char (int8)
  • Signed Short (int16)
  • Signed Int (int32)
  • Float (float32)
  • Double (float64)
  • Null Terminated UTF8 String (null_utf8)

Client -> Server

Spawn (0x00)

Data Type Value Description
uint8 0x00 Opcode
null_utf8 ... Player Name

Spectate (0x01)

Data Type Value Description
uint8 0x01 Opcode

Set Target (0x10)

Data Type Value Description
uint8 0x10 Opcode
int32 ... Target X
int32 ... Target Y
int32 0 or DKS Part Of Integrity Checks

Split (0x11)

Data Type Value Description
uint8 0x11 Opcode

Eject Mass (0x15)

Data Type Value Description
uint8 0x15 Opcode

Captcha Response (0x56)

Data Type Value Description
uint8 0x56 Opcode
null_utf8 ... Generated Access Token

Login Token (0x66)

Data Type Value Description
uint8 0x66 Opcode
... ... Generated Access Token

Auth Response (0x71)

Data Type Value Description
uint8 0x71 Opcode
... ... Generated Auth Response

Response to Ping (0xe3)

Data Type Value Description
uint8 0xe3 Opcode
... ... Ping Data

Establish Connection (0xfe)

Data Type Value Description
uint8 0xfe Opcode
uint32 ... Protocol Version (0x0d)

EKS/DKS (0xff)

Data Type Value Description
uint8 0xff Opcode
int32 0 EKS/DKS

Server -> Client

World Update (0x10)

Data Type Value Description
uint8 0x10 Opcode
uint16 0 Eat Record Length
... ... Eat Record
... ... Update Record (read untill cell id == 0)
uint16 0 Remove Record Length
... ... Remove Record

Eat Record

Data Type Value Description
uint32 0 Eater ID
uint32 0 Victim ID

Remove Record

Data Type Value Description
uint32 0 Removing Cell ID

Update Cell Record

Data Type Value Description
uint32 ... Cell ID
int32 ... Cell X
int32 ... Cell Y
uint16 ... Cell Radius
uint8 ... Cell Flags
uint8 ... Cell Flags 2 (read if flags & 0x80)
uint8 0 Cell Color (RED) (read if flags & 0x02)
uint8 0 Cell Color (GREEN) (read if flags & 0x02)
uint8 0 Cell Color (BLUE) (read if flags & 0x02)
null_utf8 ... Cell Skin (read if flags & 0x04)
null_utf8 ... Cell Name (read if flags & 0x08)
null_utf8 ... Cell Account (read if flags_2 & 0x04)
Flags
Mask Description
0x01 Virus
0x02 Has Color
0x04 Has Skin
0x08 Has Name
0x10 Agitated
0x20 Ejected Mass
0x80 Read Next Byte as flags
Flags (for flags_2)
Mask Description
0x01 Food
0x02 Is Friend
0x04 Has Account Name

Spectator Position Update (0x11)

Data Type Value Description
uint8 0x11 Opcode
float32 ... X coordinate
float32 ... Y coordinate
float32 ... Zoom Factor

Reset (0x12)

Data Type Value Description
uint8 0x12 Opcode

Add Cell To Owned Cells (0x20)

Data Type Value Description
uint8 0x20 Opcode
uint32 ... Cell ID

Leaderboard List (0x33||0x34)

Data Type Value Description
uint8 0x33 or 0x34 Opcode
uint16 ... Friend Count (read if op == 0x34)
... ... LB Record

LB Record

Mask Description
0x01 place
0x02 player name
0x04 player account id
0x08 its meh
0x10 its friend
Data Type Value Description
uint8 ... Flags
uint16 ... (Read if flags & 0x01) Player Place
null_utf8 ... (Read if flags & 0x02) Player Name
null_utf8 ... (Read if flags & 0x04) Player Account

Leaderboard RGB (0x32)

Data Type Value Description
uint8 0x32 Opcode
uint32 ... Length
float32 ... Red
float32 ... Green
float32 ... Blue

Initial Border and Dynamic Border (0x40)

Data Type Value Description
uint8 0x40 Opcode
float64 ... minx
float64 ... miny
float64 ... maxx
float64 ... maxy
uint32 ... Gamemode
null_utf8 ... Server Name

Captcha Request (0x55)

Data Type Value Description
uint8 0x55 Opcode

Shop Info (0x66)

Data Type Value Description
uint8 0x66 Opcode
... ... Info about Shop

Logged In (0x67)

Data Type Value Description
uint8 0x67 Opcode

Log Out (0x68)

Data Type Value Description
uint8 0x68 Opcode

Player Banned (0x69)

Data Type Value Description
uint8 0x69 Opcode
null_utf8 ... Account Name/IP

Auth (0x70)

Data Type Value Description
uint8 0x70 Opcode
null_utf8 ... Random String

Outdated Client (request to update agario.core.js) (0x80)

Data Type Value Description
uint8 0x80 Opcode

Show Arrow (0xa0)

Data Type Value Description
uint8 0xa0 Opcode
int16 ... x
int16 ... y
null_str8 ... (optional) (sent only once) player name

Remove Arrow (0xa1)

Data Type Value Description
uint8 0xa1 Opcode

Ping (0xe2)

Data Type Value Description
uint8 0xe2 Opcode
... ... Random Data

DKS2 (0xf1)

Data Type Value Description
uint8 0xf1 Opcode
int32 DKS2 DKS2

Compressed (0xff)

Data Type Value Description
uint8 0xff Opcode
uint32 ... Decompressed Length
... ... Sub-Packet