When I started at Swiftype, I was surprised that our API allowed request bodies in GET requests. I didn’t realize you could do that. The HTTP RFC, however, says that a request body “might cause some existing implementations to reject the request”, so I figured it must be OK if our implementation didn’t. I even obliquely referred to the request body in a GET request in my article about implementing an HTTP server.
Evert Pot, in honor of his most popular Stack Overflow question revisited this question, 12 years later, and provides a wealth of detail about what this really means, and why you shouldn’t include request bodies in your GET requests.