API overhaul

Is the `reportError` callback tested anywhere? My current read of the implementation tells me that it still tries to submit action data even if there was a param error.