GET requests don't have a request body, so all parameters must appear in the URL or in a header. ... Though it doesn't modify server state, its parameters are sometimes too long to fit in the URL or an HTTP header.
Can we have get API with request body?
Yes, you can send a request body with GET but it should not have any meaning.
Which HTTP request can have body?
HTTP request bodies are theoretically allowed for all methods except TRACE, however they are not commonly used except in PUT, POST and PATCH. Because of this, they may not be supported properly by some client frameworks, and you should not allow request bodies for GET, DELETE, TRACE, OPTIONS and HEAD methods.