When there are so many routes overlapping each other, it is hard to tell which value is mapped to which parameter
Restler 3 tries to match parameters by type, since height, weight, eyes_color, hair_color are typed as integer so they should not interfere when a string value is given, so avatar can pick it up as the first in line
But since you messed the type by assigning string parameters to height, weight etc. They are now considered as strings by Restler and thus ends up with the above problem
Try assigning zero as the default for int values.