My bot got several these errors today and I'm able to reproduce it via ApiSandbox (don't forget the token before submitting). The usual response looks like this (submit with token). The only place this exception can come from seems to be:
// repo/includes/ChangeOp/ChangeOpSiteLink.php if ( !is_string( $pageName ) && $pageName !== null ) { throw new InvalidArgumentException( '$linkPage needs to be a string or null' ); }