You bring back bad memories. I've spent a lot of time working with the MV API.
First make sure you are running V4 firmware. Lots of bug fixes in this area.
Frequently the image is not available shortly after the request is generated. So what I do is use a loop and try and request the image 30 or so times. I use node.js. I use up to a 30s delay between attempts, with a little bit of random backoff. Something like:
The first generation supports the alerts. Evidence seems to be indicating that the "access denied" page is only when I am trying to access a ImageURL from my MV71 alert, as opposed to my MV12. Maybe because dashboard doesn't offer "Motion Recap image"s for the 71? Seems a bit strange that I am even getting a URL, that does seem to be tied to an image file. But what can you do.