It works just like a standard form submission so it will validate the fields and if a field is required and a value wasn’t supplied it will return a validation error.
You can add a custom logging statement to check the $result
:
GFCommon::log_debug( __METHOD__ . '(): result => ' . print_r( $result, true ) );
For choice based fields you need to pass the value of the selected choice.
The multi select field is a little different, it expects an array containing the values of the selected choices.