If this lib would only run on MRI >= 2, I would have suggested to go for named parameters, but as you still support 1.9.3 and also other Rubies, I would say:

* Keep the required parameters as they are, as for me those help in using APIs. Unless you want to add validation for each required parameter.
* Make the optional ones an option hash.