I am seeing errors with optouts and unsubscribes similar to this. It is inconsistent - some requests succeed but some fail with "There was an error in your request" as described there. The query string on the optout or unsubscribe looks like: "jid=3292&qid=1930772&h=b600fd5ef64ce4b4". Doing a DB query I can find the matching 'id' and 'job_id' in the civicrm_mailing_event_queue table, but the hash does not match, so the attempt to verify the parameters produces the error. So it seems as though in these cases the hash value is either corrupted in transit or is overwritten in the database. I'd be interested to know if anyone else can validate that behavior. Thanks. This is on CiviCRM 5.43.0 and Wordpress 5.8.2, with flexmailer and mosaico enabled.
Edit: just to be clear, the returned hash value does not exist anywhere in the civicrm_mailing_event_queue table so I don't know how it is being generated.