Am I right in thinking that the server only allows one match to be included on each API request? And that all subsequent iterations on that request would get a 500 error?
Yes, you would be right in that there is only 1 match per API request.
When you get a 500 error, you need to be checking the error text that gets returned to let you know why. In this case, the error text would be:
"Error: Match is currently being updated - please wait 60 seconds and try again"
Make sure you are exposing what the server returns to let you know the reasons.