HTTP has a new method: QUERY. Tl;dr: GET with a body.

https://www.ietf.org/archive/id/draft-ietf-httpbis-safe-method-w-body-14.html

(Doesn’t have an RFC number yet but has been approved, will get one in a few weeks.)

#ietf

The HTTP QUERY Method

This specification defines the QUERY method for HTTP. A QUERY requests that the request target process the enclosed content in a safe and idempotent manner and then respond with the result of that processing. This is similar to POST requests but can be automatically repeated or restarted without concern for partial state changes.

@timbray *Technically* there's no spec reason that GET can't have a body as it is (as far as I remember), but when I tried it with something a lot of stuff became unhappy.
@eythian @timbray I've even seen DELETE with a body in the Matrix spec
Client-Server API

The client-server API allows clients to send messages, control rooms and synchronise conversation history. It is designed to support both lightweight clients which store no state and lazy-load data from the server as required - as well as heavyweight clients which maintain a full local persistent copy of server state. API Standards These standards only apply to the APIs defined in the Matrix specification. APIs used by this specification but defined in other specifications, like the OAuth 2.0 API, use their own rules.

Matrix Specification