> I'm with Brad on this; the line between syntax and semantics is fuzzy

I don’t see the fuzz in this case: if you get a request as JSON, and you can parse out a valid JSON object, I would suggest that request is syntactically valid; if some of those keys are ones that app doesn’t recognise, and the app chooses to reject the request on that basis, the request is semantically invalid.